0

サードパーティによって公開された SOAP サービスを使用することになっています。次の 2 つの基本的な質問があります。

Q1. WSDL にブラウザからアクセスするには、基本認証が必要です。クライアントをwsgen/WSDL2JAVA/使用してクライアントjarを作成しようとすると、. WSDL をダウンロードしてローカルに保存してから使用すると、Eclipse WebserviceHTTP 401 unauthorisedaxis's WSDL2JAVA


Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException: Error parsing WSDL
    at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerationEngine.java:178)
    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: faultCode=PARSER_ERROR: Problem parsing 'file:/C:/TEST/TOOLS/Authentication.wsdl'.: org.xml.sax.SAXParseException: The prefix "wsdl" for element "wsdl:definitions" is not bound.
    at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(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:320)
    at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.<init>(CodeGenerationEngine.java:133)
    ... 2 more
Caused by: org.xml.sax.SAXParseException: The prefix "wsdl" for element "wsdl:definitions" is not bound.
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
    ... 7 more

Q2. 頻繁に変更される WSDL をどのように処理しますか? クライアント jar を毎回生成してアプリケーションを再デプロイしますか?

私が作成するのを助けるための指針はclient.jar素晴らしいでしょう。

4

2 に答える 2

0

WSDL を変更するたびに、必ず client.jar を再デプロイする必要があります。

これをお勧めします。

  1. wsdl からクラスを生成する jar プロジェクトを作成します。たとえば、cxf-codegen-plugin wsdl2java を確認します。
  2. 以前のプロジェクトを参照する別の jar プロジェクト (Client.jar) を作成します。

したがって、WSDL を変更するたびに、プロジェクト内の WSDL URL を変更してから、両方の jar プロジェクトをビルドして Client.jar を作成する必要があります。Client.jar の内部または外部で、WSDL URL を設定可能なプロパティ値として使用して維持することをお勧めします。

お役に立てれば。

于 2012-12-24T20:45:08.093 に答える
0

wsdl ファイルで、xmlns:wsdl 属性の「<"wsdl:definitions">」タグを確認します。これが欠落している場合、次のエラーがスローされます。

「org.xml.sax.SAXParseException: The prefix "wsdl" for element "wsdl:definitions" is not bound」は、投稿したエラー概要の 5 行目にあります。

以下の例では、プレフィックスが xmlns (xml 名前空間) 属性によって定義されていることがわかります。

<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:ns1="http://org.apache.axis2/xsd" 
xmlns:ns="http://pojo.service.quickstart.samples" 
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
targetNamespace="http://pojo.service.quickstart.samples">

ここで xml 名前空間の仕組みを確認してください: http://www.w3schools.com/xml/xml_namespaces.asp

于 2014-01-16T19:55:51.940 に答える