2010-02-01 6 views
5

Ich versuche, eine Proxy-Klasse aus einer lokalen WSDL-Datei mit Eclipse Galileo und Achse 2 1.4 auf Windows XP zu generieren. Mein Problem ist, dass ich einen Fehler aufgrund eines importierten Schemas in der WSDL erhalte. Die Linie tha stört mich ist:WSDLException: Fehler beim Versuch, Schema referenziert auf

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

Ich habe versucht, den wsdl2java folgenden Befehl auszuführen:

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

und ich erhalte die folgende Ausnahme:

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) 

Ich vermute, es ist wegen an den System-Proxy, der das xsd nicht an das wsdl2java-Tool abruft. In der Tat kann ich die Datei aus dem Browser ohne Probleme herunterladen.

Es gibt eine Option, um einen Proxy für wsdl2java anzugeben, oder jemand hat dieses Problem gelöst? Im Moment habe ich die XSD heruntergeladen, sie dem Projekt hinzugefügt und die WSDL so geändert, dass sie die relative Datei enthält (anstelle der entfernten Datei), aber ich würde dies lieber vermeiden, weil die Datei ein Dienst von Drittanbietern ist WSDL.

Vielen Dank im Voraus für einen Hinweis.

Antwort

4

Ich glaube, ich hatte das gleiche Problem und unten ist, wie ich es java gelöst -D Option

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

Sehen Sie, wenn es Ihnen hilft. Grüße

+0

hi praveena, mit 6 Monaten Verzögerung danke ich Ihnen für Ihre Antwort –

1

Diese Lösung funktioniert möglicherweise nicht je nach der Installation des Benutzers. Es gibt keine Erwähnung in der Lösung der Option -Dhttp.nonProxyHosts = {Liste der auszuschließenden Hosts}, die erforderlich sein kann, wenn der Server, auf dem die Webdienste ausgeführt werden, lokal ist und Verweise auf xml-Dateien außerhalb Ihrer Umgebung gehostet werden nicht eingerichtet, um lokale Anfragen zu beantworten.