2011-11-15 1 views
0

私は別の会社のWebサービスへのSOAP要求に「接続がタイムアウト」取得しています。私はwsdlからJavaクラスを作成するためにwsimportを使用しました。私は他の会社の問題が終わったとは思っていません。Webサービスを使って、自分でコードを書くときに得られる結果をすばやくテストする小さなアプリを私に提供してくれたからです。例ではSOAP要求に(メッセージを送信できませんでした)「接続がタイムアウト」(しかしサービスがダウンしていない)

私は...学校でのコードの最後の行で

OtherCompanyWebService ws = new OtherCompanyWebService(); 
OtherCompanyWebServicePortType port = ws.getOtherCompanyWebServiceHttpSoap11Endpoint(); 
ServiceRequest serviceRequest = makeMyServiceRequest(); 
Staff staff = port.getStaffData(serviceRequest).getStaff().getValue(); 

を「スタッフ」に関するデータを取得しようとしています下に、私は次のエラーを取得する...

javax.xml.ws.soap.SOAPFaultException: Could not send Message. 
     at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:199) 
     at $Proxy52.getStaffData(Unknown Source) 
     at uk.co.txttools.rm.service.RmServiceImpl.runRmJob(RmServiceImpl.java:208) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) 
     at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) 
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) 
     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) 
     at $Proxy12.runRmJob(Unknown Source) 
     at uk.co.txttools.rm.quartz.RmJob.execute(RmJob.java:41) 
     at org.quartz.core.JobRunShell.run(JobRunShell.java:216) 
     at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) 
Caused by: org.apache.cxf.interceptor.Fault: Could not send Message. 
     at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64) 
     at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:220) 
     at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:296) 
     at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:242) 
     at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73) 
     at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:178) 
     ... 16 more 
Caused by: java.net.ConnectException: Connection timed out 
     at java.net.PlainSocketImpl.socketConnect(Native Method) 
     at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) 
     at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) 
     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) 
     at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
     at java.net.Socket.connect(Socket.java:529) 
     at sun.net.NetworkClient.doConnect(NetworkClient.java:158) 
     at sun.net.www.http.HttpClient.openServer(HttpClient.java:394) 
     at sun.net.www.http.HttpClient.openServer(HttpClient.java:529) 
     at sun.net.www.http.HttpClient.<init>(HttpClient.java:233) 
     at sun.net.www.http.HttpClient.New(HttpClient.java:306) 
     at sun.net.www.http.HttpClient.New(HttpClient.java:323) 
     at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:975) 
     at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:916) 
     at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:841) 
     at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1019) 
     at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1834) 
     at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1792) 
     at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42) 
     at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69) 
     at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1852) 
     at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66) 
     at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:593) 
     at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62) 

編集1: WSDLファイル内のエンドポイントは、内部アドレスであることが表示されます。これが私が接続することができない理由です。これらのエンドポイントを私のコードで何とか設定する必要がありますか?

アドバイスはありますか?ありがとう。

答えて

0

wsdlのエンドポイントは変更する必要があります私に狂った音)。これは次のように...

BindingProvider bindingProvider = (BindingProvider) port; 
    bindingProvider.getRequestContext().put(
      BindingProvider.ENDPOINT_ADDRESS_PROPERTY, 
      "https://blah/blah/blah"); 
を行うことができます
0

実際に私は同様の問題に直面しています。 wsdlは、社内の任意のwhrから(ブラウザ経由で)アクセスすることができますが、Webサービス(クライアントコードを介して)を呼び出すとExceptionをタイムアウトさせます。その場合、私は何をしたのですか?私は特定のドメインの外に自分のシステムを作成し、システム上のポートを開いてWebサービスクライアントを使用してリクエストを送信するCRを作成しました。あなたは、もう一つは、企業のほとんどは、Microsoftベースのプロキシを使用することで、あなたの(基本的にはシステム関連の問題を解決するW/Sインストールされているインフラ管理チーム)

に相談することができます。だからあなたは、プロキシバイパスコード(NTLMベース)を使用することができます。それを使用してperpousをテストすることはできますが、それはプロキシバイパスコードがプロダクションに行かないようにするためのものです。

関連する問題