我有一个无状态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 { /* ... */ }

注意,参数和远程接口上的方法返回的值将是通过噪声值,但参数和本地接口上的方法中返回值将是通按引用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top