部署在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>
根据论坛中的建议,
我们将“ 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客户端应用程序是否需要其他配置/设置。