这是一个奇怪的情况。让我尽我所能解释。
我有一个接口Client
,其中包含引发自定义异常的方法。
我的EJB3 Remote扩展了该接口Client
,并带有@Remote
注释。
我的EJB3 Bean用于扩展Remote,并带有@Stateless
注释。
现在来了怪异。由于一个非常具体的问题,我无法在我的应用服务器上部署任何EJB3 jar。 (问题不是我如何解决此部署问题。)
现在,我必须将代码从EJB3降级到EJB2。
由于远程接口中的所有方法都必须抛出RemoteException
(EJB2 Spec),所以我不能再从Client
接口进行扩展。
我剩下的选项是创建一个EJB2Wrapper,它可以从Client
接口扩展,并且在我调用的每个方法中都可以进入Remote Interface。
这将为每种方法创建难看的try catch块,因为我必须捕获RemoteException
。
有一个更好的方法吗?
最佳答案
我想说,如果您的bean中的功能以POJO的形式出现,那么您将不会遇到太大的问题。如果有的话,您可以简单地部署为EJB3,EJB2,servlet,Web服务或任何其他想要的东西。
也许最好的解决方案是将EJB3中的产品作为POJO提取,并将部署选择推迟到最后。我希望此解决方案优于EJB2Wrapper
。您已经必须做一些工作。即使您将来决定使用REST Web服务而不是EJB,最好还是投资具有价值的东西。