很多框架让我将ejb作为web服务公开.
但是在发布初始服务后2个月,我需要更改ejb或其界面的任何部分.我仍然有需要访问旧界面的客户端,所以我显然需要有2个具有不同签名的web服务.
任何人都对我如何做到这一点有任何建议,最好让框架完成创建包装和复制逻辑的繁琐工作(除非有更聪明的方法).
我可以在此基础上选择webservice框架,欢迎提出建议.
编辑:我知道我的更改将破坏兼容性,我完全意识到我将需要同时具有不同命名空间的两个服务.但是我怎么能以简单的方式做到这一点呢?
我不认为,你需要任何额外的框架来做到这一点.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
.