在Spring中调用EJB,EJB服务重起的时候程序报错
各位老大,我被这个问题弄得头晕脑涨了。
问题描述:在一个Web应用程序中(假定名字是AppWeb)需要调用远程的EJB,每次远程的EJB应用重新启动后,当前程序AppWeb都需要重新启动,否则报错。
错误信息:
Error 500--Internal Server Error
java.lang.NullPointerException
at weblogic.rmi.cluster.WeightBasedReplicaHandler.failOver(WeightBasedReplicaHandler.java:120)
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:255)
问题的要求:不希望EJB应用每次启动的时候AppWeb都要跟着重新启动
spring中的配置片段:
<bean id="jndiForEJB"
class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">
weblogic.jndi.WLInitialContextFactory
</prop>
<prop key="java.naming.provider.url">
t3://192.168.128.105:8001
</prop>
</props>
</property>
</bean>
.......
<bean id="custServiceDelegate"
class="org.springframework.ejb.access.SimpleRemoteStatelessSessionProxyFactoryBean">
<property name="jndiTemplate">
<ref local="jndiForEJB" />
</property>
<property name="jndiName">
<value>ejb/CustServiceProcess</value>
</property>
<property name="businessInterface">
<value>
com.mycom.ejb.custservicemanage.interfaces.CustServiceProcess
</value>
</property>
</bean>
简单说,就是EJB服务重启后,应用程序也必须重启动,否则报错。