2011-06-17 41 views
0

我想從兩個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的東西。的主要部分結構的區別在於:從符號鏈接

  • 工作Tomcat的客戶端是在同一臺機器作爲JBoss服務器上加載

    • 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)] 
    
  • 回答

    0

    該解決方案是在Tomcat的lib目錄中存在jboss-aspect-jdk50-client_4.2.2.jar - 刪除此文件允許應用程序正常工作。

    相關問題