简体   繁体   English

从 WildFly 调用远程 EJB 到 Glassfish

[英]Call Remote EJB from WildFly to Glassfish

I have the next setting:我有下一个设置:

  • An EJB deployed in a glassfish 3.2.1 application Server.部署在 glassfish 3.2.1 应用程序服务器中的 EJB。

  • Trying to deploy a Springboot app as WAR over a Wildfly 11 App Server.尝试通过 Wildfly 11 应用服务器将 Springboot 应用程序部署为 WAR。

In my springboot app, I added the maven dependency for glassfish client (gf-client):在我的 springboot 应用程序中,我为 glassfish 客户端 (gf-client) 添加了 maven 依赖项:

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

When I try to deploy the springboot app in wildfly, the server writes on log the following message:当我尝试在 wildfly 中部署 springboot 应用程序时,服务器在日志中写入以下消息:

[org.jboss.as.ejb3.deployment] (MSC service thread 1-7) WFLYEJB0473: JNDI bindings for session bean named 'TimerBean' in deployment unit 'deployment "gestion-garantias-fcd.war"' are as follows: [org.jboss.as.ejb3.deployment](MSC 服务线程 1-7)WFLYEJB0473:部署单元“deployment“gestion-garantias-fcd.war””中名为“TimerBean”的 session bean 的 JNDI 绑定如下:

java:global/gestion-garantias-fcd/TimerBean.org.glassfish.ejb.persistent.timer:TimerLocal java.app/gestion-garantias-fcd/TimerBean.org.glassfish.ejb.persistent:timer.TimerLocal java.module/TimerBean.org.glassfish.ejb:persistent:timer:TimerLocal java:global/gestion-garantias-fcd/TimerBean java:app/gestion-garantias-fcd/TimerBean java:module/TimerBean java:global/gestion-garantias-fcd/TimerBean.org.glassfish.ejb.persistent.timer:TimerLocal java.app/gestion-garantias-fcd/TimerBean.org.glassfish.ejb.persistent:timer.TimerLocal java.module/ TimerBean.org.glassfish.ejb:persistent:timer:TimerLocal java:global/gestion-garantias-fcd/TimerBean java:app/gestion-garantias-fcd/TimerBean java:module/TimerBean

10:31:38,790 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-6) MSC000001: Failed to start service jboss.deployment.unit."gestion-garantias-fcd.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."gestion-garantias-fcd.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "gestion-garantias-fcd.war" at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:172) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:2032) at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1955) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.88213 10:31:38,790 错误 [org.jboss.msc.service.fail](MSC 服务线程 1-6)MSC000001:无法启动服务 jboss.deployment.unit。“gestion-garantias-fcd.war”。安装:org .jboss.msc.service.StartException 服务 jboss.deployment.unit."gestion-garantias-fcd.war".INSTALL: WFLYSRV0153: 无法在 org.jboss 处处理部署“gestion-garantias-fcd.war”的安装阶段.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:172) at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:2032) at org.jboss.msc.service.ServiceControllerImpl$StartTask .run(ServiceControllerImpl.java:1955) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang. Thread.run(Thread.88213 246945888:748) 246945888:748)

Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEE0041: Component class org.glassfish.ejb.persistent.timer.TimerBean for component TimerBean has errors: WFLYJPA0033: Can't find a persistence unit named __EJB__Timer__App in deployment "gestion-garantias-fcd.war" at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:157) at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java:54) at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:186) at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:143) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:165)... 5 more由以下原因引起:org.jboss.as.server.deployment.DeploymentUnitProcessingException:WFLYEE0041:组件 class org.glassfish.ejb.persistent.timer.TimerBean 组件 TimerBean 有错误:WFLYJPA0033:无法在部署中找到名为 __EJB__Timer__App 的持久性单元gestion-garantias-fcd.war" at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor$1.handle(ModuleJndiBindingProcessor.java:157) at org.jboss.as.ee.component.ClassDescriptionTraversal.run(ClassDescriptionTraversal.java :54) at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.processClassConfigurations(ModuleJndiBindingProcessor.java:186) at org.jboss.as.ee.component.deployers.ModuleJndiBindingProcessor.deploy(ModuleJndiBindingProcessor.java:143) at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:165)... 5 更多

