我有一个实现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)中。
答案 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属性。