【问题标题】:How to configure an ejb both local and remote on Websphere如何在 Websphere 上配置本地和远程 ejb
【发布时间】:2010-10-26 13:20:46
【问题描述】:

我有一个带有@local 和@remote 注释的无状态EJB SessionBean。该代码在 weblogic 服务器中运行良好。但是,在将其部署到 Websphere 时,会出现以下异常。

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

oracle.odc.session.ODCSession 业务接口类不能同时是远程和本地的。

是否有任何解决方法可以使其在不为远程和本地调用编写单独的 EJB 的情况下工作?

【问题讨论】:

    标签: websphere websphere-7


    【解决方案1】:

    一种解决方法是有一个带有方法声明的基本接口,然后有一个本地接口和一个远程接口,它们扩展基本接口,例如

    public interface MyEJBBase {
        public void foo();
        public void bar();
    }
    
    @Local
    public interface MyEJBLocal extends MyEJBBase {}
    
    @Remote
    public interface MyEJBRemote extends MyEJBBase {}
    

    【讨论】:

      【解决方案2】:

      AFAIK 没有办法,错误似乎很具有描述性。

      【讨论】:

        【解决方案3】:

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

        请注意,远程接口上的方法的参数和返回值是传值方式,而本地接口上的方法的参数和返回值是传值方式。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-30
          • 1970-01-01
          • 2019-04-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-01
          • 2019-08-16
          相关资源
          最近更新 更多