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)
    ...