2010-02-01 14 views
5

Próbuję wygenerować klasę proxy z lokalnego pliku WSDL z zaćmieniem Galileo i osią 2 1.4 w systemie Windows XP. Mój problem polega na tym, że dostaję błąd z powodu zaimportowanego schematu wewnątrz WSDL. Linia tha martwi mnie to:WSDLException: Wystąpił błąd podczas próby rozwiązania schematu, do którego odwołuje się

<xsd:import namespace="http://www.w3.org/2005/05/xmlmime" schemaLocation="http://www.w3.org/2005/05/xmlmime"/> 

Próbowałem uruchomić wsdl2java następującą komendę:

wsdl2java.bat -uri SOAService.wsdl -o D:\temp p test -d xmlbeans -a -s -ns2p -uw 

i otrzymuję następujący wyjątek:

Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException 
: Error parsing WSDL 
     at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerat 
ionEngine.java:156) 
     at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:35) 
     at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:24) 
Caused by: javax.wsdl.WSDLException: WSDLException (at /wsdl:definitions/wsdl:ty 
pes/xsd:schema): faultCode=OTHER_ERROR: An error occurred trying to resolve sche 
ma referenced at 'http://www.w3.org/2005/05/xmlmime', relative to 'file:/D:/Prog 
rammi/axis2-1.4/bin/SOAService.wsdl'.: java.net.ConnectException: Connection tim 
ed out: connect 
     at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(Unknown Source) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.parseSchema(Unknown Source) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.parseTypes(Unknown Source) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) 
     at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source) 
     at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.readInTheWSDLFile(
CodeGenerationEngine.java:288) 
     at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerat 
ionEngine.java:111) 
     ... 2 more 
Caused by: java.net.ConnectException: Connection timed out: connect 
     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.Socket.connect(Socket.java:520) 
     at java.net.Socket.connect(Socket.java:470) 
     at sun.net.NetworkClient.doConnect(NetworkClient.java:157) 
     at sun.net.www.http.HttpClient.openServer(HttpClient.java:388) 
     at sun.net.www.http.HttpClient.openServer(HttpClient.java:523) 
     at sun.net.www.http.HttpClient.<init>(HttpClient.java:231) 
     at sun.net.www.http.HttpClient.New(HttpClient.java:304) 
     at sun.net.www.http.HttpClient.New(HttpClient.java:321) 
     at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLC 
onnection.java:813) 
     at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConne 
ction.java:765) 
     at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection 
.java:690) 
     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLCon 
nection.java:934) 
     at java.net.URL.openStream(URL.java:1007) 
     at com.ibm.wsdl.util.StringUtils.getContentAsInputStream(Unknown Source) 

Podejrzewam, że to z powodu do systemu proxy, który nie pozwala pobrać xsd do narzędzia wsdl2java. W rzeczywistości mogę pobrać plik z przeglądarki bez problemów.

Istnieje opcja określenia serwera proxy dla wsdl2java lub ktoś rozwiązał ten problem? Na razie pobrałem XSD, dodałem go do projektu i zmieniłem WSDL tak, aby zawierał względny plik (zamiast zdalnego), ale wolałbym tego uniknąć, ponieważ plik jest usługą stron trzecich WSDL.

Z góry dziękuję za wszelkie wskazówki.

Odpowiedz

4

myślę, że miał ten sam problem i poniżej jest jak I rozwiązać go za pomocą java -D opcję

java -Dhttp.proxySet=true -Dhttp.proxyHost={value} -Dhttp.proxyPort={value} org.apache.axis.wsdl.WSDL2Java {wsdlURL} 

Zobacz, czy to pomaga. Pozdrawiam

+0

cześć praveena, z 6-miesięcznym opóźnieniem dziękuję za odpowiedź –

1

To rozwiązanie może nie działać tak jak jest to zależne od instalacji użytkownika. Nie ma żadnej wzmianki w rozwiązaniu opcji -Dhttp.nonProxyHosts = {lista hostów do wykluczenia}, która może być wymagana, jeśli serwer działający w sieci jest lokalny i istnieją odniesienia do plików xml hostowanych poza twoim środowiskiem lub jeśli twój serwer proxy jest nie konfiguruje się do odpowiedzi na lokalne żądania.