2011-11-01 116 views
2
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"); 

当我运行应用程序,第二查询后出现的错误:EJB:为什么我在JNDI查找中遇到这个错误?

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

回答

1

嗯,它看起来像之一:

  1. 实施StatelessInterogareRemote类是不可序列或
  2. 接口StatelessInterogareRemote中的某些方法具有(递归)参数或不可序列化的返回类型

只是要清楚:一个可序列化的对象是一个实现了Serializable接口;和递归地我的意思是说对象,它的属性,它的属性的属性等等,它们都必须是可序列化的。

由于您指出EJB是无状态的,因此应该清楚它不得有属性,但以防万一:EJB中的所有属性也必须是可序列化的,或者在它们不能被序列化。

+0

似乎序列化是问题。有一个Statefull bean和2个属性:private transient HashMap qty; si私有ArrayList 产品;该类实现了Serializable,但仍然无法工作。 – Emanuel

+0

检查ProdusDTO是否可序列化,并且其属性是否可序列化等 –

+0

@Oscar:WHy是否实现了StatelessInterogareRemote a.k.a EJB bean需要可序列化? – Victor