среды:Glassfish и javax.naming.NameNotFoundException после приложения Reload
GlassFish сервер Open Source Edition 4.1
Disable-непереносимые-JNDI-имена: истинные
Проблема:
Когда я развертываю или переустанавливаю приложение - все работает нормально. Но после Reload или Отключить/Включить следующее исключение возникает во время подключения от автономного клиента:
Исключение в потоке «главный» javax.naming.NamingException: Lookup Сбой «Java: глобальный/SynisBackendEAR/SynisBackend/UnitronicsDriver» ...
...
Вызванный: javax.naming.NameNotFoundException: UnitronicsDriver не нашел ...
...
Вызвано: java.lang.IllegalStateException: Исключение пытается ввести локальный ejb-ref name = com.protechnologia.synis.drivers.unitronics.UnitronicsDriver/configurationProvider, Local 3.x interface = com.protechnologia.synis.settings.ConfigurationProvider , ejb-link = null, lookup = java: app/SynisBackend/ConfigurationProviderXML, mappedName =, jndi-name =, refType = сеанс в класс com.protechnologia.synis.drivers.unitronics.UnitronicsDriver: объект не является экземпляром объявления класс
...
Шифр автономного клиента:
InitialContext ctx = new InitialContext();
Driver bean = (Driver) ctx.lookup("java:global/SynisBackendEAR/SynisBackend/UnitronicsDriver");
bean.test();
Я хочу упомянуть, что после развертывания или перераспределения все работает нормально.
Ключ:
Я нашел TAHT проблема заключается в следующем поиск TAHT работает на Deplyment и не работает иначе:
@Singleton
@Startup
public class UnitronicsDriver implements Driver {
@EJB(lookup = "java:app/SynisBackend/ConfigurationProviderXML")
protected ConfigurationProvider conf;
Следующая подсказка:
Замена @EJB ручным поиском решает проблему, но почему?
conf = (ConfigurationProvider) ctx.lookup("java:app/SynisBackend/ConfigurationProviderXML");