Вызов удаленного EJB из WildFly в Glassfish - PullRequest
1 голос
/ 28 мая 2020

У меня есть следующий параметр:

  • EJB, развернутый на сервере приложений glassfi sh 3.2.1.

  • Попытка развернуть приложение Springboot как WAR на сервере приложений Wildfly 11.

В моем приложении springboot я добавил зависимость maven для клиента glassfi sh (gf-client):

<dependency>
   <groupId>org.glassfish.main.appclient</groupId>
   <artifactId>gf-client</artifactId>
   <version>5.1.0</version>
</dependency>

Когда я пытаюсь развернуть приложение springboot в wildfly, сервер записывает в журнал следующее сообщение:

[org.jboss.as.ejb3.deployment] (MS C служебный поток 1-7) WFLYEJB0473: привязки JNDI для сессионного компонента с именем 'TimerBean' в модуле развертывания 'deployment "gestion-garantias-fcd.war"' следующие:

java: global / gestion -garantias-fcd / TimerBean! org.glassfi sh .ejb.persistent.timer.TimerLocal java: app / gestion-garantias-fcd / TimerBean! org.glassfi sh .ejb.persistent.timer.TimerLocal java: модуль / TimerBean! Org.glassfi sh .ejb.persistent.timer.TimerLocal java: global / gestion-garantias-fcd / TimerBean java: приложение / gesti on-garantias-fcd / TimerBean java: module / TimerBean

10: 31: 38,790 ОШИБКА [org.jboss.ms c .service.fail] (MS C поток службы 1–6 ) MSC000001: Не удалось запустить службу jboss.deployment.unit. "Gestion-garantias-fcd.war" .INSTALL: org.jboss.ms c .service.StartException в службе jboss.deployment.unit. "Gestion-garantias- fcd.war ".INSTALL: WFLYSRV0153: не удалось обработать этап INSTALL развертывания" gestion-garantias-fcd.war "на org.jboss.as.server.deployment.DeploymentUnitPhaseService.start (DeploymentUnitPhaseService. java: 172) в org. .jboss.ms c .service.ServiceControllerImpl $ StartTask.startService (ServiceControllerImpl. java: 2032) в org.jboss.ms c .service.ServiceControllerImpl $ StartTask.run (ServiceControllerImpl. java: 1955) в java .util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor. java: 1149) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: * .lang) в *1092*: * .lang .Thread.run (Thread. java: 748)

Вызвано: или g.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEE0041: Класс компонента org.glassfi sh .ejb.persistent.timer.TimerBean для компонента TimerBean содержит ошибки: WFLYJPA0033: Не удается найти блок сохранения состояния с именем __TimerJB__ в развертывании "gestion-garantias-fcd.war" на org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor $ 1.handle (ModuleJndiBindingProcessor. java: 157) на org.jboss.as.ee.component .ClassDescriptionTraversal.run (ClassDescriptionTraversal. java: 54) на org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations (ModuleJndiBindingProcessor. java: 186) на org.jboss.as.ee .ModuleJndiBindingProcessor.deploy (ModuleJndiBindingProcessor. java: 143) на org.jboss.as.server.deployment.DeploymentUnitPhaseService.start (DeploymentUnitPhaseService. java: 165) ... еще 5

