2015-12-03 43 views
0

Apache CXF和JAX-WS似乎总是会引起问题。我不确定我是否错用了它!JAX-WS Apache CXF连接错误

这里是我得到异常:

20151203-15:14:06.836+0100 [play-akka.actor.default-dispatcher-9] ERROR my.proj - Asset E911S (SOAP) -- unknown error occurred at 2015-12-03T14:14:05.778Z while reading tag getSlave 
javax.xml.ws.WebServiceException: Could not send Message. 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:150) ~[cxf-rt-frontend-jaxws-3.1.4.jar:3.1.4] 
    at com.sun.proxy.$Proxy57.getSlave(Unknown Source) ~[na:na] 
    at my.proj.connectors.soap.MyServiceClient$$anonfun$getSlave$1.apply(MyServiceClient.scala:174) ~[classes/:na] 
    at my.proj.connectors.soap.MyServiceClient$$anonfun$getSlave$1.apply(MyServiceClient.scala:97) ~[classes/:na] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24) ~[scala-library-2.11.7.jar:na] 
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24) ~[scala-library-2.11.7.jar:na] 
    at akka.dispatch.TaskInvocation.run(AbstractDispatcher.scala:41) [akka-actor_2.11-2.3.4.jar:na] 
    at akka.dispatch.ForkJoinExecutorConfigurator$AkkaForkJoinTask.exec(AbstractDispatcher.scala:393) [akka-actor_2.11-2.3.4.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260) [scala-library-2.11.7.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339) [scala-library-2.11.7.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979) [scala-library-2.11.7.jar:na] 
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107) [scala-library-2.11.7.jar:na] 
Caused by: java.net.SocketTimeoutException: SocketTimeoutException invoking http://1/c.2.3.4/gi-bin/cgi.cgi?WebService: Read timed out 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_60] 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_60] 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_60] 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:422) ~[na:1.8.0_60] 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1376) ~[cxf-rt-transports-http-3.1.4.jar:3.1.4] 
    at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1360) ~[cxf-rt-transports-http-3.1.4.jar:3.1.4] 
    at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56) ~[cxf-core-3.1.4.jar:3.1.4] 
    at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:651) ~[cxf-rt-transports-http-3.1.4.jar:3.1.4] 
    at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) ~[cxf-core-3.1.4.jar:3.1.4] 
    at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308) ~[cxf-core-3.1.4.jar:3.1.4] 
    at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:514) ~[cxf-core-3.1.4.jar:3.1.4] 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:423) ~[cxf-core-3.1.4.jar:3.1.4] 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:324) ~[cxf-core-3.1.4.jar:3.1.4] 
    at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:277) ~[cxf-core-3.1.4.jar:3.1.4] 
    at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96) ~[cxf-rt-frontend-simple-3.1.4.jar:3.1.4] 
    at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:139) ~[cxf-rt-frontend-jaxws-3.1.4.jar:3.1.4] 
    ... 11 common frames omitted 
Caused by: java.net.SocketTimeoutException: Read timed out 
    at java.net.SocketInputStream.socketRead0(Native Method) ~[na:1.8.0_60] 
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[na:1.8.0_60] 
    at java.net.SocketInputStream.read(SocketInputStream.java:170) ~[na:1.8.0_60] 
    at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[na:1.8.0_60] 
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246) ~[na:1.8.0_60] 
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286) ~[na:1.8.0_60] 

这是我做的设置上下文!

private def setRequestContext(proxy: Client, withCredentials: Boolean = false): Unit = { 

    // set the time out! 
    val httpConduit = proxy.getConduit.asInstanceOf[HTTPConduit] 
    val httpClientPolicy = new HTTPClientPolicy() 
    httpClientPolicy.setConnectionTimeout(mySoapClientConfig.requestTimeout.toSeconds) 
    httpClientPolicy.setReceiveTimeout(mySoapClientConfig.requestTimeout.toSeconds) 

    httpConduit.setClient(httpClientPolicy) 

    if (withCredentials) { 
     val userCredentials = new UserCredentials 
     userCredentials.setPassword(mySoapClientConfig.password.orNull) 
     userCredentials.setUserName(mySoapClientConfig.userName.orNull) 

     val headerList = Seq(
     new Header(
      new QName(mySoapClientConfig.targetNamespace, "UserCredentials"), 
      userCredentials, 
      new JAXBDataBinding(classOf[UserCredentials]) 
     ) 
    ) 

     import scala.collection.JavaConverters._ 
     proxy.getRequestContext.put(Header.HEADER_LIST, headerList.asJava) 
    } 
    } 

任何人都可以帮我吗?我可以使用SOAP UI连接到WebService!

回答

0

我想出了问题所在。狠抓以下行:

httpClientPolicy.setConnectionTimeout(mySoapClientConfig.requestTimeout.toSeconds) 
    httpClientPolicy.setReceiveTimeout(mySoapClientConfig.requestTimeout.toSeconds) 

的setXXXTimeout需要很长的以毫秒和我一直在传递是其理解为4个米利斯,这是使读超时4秒!