10:31:38,797 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "gestion-garantias-fcd.war")]) - failure description: { "WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"gestion-garantias-fcd.war\".INSTALL" => "WFLYSRV0153: Failed to process phase INSTALL of deployment \"gestion-garantias-fcd.war\" Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEE0041: Component class org.glassfish.ejb.persistent.timer.TimerBean for component TimerBean has errors: WFLYJPA0033: Can't find a persistence unit named __EJB__Timer__App in deployment \"gestion-garantias-fcd.war\""}, "WFLYCTL0412: Required services that are not installed:" => ["jboss.deployment.unit.\"gestion-garantias-fcd.war\".beanmanager"], "WFLYCTL0180: Services with missing/unavailable dependencies" => [ "jboss.deployment.unit.\"gestion-garantias-fcd.war\".weld.weldClass 10:31:38,797 错误 [org.jboss.as.controller.management-operation](控制器引导线程)WFLYCTL0013:操作(“部署”)失败 - 地址:([(“部署”=>“gestion-garantias-fcd .war")]) - 失败描述:{ "WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"gestion-garantias-fcd.war\".INSTALL" => "WFLYSRV0153: Failed to process phase安装部署 \"gestion-garantias-fcd.war\" Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: WFLYEE0041: 组件 class org.glassfish.ejb.persistent.timer.TimerBean 组件 TimerBean 有错误: WFLYJPA0033:无法在部署中找到名为 __EJB__Timer__App 的持久性单元\"gestion-garantias-fcd.war\""},"WFLYCTL0412:未安装的必需服务:"=> ["jboss.deployment.unit.\" gestion-garantias-fcd.war\".beanmanager"], "WFLYCTL0180: Services with missing/unavailable dependencies" => [ "jboss.deployment.unit.\"gestion-garantias-fcd.war\".weld.weldClass Introspector is missing [jboss.deployment.unit.\"gestion-garantias-fcd.war\".beanmanager]", "jboss.deployment.unit.\"gestion-garantias-fcd.war\".batch.artifact.factory is missing [jboss.deployment.unit.\"gestion-garantias-fcd.war\".beanmanager]" ] } Introspector 丢失 [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 bolded what I think is the main cause for the error.我将我认为是导致错误的主要原因加粗。

Basically, the error happens because in gf-client exists an internal app called ejb-timer-service-app, and it contains a persistence configuration (persistence.xml).基本上,错误发生是因为在 gf-client 中存在一个名为 ejb-timer-service-app 的内部应用程序,它包含一个持久性配置 (persistence.xml)。 That config specifies a persistence unit called __EJB__Timer__App , which references to a datasource which normally is created in all glassfish installations (jdbc/__TimerPool).该配置指定一个名为__EJB__Timer__App的持久性单元,它引用通常在所有 glassfish 安装 (jdbc/__TimerPool) 中创建的数据源。

I don't know where is that app (ejb-timer-service-app) into gf-client, but I tried to do an exclusion over the gf-client dependency.我不知道该应用程序 (ejb-timer-service-app) 在 gf-client 中的位置,但我试图对 gf-client 依赖项进行排除。 Exactly, I tried to exclude the next dependency:确切地说,我试图排除下一个依赖项:

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

But the error stills present.但错误仍然存在。

Then, I opted for use some individual embeeded dependencies in gf-client.然后,我选择在 gf-client 中使用一些单独的嵌入式依赖项。 the dependencies list is here:依赖项列表在这里:

        <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>

The first error (Can't find a persistence unit..) dessapeared.第一个错误(找不到持久性单元..)消失了。 But now, another error was found:但是现在,又发现了一个错误:

Caused by: javax.naming.NamingException: Lookup failed for 'java:global/gyf_electronicdocument_guaranteeCrediro_ear/gyf_electronicdocument_guaranteeCredioro_business/GuaranteeCOBean.com.gyf.electronicdocument.guaranteeCredioro.to.GuaranteeRemote' in SerialContext[myEnv={org.omg.CORBA,ORBInitialPort=3701.由以下原因引起:javax.naming.NamingException:在 SerialContext[myEnv={org=.ORBA70.1Credioro.to.GuaranteeRemote] 中查找“java:global/gyf_electronicdocument_guaranteeCrediro_ear/gyf_electronicdocument_guaranteeCredioro_business/GuaranteeCOBean.com.gyf.electronicdocument.guaranteeCredioro.to.GuaranteeRemote”失败. java.naming.factory.initial=com.sun.enterprise.naming,SerialInitContextFactory. java.naming.factory.initial=com.sun.enterprise.naming,SerialInitContextFactory。 java.naming.ldap,version=3. java.命名.ldap,版本=3。 org.omg.CORBA.ORBInitialHost=127.0.0,1. org.omg.CORBA.ORBInitialHost=127.0.0,1。 java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi,JNDIStateFactoryImpl. java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi,JNDIStateFactoryImpl。 java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is javax.naming:NamingException. java.naming.factory.url.pkgs=com.sun.enterprise.naming} [根异常是 javax.naming:NamingException。 Unable to acquire SerialContextProvider for SerialContext[myEnv={org.omg.CORBA,ORBInitialPort=3701.无法获取 SerialContext[myEnv={org.omg.CORBA,ORBInitialPort=3701. java.naming.factory.initial=com.sun.enterprise.naming,SerialInitContextFactory. java.naming.factory.initial=com.sun.enterprise.naming,SerialInitContextFactory。 java.naming.ldap,version=3. java.命名.ldap,版本=3。 org.omg.CORBA.ORBInitialHost=127.0.0,1. org.omg.CORBA.ORBInitialHost=127.0.0,1。 java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi,JNDIStateFactoryImpl. java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi,JNDIStateFactoryImpl。 java.naming.factory.url.pkgs=com.sun.enterprise.naming} [Root exception is java.lang:RuntimeException. java.naming.factory.url.pkgs=com.sun.enterprise.naming} [根异常是 java.lang:RuntimeException。 Orb initialization erorr]] at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext:java.467) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext:java.414) at javax.naming.InitialContext.lookup(InitialContext:java.417) at javax.naming.InitialContext.lookup(InitialContext:java.417) at javax.naming.InitialContext.lookup(InitialContext:java.417) at com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig.ejbWarranty(DocumentoElectronicoEJBConfig:java.40) at com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig$$EnhancerBySpringCGLIB$$e5ce1c3b.CGLIB$ejbWarranty$1() at com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig$$EnhancerBySpringCGLIB$$e5ce1c3b$$FastClassBySpringCGLIB$$b2972094.invoke() at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy:java.244) at org.springframework.context.annotation.C Orb initialization erorr]] at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext:java.467) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext:java.414) at javax.naming.InitialContext. lookup(InitialContext:java.417) at javax.naming.InitialContext.lookup(InitialContext:java.417) at javax.naming.InitialContext.lookup(InitialContext:java.417) at com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig.ejbWarranty(DocumentoElectronicoEJBConfig:java.40) at com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig$$EnhancerBySpringCGLIB$$e5ce1c3b.CGLIB$ejbWarranty$1() at com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig$$EnhancerBySpringCGLIB$$e5ce1c3b$$FastClassBySpringCGLIB$$b2972094.invoke() at org .springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy:java.244) 在 org.springframework.context.annotation.C onfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer:java.331) at com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig$$EnhancerBySpringCGLIB$$e5ce1c3b.ejbWarranty() at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl:java.62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl:java.43) at java.lang.reflect.Method.invoke(Method:java.498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy:java.154)... 92 more onfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer:java.331) at com.gyf.gestiongarantias.config.DocumentoElectronicoEJBConfig$$EnhancerBySpringCGLIB$$e5ce1c3b.ejbWarranty() at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl:java.62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl:java.43) at java.lang.reflect.Method.invoke(Method:java.498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy: java.154)... 92 更多

