如何配置一个EJB本地和远程的WebSphere
-
26-09-2019 - |
题
我有一个无状态EJB的SessionBean与bith @local和@Remote注释。该代码是在WebLogic Server中正常工作。然而在其上部署到WebSphere它给出以下例外。
bm.ejs.container.EJBConfigurationException:BUSINESS_INTERFACE_DESIGNATED_AS_BOTH_REMOTE_AND_LOCAL: 'oracle.odc.session.ODCSession'
在oracle.odc.session.ODCSession业务接口类不能是远程和本地
有任何解决方法可用,使其工作,而无需编写单独的EJB远程和本地调用?
解决方案
一个解决方法是具有基部接口与方法声明&然后有一个本地接口和远程inteface,其延伸的基本接口,e.g。
public interface MyEJBBase {
public void foo();
public void bar();
}
@Local
public interface MyEJBLocal extends MyEJBBase {}
@Remote
public interface MyEJBRemote extends MyEJBBase {}
其他提示
AFAIK没有办法,误差似乎很描述性的。
从EJB 3.2规范的章节4.9.7:
在相同的业务接口不能同时为本地和远程 bean的业务接口。
可以使用子接口作为一种解决方法:
public interface MyInterface { /* all the methods */ }
public interface MyRemoteInterface extends MyInterface { /* empty */ }
@Stateless
@Remote(MyRemoteInterface.class)
@Local(MyInterface.class)
public class MyBean { /* ... */ }
注意,参数和远程接口上的方法返回的值将是通过噪声值,但参数和本地接口上的方法中返回值将是通按引用。
不隶属于 StackOverflow