GlassExish 3.1中客户端的ctx.lookup()时的CommunicationException

时间:2011-05-05 10:32:21

标签: java serialization glassfish ejb

我有一个实现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:Class   com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate   不是Serializable vmcid:SUN minor   代码:6完成:也许

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

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

2 个答案:

答案 0 :(得分:7)

我在服务界面添加了@Remote注释,错误消失了。

答案 1 :(得分:-1)

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

创建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属性。