2010-02-01 12 views
5

Sto provando a generare una classe proxy da un file WSDL locale con eclipse Galileo e l'asse 2 1.4 su windows xp. Il mio problema è che ottengo un errore a causa di uno schema importato all'interno del WSDL. Il tha linea turba me è:WSDLException: si è verificato un errore durante il tentativo di risolvere lo schema di riferimento a

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

Ho cercato di eseguire il WSDL2Java seguente comando:

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

e ottengo la seguente eccezione:

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) 

Ho il sospetto che sia dovuto al proxy di sistema che non consente di recuperare xsd allo strumento wsdl2java. In effetti posso scaricare il file dal browser senza problemi.

C'è un'opzione per specificare un proxy per wsdl2java o qualcuno ha risolto questo problema? Per il momento ho scaricato XSD, l'ho aggiunto al progetto e modificato il WSDL per includere il file relativo (anziché quello remoto), ma preferirei evitare questo, perché il file è un servizio di terze parti WSDL.

Grazie in anticipo per qualsiasi suggerimento.

risposta

4

Penso di aver avuto lo stesso problema e in basso è come ho risolto utilizzando Java -D opzione

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

vedere se ti aiuta. Cordiali saluti

+0

ciao praveena, con 6 mesi di ritardo ti ringrazio per la risposta –

1

Questa soluzione potrebbe non funzionare in base all'installazione dell'utente. Non vi è alcuna menzione nella soluzione dell'opzione -Dhttp.nonProxyHosts = {elenco di host da escludere} che potrebbe essere richiesta se il server che esegue i servizi Web è locale e ci sono riferimenti a file xml ospitati al di fuori del proprio ambiente o se il proprio proxy è non configurato per rispondere alle richieste locali.