#java #ejb #jndi #lookup
#java #ejb #jndi #поиск
Вопрос:
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:
Ну, похоже, что либо:
- Реализация класса
StatelessInterogareRemote
не является сериализуемой или - Некоторый метод в интерфейсе
StatelessInterogareRemote
имеет (рекурсивно) параметр или возвращаемый тип, который не является сериализуемым
Просто для ясности: сериализуемый объект — это тот, который реализует Serializable
интерфейс; и рекурсивно я имею в виду, что объект, его атрибуты, атрибуты его атрибутов и так далее — все они тоже должны быть сериализуемыми.
Поскольку вы указываете, что EJB не имеет состояния, должно быть ясно, что у него не должно быть атрибутов, но на всякий случай: все атрибуты в EJB также должны быть сериализуемыми или переходными, если они не могут быть сериализованы.
Комментарии:
1. Кажется, что проблема заключается в сериализации. Существует компонент с полным состоянием с 2 атрибутами: private transient HashMap<Целое число, целое число> кол-во; si private ArrayList<ProdusDTO> продукты; Класс реализует сериализуемый, но все еще не работает.
2. Проверьте, является ли ProdusDTO сериализуемым, и являются ли его атрибуты сериализуемыми, и так далее
3. @Oscar: Почему класс, реализующий StatelessInterogareRemote, также известный как компонент EJB, должен быть сериализуемым?
4. @Victor Объекты в EJB должны быть сериализуемыми, чтобы поддерживать репликацию сеанса на нескольких узлах в кластере, как часть стратегии высокой доступности
5. Да .. это касается аргументов метода и возвращаемых типов… но сам компонент hte не обязательно должен быть сериализуемым, я думаю