2016-04-18 11 views
7

Abrufen der Nullzeiger-Ausnahme beim Starten des Aufrufs der activate-Methode auf dem Clientobjekt. Hier ist mein Code.Abrufen von java.lang.NullPointerException beim Aufrufen der activate-Methode auf TaskClient

@RequestMapping(value="/loanreq",method=RequestMethod.GET) 
    public String loanRequest(HttpServletRequest req,HttpSession session) throws DroolsParserException, IOException, NamingException{ 

    StatefulKnowledgeSession ksession = processEngine.getKsession(); 

    ksession.getWorkItemManager().registerWorkItemHandler("Human Task", new WSHumanTaskHandler()); 

    TaskClient client = new TaskClient(new MinaTaskClientConnector("UserTask",new MinaTaskClientHandler(SystemEventListenerFactory.getSystemEventListener()))); 

     client.connect("ipaddress", 9123); 
     BlockingTaskOperationResponseHandler responseHandler = 

       new BlockingTaskOperationResponseHandler(); 
     client.activate(3, "krisv", responseHandler); 

     client.start(3, "krisv", responseHandler); 

      client.complete(3, "krisv", null, responseHandler); 




    Map<String,Object> params=new HashMap(); 
    params.put("employee", "krisv"); 


    ProcessInstance processInstance =ksession.startProcess("com.vr.controller2",params); 


    System.out.println("id is "+processInstance.getId()); 

    return "return1"; 
    } 

Und ich erhalte die folgende Ausnahme

java.lang.NullPointerException 
at org.jbpm.task.service.mina.MinaTaskClientConnector.write(MinaTaskClientConnector.java:118) 
at org.jbpm.task.service.TaskClient.activate(TaskClient.java:651) 
at com.vr.controller.hellocontroller.loanRequest(hellocontroller.java:181) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212) 
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173) 
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 

ich das Client-Objekt gesehen haben während des Debuggens, aber es ist nicht null.Dont zu wissen, warum ich diese error.I bin immer diese Störung erhalte bei die Zeile "client.activate()" nicht bei "client.connect()".

+0

Mögliche Duplikat [Was ein Null-Zeiger-Ausnahme ist, und wie zu tun Ich repariere es?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how-do-fix-it) – Kenster

+0

Ich habe kein Problem wie in so besagter link.This ist anderer Fall. Er stellt Klientenverbindung her und fängt an. Hier erhalte ich nicht Ausnahme bei client.connect() aber an client.start() (etwas, das mit jbpm in Verbindung steht). – smith

+0

@smith das Problem hier ist, dass 'client.connect()' keine Ausnahmen in jedem Fall zu werfen, es gibt nur 'true' oder' false', um anzuzeigen, dass es verbunden ist oder nicht. –

Antwort

4

Nach Stack-Trace erscheint dieser Fehler, weil session innerhalb MinaTaskClientConnectornull ist. Soweit ich aus dem Quellcode von TaskClient und MinaTaskClientConnector verstehen geschieht dies aufgrund eines Fehlers in connect Verfahren, in diesem Code-Block:

try { 
     connector.getFilterChain().addLast("codec",new ProtocolCodecFilter(new ObjectSerializationCodecFactory())); 

     ConnectFuture future1 = connector.connect(address); 
     future1.awaitUninterruptibly(); 
     if (!future1.isConnected()) { 
      return false; 
     } 
     session = future1.getSession(); 
     return true; 
} catch (Exception e) { 
     logger.error(e.getMessage(), e); 
     return false; 
} 

Sie genaue Fehler in Log finden oder durch Haltepunkt in catch Block setzen.

Auch würde ich raten Ergebnis der connect-Methode überprüfen (es gibt boolean Wert über Verbindungs ​​Erfolg anzuzeigen) und etwas zu tun, wie folgt aus:

if (client.connect("ipaddress", 9123) { 
     BlockingTaskOperationResponseHandler responseHandler = new BlockingTaskOperationResponseHandler(); 
     client.activate(3, "krisv", responseHandler); 
     client.start(3, "krisv", responseHandler); 
     client.complete(3, "krisv", null, responseHandler); 
     Map<String,Object> params=new HashMap(); 
     params.put("employee", "krisv"); 
     ProcessInstance processInstance =ksession.startProcess("com.vr.controller2",params); 
     System.out.println("id is "+processInstance.getId()); 
     return "return1"; 
} else { 
     //TODO code to report connection error 
} 
+0

Während ich dieses connector.connect() verwende, wird es als nosuchmethod.Is angezeigt, dass Connector MinaTaskClientConnector. – smith

+0

@smith 'MinaTaskClientConnector.connect' wird in' TaskClient.connect' aufgerufen. Sie müssen nur erreichen, dass diese Methode 'true' nicht' false' zurückgibt. –

+0

Hier gibt es keine Methode namens getfilterchain() in diesem MinaTaskClientConnector – smith