Java8 / JBoss7 - Не удается получить экземпляр компонента - PullRequest
0 голосов
/ 05 октября 2018

Я обновляю приложение с JBoss 5 до 7 и столкнулся с проблемой, когда оно не может найти вызванный компонент.

Какую из привязок JNDI на самом деле ищет JBoss?

server.log (при запуске)

WFLYEJB0473: JNDI bindings for session bean named 'ManagerLocal' in deployment unit 'subdeployment "Application-EJB.jar" of deployment "Application-EAR.ear"' are as follows:

    java:global/Application-EAR/Application-EJB/ManagerLocal!com.application.data.manager.local.ManagerLocal
    java:app/Application-EJB/ManagerLocal!com.application.data.manager.local.ManagerLocal
    java:module/ManagerLocal!com.application.data.manager.local.ManagerLocal
    java:global/Application-EAR/Application-EJB/ManagerLocal
    java:app/Application-EJB/ManagerLocal
    java:module/ManagerLocal

Ошибка

javax.naming.NameNotFoundException: ManagerLocal -- service jboss.naming.context.java.ManagerLocal
    at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:106)
    at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:207)
    at org.jboss.as.naming.InitialContext$DefaultInitialContext.lookup(InitialContext.java:235)
    at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:193)
    at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:189)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at javax.naming.InitialContext.lookup(InitialContext.java:417)
    at com.common.util.LookupUtil.lookup(LookupUtil.java:91)
    at com.common.util.LookupUtil.lookupLocalBean(LookupUtil.java:35)
    at com.application.web.resource.RequestResource.getRequestManager(RequestResource.java:69)
    at com.application.web.resource.RequestResource.searchRequests(RequestResource.java:413)
    at com.application.trigger.handler.TriggerHandler.execute(TriggerHandler.java:43)
    at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
2018-10-05 16:25:00,030 [ApplicationScheduler_Worker-3] ERROR org.quartz.core.JobRunShell - Job AppJobs.AppBuild threw an unhandled Exception: 
java.lang.RuntimeException: Couldn't get an instance of manager bean

Код для вычисления имени JNDI

private static String computeJNDIName(boolean isLocal, String beanName, String appName) {
        String name;

        if (isLocal) {
            name = appName + "/" + beanName + "/local";
        } else {
            name = appName + "/" + beanName + "/remote";
        }

        return name;
    }

1 Ответ

0 голосов
/ 06 октября 2018

Не самый лучший ответ, например, в нем не указывается причина или аргументация, но мне пришлось добавить это к компоненту поддержки JSF в моей WAR, чтобы он мог получить доступ к компоненту в банке EJB при обновлении до EAP7

@EJB(lookup="java:app/NEDtoBrsMigratorEJB/CustomerDeleterBean")
CustomerDeleterBeanLocal customerDeleterBean;

Привязка JNDI для EJB:

java: global / NEDtoBrsMigratorEAR / NEDtoBrsMigratorEJB / CustomerDeleterBean! Net.myco.brsupdater.engine.CustomerDava: 100: *приложение / NEDtoBrsMigratorEJB / CustomerDeleterBean net.myco.brsupdater.engine.CustomerDeleterBeanLocal Java: модуль / CustomerDeleterBean net.myco.brsupdater.engine.CustomerDeleterBeanLocal Java: глобальный / NEDtoBrsMigratorEAR / NEDtoBrsMigratorEJB / CustomerDeleterBean Java: приложение / NEDtoBrsMigratorEJB / CustomerDeleterBean Java: модуль /CustomerDeleterBean

И обратите внимание, что этот пример аннотации предназначен для поиска в виртуальной машине JNDI.

...