* 1028 : 38,797 ОШИБКА [org.jboss.as.controller.management-operation] (Загрузочный поток контроллера) WFLYCTL0013: Операция ("dep loy ") не удалось - адрес: ([(" deployment "=>" gestion-garantias-fcd.war ")]) - описание ошибки: {" WFLYCTL0080: Failed services "=> {" jboss.deployment.unit. \ " gestion-garantias-fcd.war \ ". INSTALL" => "WFLYSRV0153: Не удалось обработать этап INSTALL развертывания \" gestion-garantias-fcd.war \ ". Причина: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEE0041: класс компонента org.glassfi sh .ejb.persistent.timer.TimerBean для компонента TimerBean содержит ошибки: WFLYJPA0033: не удается найти модуль сохранения состояния с именем __EJB__Timer__App в развертывании \ "gestion-garantias-fcd.war \" " , "WFLYCTL0412: обязательные службы, которые не установлены:" => ["jboss.deployment.unit. \" Gestion-garantias-fcd.war \ ". Beanmanager"], «WFLYCTL0180: службы с отсутствующими / недоступными зависимостями» => ["jboss.deployment.unit. \ "gestion-garantias-fcd.war \". weld.weldClassIntrospector отсутствует [jboss.deployment.unit. \ "gestion-garantias-fcd.war \". beanmanager] "," jboss.deployment.unit. \ "gestion -garantias-fcd.war \ ". batch.artifact.factory отсутствует [jboss.deployment.unit. \" gestion-garantias-fcd.war \ ". beanmanager]"]}

I выделено жирным шрифтом, что, по моему мнению, является основной причиной ошибки.

В основном ошибка возникает из-за того, что в gf-client существует внутреннее приложение под названием ejb-timer-service-app, и оно содержит конфигурацию сохраняемости (persistence. xml). В этой конфигурации указан блок сохранения состояния __ EJB__Timer__App , который ссылается на источник данных, который обычно создается во всех инсталляциях glassfi sh (jdbc / __ TimerPool).

Я не Не знаю, где находится это приложение (ejb-timer-service-app) в gf-client, но я попытался сделать исключение для зависимости gf-client. Точно, я попытался исключить следующую зависимость:

<groupId>org.glassfish.main.ejb</groupId>
<artifactId>ejb</artifactId>

Но ошибка все еще присутствует.

n, я решил использовать отдельные встроенные зависимости в gf-client. список зависимостей находится здесь:

        <dependency>
            <groupId>org.glassfish.main.deployment</groupId>
            <artifactId>deployment-client</artifactId>
            <version>5.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.common</groupId>
            <artifactId>glassfish-naming</artifactId>
            <version>5.1.0</version>
        </dependency>
        <dependency>
           <groupId>org.reactivestreams</groupId>
           <artifactId>reactive-streams</artifactId>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.ejb</groupId>
            <artifactId>ejb-client</artifactId>
            <version>5.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.orb</groupId>
            <artifactId>orb-connector</artifactId>
            <version>5.1.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.main.ejb</groupId>
            <artifactId>ejb-container</artifactId>
            <version>5.0</version>
        </dependency>

Первая ошибка (Не удается найти блок сохранения состояния ..) исчезла. Но теперь была обнаружена другая ошибка:

Вызвано: javax.naming.NamingException: Ошибка поиска для 'java: global / gyf_electronicdocument_guaranteeCrediro_ear / gyf_electronicdocument_guaranteeCredioro_business / GuaranteeCOfocument.guaranteeCredioro_business / GuaranteeCOBeanteean! Com to.GuaranteeRemote 'в SerialContext [myEnv = {org.omg.CORBA.ORBInitialPort = 3701, java .naming.factory.initial = com.sun.enterprise.naming.SerialInitContextFactory, java .naming.ldap.version = 3, org.omg.CORBA.ORBInitialHost = 127.0.0.1, java .naming.factory.state = com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java .naming.factory.url. pkgs = com.sun.enterprise.naming} [Root исключение: javax.naming.NamingException: невозможно получить SerialContextProvider для SerialContext [myEnv = {org.omg.CORBA.ORBInitialPort = 3701, java .naming.factory. initial = com.sun.enterprise.naming.SerialInitContextFactory, java .naming.ldap.version = 3, org.omg.CORBA.ORBInitialHost = 127.0.0.1, java .naming.factory.state = com.sun. c orba.ee.impl.presentation.rmi.JNDIStateFactoryImpl, java .naming.factory.url.pkgs = com.sun.enterprise.naming} [Root исключение: java .lang.RuntimeException: ошибка инициализации Orb] ] в com.sun.enterprise.naming.impl.SerialContext.lookup (SerialContext. java: 467) в com.sun.enterprise.naming.impl.SerialContext.lookup (SerialContext. java: 414) в javax. naming.InitialContext.lookup (InitialContext. java: 417) в javax.naming.InitialContext.lookup (InitialContext. java: 417) в javax.naming.InitialContext.lookup (InitialContext. java: 417) в com .gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig.ejbWarranty (DocumentoElectronicoEJBConfig. java: 40) по адресу com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig $$ EnhancerBySpring.CGLIB.com $ EnhancerBySpring. .DocumentoElectronicoEJBConfig $$ EnhancerBySpringCGLIB $$ e5ce1c3b $$ FastClassBySpringCGLIB $$ b2972094.invoke () в org.springframework.cglib.proxy.MethodProxy.invokeSuper * 1122 MethodProxy. *: 244) в org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept (ConfigurationClassEnhancer. java: 331) в com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig $$ Enhancer Reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 62) в sun.reflect.DelegatingMethodAccessorImpl.invoke (в 1125 для делегирования *. *. Reflect.Method.invoke (Method. java: 498) в org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy. java: 154) ... Еще 92

Причина: javax.naming.NamingException: Невозможно получить SerialContextProvider для SerialContext [myEnv = {org.omg.CORBA.ORBInitialPort = 3701, java .naming.factory.initial = com.sun .enterprise.naming.SerialInitContextFactory, java .naming.ldap.version = 3, org.omg.CORBA.ORBInitialHost = 127.0.0.1, java .naming.factory.state = com.sun.corba.ee.impl .presentation.rmi.JNDIStateFactoryImpl, java .naming.factory.url.pkgs = com.sun.enterprise.naming} [Root исключение: java .lang.RuntimeException: ошибка инициализации орба] в com.sun. enterprise.naming.impl.SerialContext.getProvider (SerialContext. java: 310) в com.sun.enterprise.naming.impl.SerialContext.lookup (SerialContext. java: 453) ... еще 107

Вызвано: java .lang.RuntimeException: ошибка инициализации Orb в org.glassfi sh .enterprise.iiop.api.GlassFishORBHelper.getORB (GlassFishORBHelper. java: 167) в com.sun.enterprise.naming .impl.SerialContext.getORB (SerialContext. java: 323) в com.sun.enterprise.nami ng.impl.SerialContext.getProviderCacheKey (SerialContext. java: 330) в com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider (SerialContext. java: 360) в com.sun.enterprise.naming.impl. SerialContext.getProvider (SerialContext. java: 305) ... еще 108 Вызвано: java .lang.NullPointerException в org.glassfi sh .enterprise.iiop.api.GlassFishORBHelper.getORB (GlassFishORBHelper. * 11 : 139) ... еще 112

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

Итак, мои вопросы:

Следует ли мне настроить модуль сохранения состояния в моем приложении Springboot с такими же именами, как и в постоянном хранилище. xml?

Есть ли какая-либо зависимость, которую я должен исключить?

Если gf-client не лучший способ. Какие зависимости репозитория glassfi sh я использую для своего случая?

Есть ли какой-либо другой метод вызова удаленного EJB в этих условиях, представленных в моем случае?

Заранее спасибо , и надеюсь, что ты здоров.

1 Ответ

0 голосов
/ 09 июня 2020

IMO, вы должны создать блок сохранения состояния. Думаю нужно, чтобы gf пробовал запускать

...