2012-12-18 15 views
7

मैं गया है एक बाहरी वेब सेवा है, यह काम करता है https पर है, मैं wsimport साथ जावा वर्गों उत्पन्न कर सकते हैं लेकिन जब मैं सेवा invnoke मैं पालन अपवाद recive:वेब सेवा

Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error: java.net.UnknownHostException: ECM01 
at com.sun.xml.internal.ws.transport.http.client.HttpClientTransport.getOutput(Unknown Source) 
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source) 
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source)... 
Caused by: java.net.UnknownHostException: ECM01 
at java.net.PlainSocketImpl.connect(Unknown Source) 
at java.net.SocksSocketImpl.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at java.net.Socket.connect(Unknown Source) 
at sun.net.NetworkClient.doConnect(Unknown Source) 

मेरी कक्षा कि आह्वान सेवा कुछ इस तरह है:

public static void main(String[] args) { 
    ColleagueServiceService cs = new ColleagueServiceService(); 
    ColleagueService service = cs.getColleagueServicePort(); 

    try { 
     service.getColleagues("user", "password", 1); 
    } catch (Exception_Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

मैं tryed उपयोग SoapUI वेब सेवा कॉल करने के लिए है, लेकिन यह एक और अपवाद पता चलता है:

Tue Dec 18 09:40:06 BRST 2012:ERROR:org.apache.http.conn.HttpHostConnectException: Connection to https://my.webservice.url.com refused 
org.apache.http.conn.HttpHostConnectException: Connection to https://my.webservice.url.com refused 
at com.eviware.soapui.impl.wsdl.support.http.SoapUIMultiThreadedHttpConnectionManager$SoapUIClientConnectionOperator.openConnection(SoapUIMultiThreadedHttpConnectionManager.java:321) 
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149) 
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121) 
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:561) 
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820) 
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:754) 
at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport$Helper.execute(HttpClientSupport.java:236) 
at com.eviware.soapui.impl.wsdl.support.http.HttpClientSupport.execute(HttpClientSupport.java:345) 
at com.eviware.soapui.impl.wsdl.submit.transports.http.HttpClientRequestTransport.sendRequest(HttpClientRequestTransport.java:241) 
at com.eviware.soapui.impl.wsdl.WsdlSubmit.run(WsdlSubmit.java:123) 
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) 
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)... 

Caused by: java.net.ConnectException: Connection timed out: connect 
at java.net.DualStackPlainSocketImpl.connect0(Native Method) 
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source) 
at java.net.AbstractPlainSocketImpl.connect(Unknown Source) 
at java.net.PlainSocketImpl.connect(Unknown Source)... 

संपादित:

इस वेब सेवा मेरा है, लेकिन यह एक बाहरी सर्वर में है, मैं मेरी कक्षा ColleagueService (यह मुझे किसने किया नहीं था) को देखा इसके साथ annoted है:

@WebService(serviceName="ColleagueServiceService") 
@SOAPBinding(style = SOAPBinding.Style.RPC, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 
public class ColleagueService { 

उत्पन्न wsdl मैं ve इस:

<port binding="tns:ColleagueServiceBinding" name="ColleagueServicePort"> 
    <soap:address location="http://ECM01:80/services/ColleagueService"/> 
</port> 

बाहरी सर्वर (एक ग्राहक) एक jboss सर्वर और एक अपाचे HTTP सर्वर है, http सर्वर पथ/सेवाओं के साथ ProxyPass द्वारा सभी requestes रीडायरेक्ट/सर्वर JBoss के लिए (jboss सर्वर होस्ट ECM01 है), वैसे भी wsdl गलत है क्योंकि से rvices https है और wsdl में मेरे पास http

कोई भी मदद कर सकता है? धन्यवाद। java.net.UnknownHostException:

+0

पीएस: मैं ब्राउज़र में https://my.webservice.url.com/ColleagueService?wsdl तक पहुंच सकता हूं। –

+0

क्या आप प्रॉक्सी के पीछे किसी भी मौके से हैं? –

+0

@ AndersR.Bystrup हाँ, मेरे इंट्रानेट में प्रॉक्सी है। –

उत्तर

8

की वजह से ECM01

इस होस्ट डबल्यूएसडीएल में निर्दिष्ट है?

<wsdl:port binding="tns:FooBinding" name="FooPort"> 
    <soap:address location="https://ECM01/FooService"/> 
</wsdl:port> 

यदि हां, तो आप पोर्ट पर set the endpoint करना होगा: इस तरह एक वर्ग के लिए देखो

BindingProvider bindingProvider = (BindingProvider) port; 
bindingProvider.getRequestContext() 
    .put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpoint); 

यह शायद उपलब्ध कराने की तरह इसके अलावा अन्य कार्यों में हो जाएगा Anders R. Bystrup का उल्लेख है और एक proxy configuration के रूप में () configuring SSL client certificates


डब्ल्यूएसडीएल के लिए यह वास्तविक सामान्य अंतराल को प्रतिबिंबित नहीं करना सामान्य बात है। कहीं भी मैंने काम किया है, एक ज्ञात खराब यूआरआई का उपयोग किया जाता है (उदाहरण के लिए लोकलहोस्ट जहां सबकुछ अलग-अलग मेजबानों पर वितरित किया जाता है।) ग्राहक एक कॉन्फ़िगरेशन तंत्र के माध्यम से स्पष्ट रूप से एंडपॉइंट सेट कर सकते हैं (एक जेएक्स-डब्ल्यूएस क्लाइंट के लिए उपरोक्त कोड देखें।) यह लचीलापन की अनुमति देता है विकास के दौरान और विकास से उत्पादन के दौरान स्टेजिंग के दौरान गलत मेजबान का उपयोग किया जाता है।

यह कहा गया है कि ऑटो-जेनरेटेड डब्लूएसडीएल Iका उपयोग करते समय सोप पता तत्व तत्व उत्पन्न होता है, यह आपके जेएक्स-डब्ल्यूएस कार्यान्वयन का कार्यान्वयन विवरण है। मैं निश्चित नहीं हूं क्योंकि मैंने कभी इस पर भरोसा नहीं किया है। मैं आपके कंटेनर कार्यान्वयन के दस्तावेज का उल्लेख करता हूं।

+0

धन्यवाद @McDowller, मुझे लगता है कि आपको मेरी समस्या मिली है, मुझे लगता है कि मेरा wsdl गलत है, क्या आप मेरी मदद कर सकते हैं? देखें कि मैंने पोस्ट पर क्या संपादित किया है। –