从Tomcat中的客户端应用程序调用WAS 9中的远程EJB时出错,

时间:2019-09-12 16:04:38

标签: java tomcat websphere tomcat8 websphere-9

部署在tomcat中的客户端应用程序将在WAS 9中查找EJB。我们的上下文xml具有如下所示的bean定义。

<bean id="ejbHelper" class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
          <property name="jndiName" value="ejb/ejbHelper"/>
          <property name="businessInterface" value="xx.yy.zz.ejbHelper"/>
          <property name="cacheHome" value="true"/>
          <property name="lookupHomeOnStartup" value="false"/>
          <property name="resourceRef" value="true"/>
          <property name="homeInterface" value="xx.yy.zz.ejbHelper"/>
          <property name="refreshHomeOnConnectFailure" value="true"/>
          <property name="jndiEnvironment" >
          <props>
                <prop key="java.naming.factory.initial">com.ibm.websphere.naming.WsnInitialContextFactory</prop>
                <prop key="java.naming.provider.url">corbaloc:iiop:localhost:2809</prop>
                <prop key="ejb.lookup.on.startup">false</prop>
          </props>
          </property>
    </bean>

根据论坛中的建议,

https://www.ibm.com/support/knowledgecenter/ro/SSAW57_9.0.5/com.ibm.websphere.nd.multiplatform.doc/ae/tcli_ejbthinclient.html

我们将“ com.ibm.ws.ejb.thinclient_9.0.jar”复制到Tomcat“ \ lib”,然后看到如下异常。

12-Sep-2019 11:25:42.110 SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:714)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1125)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1859)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:522)
        at java.util.concurrent.FutureTask.run(FutureTask.java:277)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1153)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.lang.Thread.run(Thread.java:785)
Caused by: java.lang.NullPointerException
        at com.ibm.ws.security.web.WebCollaborator.isJaspiEnabled(WebCollaborator.java:1437)
        at com.ibm.ws.security.web.SecurityServletContainerInitializer.onStartup(SecurityServletContainerInitializer.java:50)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 10 more

我们在tomcat的“ / lib”目录中用com.ibm.ws.ejb.thinclient_8.0.jar替换了“ 9.0 jar”,它工作正常。由于我们已经迁移到WAS 9,因此我们不再希望使用任何WAS 8 jar。

据我了解,SecurityServletContainerInitializer是com.ibm.ws.ejb.thinclient_9.0.jar的新增功能。

我们甚至试图通过在客户端应用程序web.xml中添加metadata-complete =“ true”属性来禁用Servlet 3.0扫描和组件自动加载。那没有帮助。

能否让我们知道将com.ibm.ws.ejb.thinclient_9.0.jar用于我们的tomcat客户端应用程序是否需要其他配置/设置。

0 个答案:

没有答案