Java EJB:为什么在JNDI查找中会出现这个错误?
运行应用程序时,在第二次查找后会出现错误:Java EJB:为什么在JNDI查找中会出现这个错误?,java,ejb,jndi,lookup,Java,Ejb,Jndi,Lookup,运行应用程序时,在第二次查找后会出现错误: InitialContext ctx = new InitialContext(); StatelessInterogareRemote beanStatelessRemote = (StatelessInterogareRemote) ctx .lookup("java:global/ShopEAP/ShopEJB/StatelessInterogare!shop.StatelessInterogareRemote"); StatefulSh
InitialContext ctx = new InitialContext();
StatelessInterogareRemote beanStatelessRemote = (StatelessInterogareRemote) ctx
.lookup("java:global/ShopEAP/ShopEJB/StatelessInterogare!shop.StatelessInterogareRemote");
StatefulShopCartLocal beanStateful = (StatefulShopCartLocal) ctx
.lookup("java:global/ShopEAP/ShopEJB/StatefulShopCart!shop.StatefulShopCartLocal");
嗯,看起来是这样的:
无状态InterogareRemote
的类不可序列化或无状态InterogareRemote
中的某些方法(递归地)具有不可序列化的参数或返回类型serializable
接口的对象;通过递归,我的意思是说对象、它的属性、它的属性的属性等等——它们都必须是可序列化的
因为您指出EJB是无状态的,所以应该清楚它不能有属性,但以防万一:EJB中的所有属性也必须是可序列化的,或者是暂时的,以防它们无法序列化。似乎序列化是问题所在。有一个状态完整的bean,它有两个属性:private transient HashMap quaty;si私有ArrayList产品;该类实现了可序列化,但仍不工作。请检查ProdusTo是否可序列化,以及其属性是否可序列化,诸如此类on@Oscar:为什么实现无状态InterogareRemote a.k.a EJB bean的类需要可序列化?@EJB中的Victor对象应该可序列化,以便支持集群中多个节点之间的会话复制,作为高可用性策略的一部分是的。这适用于方法args和返回类型……但我认为,bean本身不需要序列化
[[[ Error ]]]: Lookup failed for 'java:global/ShopEAP/ShopEJB/StatelessInterogare' in SerialContext
INFO: [Ljava.lang.StackTraceElement;@89708c
WARNING: "IOP00100006: (BAD_PARAM) Class com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate is not Serializable"
org.omg.CORBA.BAD_PARAM: vmcid: OMG minor code: 6 completed: Maybe
at com.sun.corba.ee.impl.logging.OMGSystemException.notSerializable(OMGSystemException.java:990)
at com.sun.corba.ee.impl.logging.OMGSystemException.notSerializable(OMGSystemException.java:1005)
at com.sun.corba.ee.impl.orbutil.ORBUtility.throwNotSerializableForCorba(ORBUtility.java:753)
...