下面我开始讲逻辑,会有点混乱。我们系统做一个webservice,贡其他系统调用插入数据库。  我们系统会做三件事情,1入库,2匹配,3核销。其他系统调用我们的webservice的时候,在入库的时候我们就返回了相关数据,其中匹配和核销是在我们server端起一个线程中完成的,核销的内部呢,是再起一个线程去调用别人的webservice,就在调用别人的webservice的地方,报错。求加班的骚年们,大神们 看看。 不懂地方我回帖。javax.xml.ws.WebServiceException: Could not send Message.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:135)
at $Proxy2601.writeOff(Unknown Source)
at com.sinochem.wyhx.zdhx.bo.WsBO.rimWriteOffFund(WsBO.java:292)
at com.sinochem.wyhx.zdhx.bo.RimWsBO.rimRentHx(RimWsBO.java:187)
at com.sinochem.wyhx.zdhx.bo.RimWsBO$$FastClassByCGLIB$$567830f3.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.doInTransaction(TransactionInterceptor.java:132)
at org.springframework.transaction.jta.WebSphereUowTransactionManager$UOWActionAdapter.run(WebSphereUowTransactionManager.java:337)
at com.ibm.ws.uow.UOWManagerImpl.runUnderNewUOW(UOWManagerImpl.java:949)
at com.ibm.ws.uow.UOWManagerImpl.runUnderUOW(UOWManagerImpl.java:510)
at org.springframework.transaction.jta.WebSphereUowTransactionManager.execute(WebSphereUowTransactionManager.java:281)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:127)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
at com.sinochem.wyhx.zdhx.bo.RimWsBO$$EnhancerByCGLIB$$aaf3632e.rimRentHx(<generated>)
at com.sinochem.wyhx.zdhx.bo.FetchWorkflowThread.callWS(FetchWorkflowThread.java:284)
at com.sinochem.wyhx.zdhx.bo.FetchWorkflowThread.run(FetchWorkflowThread.java:91)
Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: http://172.16.80.164:9080/rim_uat/services/RentWebService
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1196)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:379)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:2305)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:2274)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:2119)
at org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:47)
at org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:188)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:695)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:243)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:516)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:313)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:265)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
... 18 more
Web服务Java多线程Webservice

解决方案 »

  1.   

    其实也是想问问,在别人调用我们的webservice的时候,在这个时候代码里面能不能再调用其他系统的webservice
      

  2.   

    晕,这么明显的网络错误!!!
    楼主先去看一下HTTP 400的错误码是什么意思!
    上面的异常信息中,远程的WS是开户的,而且调用到了,只是请求方式不对(可能是HTTP方法,或者HTTP参数传得不对),检查一下别人开放的WS的接口,然后看自己客户端的代码,构造的HTTP请求跟对方期望的是不是一样
      

  3.   


    这这块需要修改吗?
    HTTPConduit http = (HTTPConduit) client.getConduit();
    HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
    ////httpClientPolicy.setCookie((String) this.getContext().getRequest().getSession().getAttribute("Cookie"));
    httpClientPolicy.setConnectionTimeout(6*60*1000);
    httpClientPolicy.setAllowChunking(false);
    httpClientPolicy.setReceiveTimeout(6*60*1000);
    http.setClient(httpClientPolicy);
      

  4.   

    httpClientPolicy.setCookie(new Cookie("JSESSIONID","0001PZdatn6_4wN51-yctHsoxIC:26133QJ1D9").getValue());这句话解决了问题。  擦擦擦