当前位置:  开发笔记 > 编程语言 > 正文

如何将EJB作为Web服务公开,以后稍后让我在ejb更改时保持客户端兼容性?

如何解决《如何将EJB作为Web服务公开,以后稍后让我在ejb更改时保持客户端兼容性?》经验,为你挑选了1个好方法。

很多框架让我将ejb作为web服务公开.

但是在发布初始服务后2个月,我需要更改ejb或其界面的任何部分.我仍然有需要访问旧界面的客户端,所以我显然需要有2个具有不同签名的web服务.

任何人都对我如何做到这一点有任何建议,最好让框架完成创建包装和复制逻辑的繁琐工作(除非有更聪明的方法).

我可以在此基础上选择webservice框架,欢迎提出建议.

编辑:我知道我的更改将破坏兼容性,我完全意识到我将需要同时具有不同命名空间的两个服务.但是我怎么能以简单的方式做到这一点呢?



1> Kariem..:

我不认为,你需要任何额外的框架来做到这一点.Java EE允许您直接将EJB公开为Web服务(从EJB 2.1开始 ;参见J2EE 1.4的示例),但使用EE 5它甚至更简单:

@WebService
@SOAPBinding(style = Style.RPC)
public interface ILegacyService extends IOtherLegacyService {
    // the interface methods
    ...
}

@Stateless
@Local(ILegacyService.class)
@WebService(endpointInterface = "...ILegacyService", ...)
public class LegacyServiceImpl implements ILegacyService {
    // implementation of ILegacyService
}

根据您的应用程序服务器,您应该能够ILegacyService在任何适合的位置提供.正如jezell所说,您应该尝试将不会将合同直接更改的更改直接放入此界面.如果您有其他更改,您可能只是提供另一个具有不同接口的实现.通用逻辑可以被提升到一个超类中LegacyServiceImpl.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有