【问题标题】:CommunicationException while client's ctx.lookup() in GlassFish 3.1GlassFish 3.1 中客户端的 ctx.lookup() 时发生 CommunicationException
【发布时间】:2011-05-05 10:32:20
【问题描述】:

我有一个实现 Serializable 的实体类,我在客户端收到此错误:

javax.naming.CommunicationException: 通信异常 SerialContext[myEnv={java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFactory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl} [根例外是 java.rmi.MarshalException: CORBA BAD_PARAM 1398079494 也许;嵌套的 例外是: java.io.NotSerializableException: ----------BEGIN 服务器端堆栈跟踪---------- org.omg.CORBA.BAD_PARAM:警告: IOP00100006:类 com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate 不可序列化 vmcid:SUN 次要 代码:6 完成:也许

当我在做SomeService serv = (SomeService)ctx.lookup("java:global/MyProject/SomeServiceImpl");

Entity 类是否应该在服务器和客户端都在同一个包中? 现在Entity类在Client App的包(dir)和SomeService接口在服务端的包(dir)中。

【问题讨论】:

    标签: java serialization glassfish ejb


    【解决方案1】:

    我在服务接口上添加了@Remote注解,错误消失了。

    【讨论】:

    • 感谢您发布您的解决方案,我永远不会从错误中弄清楚这一点。
    【解决方案2】:

    我尝试了以下,一切正常。

    当创建 InitialContext 为:

    Properties props = new Properties();
    props.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
    props.setProperty("org.omg.CORBA.ORBInitialHost", "localhost");
    props.setProperty("org.omg.CORBA.ORBInitialPort", "3700");
    
    InitialContext ctx = new InitialContext(props);
    

    后来,

    myBeanService = (MyBeanService) ctx.lookup("java:global/AppName/MyBeanService");
    

    显示该异常,但如果我只是这样调用:

    myBeanService = (MyBeanService) new InitialContext().lookup("java:global/AppName/MyBeanService");
    

    没有问题。问题是 JNDI 属性。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 2015-01-12
      相关资源
      最近更新 更多