这是一种奇怪的情况。让我尽可能地解释一下。
我有一个接口Client
,其中包含抛出自定义异常的方法。
我的EJB3 Remote扩展了这个接口Client
,并注释了@Remote
。
我的EJB3 Bean用于扩展Remote,并带有注释@Stateless
。
现在出现了怪异。由于一个非常具体的问题,我无法在我的应用服务器上部署任何EJB3 jar。 (问题不在于我如何解决此部署问题。)
现在我必须将代码从EJB3降级到EJB2。
由于我的远程接口中的所有方法都必须抛出RemoteException
(EJB2规范),因此我无法再从Client
接口扩展。
我剩下的选项是创建一个EJB2Wrapper,它可以从Client
接口和我调用的每个方法扩展到远程接口。
这为每个方法创建了丑陋的try catch块,因为我必须捕获RemoteException
。
有更好的方法吗?
答案 0 :(得分:2)
我会说如果你的bean中的功能以POJO的形式开始,你就不会遇到这么大的问题。如果你有这个,你可以简单地部署为EJB3,EJB2,servlet,web服务或任何你想要的东西。
也许最好的解决方案是将EJB3中的商品作为POJO提取,并将部署选择推迟到最后。我希望这个解决方案适用于EJB2Wrapper
。你已经做了一些工作;即使您决定在未来使用REST Web服务而不是EJB,也最好投资一些有价值的东西。
答案 1 :(得分:1)
回答我自己的问题以关闭循环。
目前没有更好的方法可以做到这一点。