Caused by: javax.naming.NamingException: Unable to acquire SerialContextProvider for 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 exception is java.lang.RuntimeException: Orb initialization erorr] at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:310) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:453)... 107 more由以下原因引起:javax.naming.NamingException:无法获取 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.factory188814790 .pkgs=com.sun.enterprise.naming} [根异常是 java.lang.RuntimeException: Orb 初始化错误] 在 com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:310) 在 80801689 .enterprise.naming.impl.SerialContext.lookup(SerialContext.java:453)... 107 更多

Caused by: java.lang.RuntimeException: Orb initialization erorr at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:167) at com.sun.enterprise.naming.impl.SerialContext.getORB(SerialContext.java:323) at com.sun.enterprise.naming.impl.SerialContext.getProviderCacheKey(SerialContext.java:330) at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:360) at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:305)... 108 more Caused by: java.lang.NullPointerException at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:139)... 112 more Caused by: java.lang.RuntimeException: Orb initialization erorr at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:167) at com.sun.enterprise.naming.impl.SerialContext.getORB(SerialContext. java:323) at com.sun.enterprise.naming.impl.SerialContext.getProviderCacheKey(SerialContext.java:330) at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:360) at com.sun .enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:305)... 108 more Caused by: java.lang.NullPointerException at org.glassfish.enterprise.iiop.api.GlassFishORBHelper.getORB(GlassFishORBHelper.java:139 )... 112 更多

I tried to use several dependencies for mitigate this error, but I have exhausted my alternatives.我尝试使用多个依赖项来减轻此错误,但我已经用尽了所有替代方案。

So my questions are:所以我的问题是:

Should I configurate a persistence unit in my springboot app with the same names like in the persistence.xml?我应该在我的 springboot 应用程序中配置一个与 persistence.xml 中名称相同的持久性单元吗?

Is there any dependency that I should exclude?我应该排除任何依赖吗?

If gf-client is not the best way, What dependencies of the glassfish repository shoud I use for my case?如果 gf-client 不是最好的方法,我应该为我的案例使用 glassfish 存储库的哪些依赖项?

Is there any other method for call remote EJB under these conditions exposed in my case?在我的案例中暴露的这些条件下,还有其他方法可以调用远程 EJB 吗?

Thanks in advance, and hope you well.提前致谢,祝你一切顺利。

IMO, you should create the a persistence unit. IMO,您应该创建一个持久性单元。 I think it needed for gf to run probaly我认为 gf 可能需要运行

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM