2010-10-26 91 views
3

我有一個無狀態的EJB SessionBean,帶有bith @local和@remote註釋。該代碼在weblogic服務器上正常工作。然而,在將其部署到Websphere時,會給出以下例外。如何在Websphere上配置本地和遠程的ejb

bm.ejs.container.EJBConfigurationException:BUSINESS_INTERFACE_DESIGNATED_AS_BOTH_REMOTE_AND_LOCAL: 'oracle.odc.session.ODCSession'

的oracle.odc.session.ODCSession業務接口類不能既遠程和本地。

是否有任何解決方法可用於在不爲遠程和本地調用編寫單獨的EJB的情況下工作?

回答

2

一種解決方法是使方法聲明的基接口&具有本地接口&遠程接口,其擴展了基接口,例如,

public interface MyEJBBase { 
    public void foo(); 
    public void bar(); 
} 

@Local 
public interface MyEJBLocal extends MyEJBBase {} 

@Remote 
public interface MyEJBRemote extends MyEJBBase {} 
1

AFAIK有沒有辦法,錯誤似乎很具描述性。

1

從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 { /* ... */ } 

注意,參數和返回的遠程接口上的方法值將被傳遞由值,但參數和返回值本地接口上的方法將通過引用傳遞。

相關問題