EJB: Почему я получаю эту ошибку при поиске JNDI? - PullRequest
2 голосов
/ 01 ноября 2011
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");

Когда я запускаю приложение, после второго поиска появляется ошибка:

[[[ 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 голос
/ 01 ноября 2011

Ну, это выглядит так:

  1. Класс, реализующий StatelessInterogareRemote, не сериализуем, или
  2. Некоторые методы в интерфейсе StatelessInterogareRemote имеют (рекурсивно) параметр иливозвращаемый тип, который не сериализуем

Просто чтобы прояснить: сериализуемый объект - это объект, реализующий интерфейс Serializableрекурсивно Я имею в виду, что объект, его атрибуты, атрибуты его атрибутов и т. д. - все они тоже должны быть сериализуемыми.

Поскольку вы указываете, что EJBбез сохранения состояния должно быть ясно, что у него не должно быть атрибутов, но на всякий случай: все атрибуты в EJB также должны быть сериализуемыми или переходными в случае, если они не могут быть сериализованы.

...