Uploaded image for project: 'JBoss Web Services'
  1. JBoss Web Services
  2. JBWS-1519

Webservice Proxy (org.jboss.ws.jaxrpc.CallProxy) is not thread safe

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Do
    • Icon: Major Major
    • None
    • jbossws-1.0.3.SP1
    • None
    • None
    • Medium

      We are performing load tests with webservices at the moment and we discovered the following issue:

      If multiple threads use the same CallProxy instance (the proxy is fetched once with a jndi lookup) then the following exception occured:

      12:24:19,990 ERROR [WSWork] Error while calling the web service
      java.rmi.RemoteException: Call invocation failed with code [Client] because of: Request struct cannot be null; nested exception is:

      javax.xml.rpc.soap.SOAPFaultException: Request struct cannot be null
      at org.jboss.ws.common.CommonClient.invoke(CommonClient.java:331)
      at org.jboss.ws.jaxrpc.CallImpl.invokeInternal(CallImpl.java:560)
      at org.jboss.ws.jaxrpc.CallImpl.invoke(CallImpl.java:338)
      at org.jboss.ws.jaxrpc.CallProxy.invoke(CallProxy.java:148)
      at $Proxy211.perform(Unknown Source)
      at com.winterthur.jackpot.j2eeperf.work.WSWork.perform(WSWork.java:50)
      at com.winterthur.jackpot.j2eeperf.PerfImpl.dispatch(PerfImpl.java:141)
      at com.winterthur.jackpot.j2eeperf.PerfImpl.execute(PerfImpl.java:102)
      at com.winterthur.jackpot.j2eeperf.web.PerfServlet.doGetOrPost(PerfServlet.java:122)
      at com.winterthur.jackpot.j2eeperf.web.PerfServlet.doGet(PerfServlet.java:58)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
      at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
      at sun.reflect.GeneratedMethodAccessor844.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
      at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
      at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:161)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:245)
      at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50)
      at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156)
      at java.security.AccessController.doPrivileged(Native Method)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152)
      at com.winterthur.jackpot.servlet.util.RequestEncodingFilter.doFilter(RequestEncodingFilter.java:47)
      at sun.reflect.GeneratedMethodAccessor843.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
      at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
      at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:217)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
      at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50)
      at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156)
      at java.security.AccessController.doPrivileged(Native Method)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152)
      at com.winterthur.jackpot.servlet.util.StrippedSessionIdFilter.doFilter(StrippedSessionIdFilter.java:35)
      at sun.reflect.GeneratedMethodAccessor842.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
      at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
      at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:217)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
      at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50)
      at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156)
      at java.security.AccessController.doPrivileged(Native Method)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152)
      at com.winterthur.jackpot.servlet.util.Log4JMDCPropagationFilter.doFilter(Log4JMDCPropagationFilter.java:70)
      at sun.reflect.GeneratedMethodAccessor841.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:243)
      at java.security.AccessController.doPrivileged(Native Method)
      at javax.security.auth.Subject.doAsPrivileged(Subject.java:517)
      at org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:275)
      at org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:217)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:197)
      at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:50)
      at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:156)
      at java.security.AccessController.doPrivileged(Native Method)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:152)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:524)
      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
      at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
      at com.winterthur.jackpot.tomcat.valves.SubjectDelegationCheckValve.invoke(SubjectDelegationCheckValve.java:125)

      at com.winterthur.jackpot.tomcat.valves.ClusterFailureValve.invoke(ClusterFailureValve.java:134)
      at com.winterthur.jackpot.tomcat.valves.ResetServernameValve.invoke(ResetServernameValve.java:88)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)

      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
      at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: javax.xml.rpc.soap.SOAPFaultException: Request struct cannot be null
      at org.jboss.ws.jaxrpc.SOAPFaultExceptionHelper.getSOAPFaultException(SOAPFaultExceptionHelper.java:100)
      at org.jboss.ws.common.CommonSOAPBinding.unbindResponseMessage(CommonSOAPBinding.java:574)
      at org.jboss.ws.common.CommonClient.invoke(CommonClient.java:319)
      ... 85 more

      The soap request was invoked with an incomplete body element (second message).

              tdiesler@redhat.com Thomas Diesler
              amine.belkoura Amine Belkoura (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: