我想從兩個Tomcat 6.0.14實例調用JBoss 5.1.0上的EJB。一臺機器工作正常,而另一臺機器不工作。該代碼是一個Struts動作做類似的東西:Tomcat在嘗試調用JBoss 5上的EJB時收到NPE
try {
MyInterface myInterface = (MyInterface)Component.getInstance(MyInterface.class);
log.debug(new StringBuilder().append("Got a ").append(myInterface).toString());
myInterface.doSomething();
} catch (Exception e) {
logger.error(e.getMessage());
}
我最後一個斷點連接到catch塊中的通話記錄,作爲呼叫記錄器不產生任何輸出。
調試器顯示Exception是NPE,但它沒有消息。日誌記錄顯示調用接口後立即調用的調用工作正常,文本是類似於「有一個代理jboss.j2ee:ear = ear.ear,jar = ear-internal-3.0.0.jar,name = MyInterfaceImpl,service = EJB3實現[interface com.myco.MyInterface]「。
我沒有輕鬆訪問服務器端的方法,所以無法在其中附加調試器,也無法輕鬆訪問源代碼(我使用JDecompiler找出在jdb中放置斷點的位置 - 代碼是內部代碼,我只是不在正確的部門工作!)
我看不出如何,在上面的代碼myInterface可能爲空,所以對於我來說,NPE要麼來自服務器端,還是Tomcat的內部。
這兩臺機器的配置有一些細微的差別,但沒有任何暗示在代碼中拋出NPE的東西。的主要部分結構的區別在於:從符號鏈接
- CONF,而失敗的Tomcat客戶機是一個單獨的機器上不同的子網(然而,代理被返回,我可以看到網絡流量使用tcpdump轉到JBoss服務器上的正確端口,所以我不認爲這是網絡問題)
有沒有人有任何想法?
我設法讓這出系統(機器與JDK 1.60_18 RHEL5上運行) - 它看起來是this錯誤,但肯定如果客戶端罐子的兩個Tomcats都一樣,這個錯誤要麼發生在兩者之間,要麼都不發生?
[org.jboss.ejb3.stateless.StatelessContainer.dynamicInvoke(StatelessContainer.java:379)
org.jboss.ejb3.session.InvokableContextClassProxyHack._dynamicInvoke(InvokableContextClassProxyHack.java:53)
org.jboss.aop.Dispatcher.invoke(Dispatcher.java:91)
org.jboss.aspects.remoting.AOPRemotingInvocationHandler.invoke(AOPRemotingInvocationHandler.java:82)
org.jboss.remoting.ServerInvoker.invoke(ServerInvoker.java:891)
org.jboss.remoting.transport.socket.ServerThread.completeInvocation(ServerThread.java:744)
org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java:697)
org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java:524)
org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:232)
org.jboss.remoting.MicroRemoteClientInvoker.invoke(MicroRemoteClientInvoker.java:211)
org.jboss.remoting.Client.invoke(Client.java:1724)
org.jboss.remoting.Client.invoke(Client.java:629)
org.jboss.aspects.remoting.InvokeRemoteInterceptor.invoke(InvokeRemoteInterceptor.java:62)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
org.jboss.aspects.tx.ClientTxPropagationInterceptor.invoke(ClientTxPropagationInterceptor.java:67)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
org.jboss.ejb3.security.client.SecurityClientInterceptor.invoke(SecurityClientInterceptor.java:65)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
org.jboss.ejb3.remoting.IsLocalInterceptor.invoke(IsLocalInterceptor.java:74)
org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
org.jboss.aspects.remoting.PojiProxy.invoke(PojiProxy.java:61)
$Proxy9.invoke(Unknown Source)
org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
$Proxy8.getRoster(Unknown Source)
com.mycompany.MyAction.execute(GetNotificationsAction.java:33)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
com.mycompany.filters.EncodingFilter.doFilter(EncodingFilter.java:23)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
java.lang.Thread.run(Thread.java:619)]