2017-02-07 8 views
0

複数のWSDLファイルからAxis2(v1.6.1)Webサービスクライアントコードを生成して、1つのプロジェクト内に複数のWebサービスクライアントを作成しようとしています。私はAntを使ってcodegenタスクを使ってソースコードを生成しています。カスタムパッケージでAxis2ソースコードを生成する方法

したがって、クラッシュを避けるために、各Webサービスクライアントのコードを別のものから離しておくために、カスタム名前空間を使用してマッピングをパッケージ化する必要があります。

は、ここでは一例WSDLファイルから名前空間です:私は、適切なパッケージに生成されたコードの本体を得ることができた

<wsdl:definitions targetNamespace="http://www.elster-eis.com/ImportExport" 
    xmlns:tns="http://www.elster-eis.com/ImportExport" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" 
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"> 
<wsdl:types> 

。私はsoapenc名前空間をカスタムパッケージで生成することができました。しかし、org\w3\www\_2004\_06\xmlmimeで生成しているコードを自分のカスタムパッケージのディレクトリ構造に入れることができません。ここで

は私のAntビルドファイルの関連部分です:

<property name="srv.pkg" value="com.company.webservice.mas" /> 

<property name="srv.mappings" value="http://www.elster-eis.com/ImportExport=${srv.pkg},http://www.w3.org/2001/XMLSchema=${srv.pkg}.xsd,http://schemas.xmlsoap.org/wsdl/soap/=${srv.pkg}.soap,http://microsoft.com/wsdl/mime/textMatching/=${srv.pkg}.tm,http://schemas.xmlsoap.org/soap/encoding/=${srv.pkg}.soapenc,http://schemas.xmlsoap.org/wsdl/mime/=${srv.pkg}.mime,http://schemas.xmlsoap.org/wsdl/soap12/=${srv.pkg}.soap12,http://schemas.xmlsoap.org/wsdl/http/=${srv.pkg}.http,http://schemas.xmlsoap.org/wsdl/=${srv.pkg}.wsdl" /> 

<target name="build.source" depends="define.tasks"> 
    <codegen 
     wsdlfilename="${srv.wsdl}" 
     packageName="${srv.pkg}" 
     databindingName="xmlbeans" 
     output="." 
     generateAllClasses="true" 
     serverside="true" 
     generateservicexml="true" 
     testcase="true" 
     namespaceToPackages="${srv.mappings}" 
    /> 
</target> 

そして、ここでは読みやすさのために再度マッピングをパッケージする名前空間だ(彼らはカンマで区切られた単一のライン、スペースなしですべてです、 )Antビルドファイル内:

http://www.elster-eis.com/ImportExport= $ {} srv.pkg、

http://www.w3.org/2001/XMLSchema= $ {} srv.pkgの.xsd、

http://schemas.xmlsoap.org/wsdl/soap/= $ {srv.pkg} .soap、

http://microsoft.com/wsdl/mime/textMatching/= $ {srv.pkg}(商標)、

http://schemas.xmlsoap.org/soap/encoding/= $ {srv.pkg} .soapenc、

http://schemas.xmlsoap.org/wsdl/mime/= $ {srv.pkg } .mime、

http://schemas.xmlsoap.org/wsdl/soap12/= $ {srv.pkg} .soap12、

http://schemas.xmlsoap.org/wsdl/http/= $ {srv.pkg} .http、

http://schemas.xmlsoap.org/wsdl/= $ {} srv.pkgの.wsdl」

私は$ {} srv.pkg構造の下で生成するために、すべての生成されたコードを取得しようとしているが、org.w3コードはまだ、独自の下で生成ディレクトリ構造と私の名前空間マッピングは無視されています。

ここで私は間違っていますか?

+0

あなたは軸が正しくないと、あなたのクラスを生成することを意味しますかパッケージの命名または間違ったディレクトリにありますか? – Andremoniy

+0

@Andremoniy両方。それらはorg/w3などのディレクトリにあり、パッケージはその構造に関して同等のものを持っています。 – ManoDestra

+0

ビルドを実行する前に以前に生成されたソースコードを削除しようとしましたか? – Andremoniy

答えて

0

私はついにそれを稼働させました。私は、生成されたソースファイルの内容を調べ、ファイルが生成された実際の名前空間を記述していることがわかりました。だから、私はちょうど私のマッピングにその名前空間(http://www.w3.org/2004/06/xmlmime)を追加し、今は正常に動作します。

だから、最終的に運用名前空間マッピングは、以下のとおりです。生成されたソースは、今、そのヘッダでこれを示し、ことを行った後

<property name="srv.mappings" value="http://www.elster-eis.com/ImportExport=${srv.pkg},http://www.w3.org/2004/06/xmlmime=${srv.pkg}.xmlmime,http://schemas.xmlsoap.org/soap/encoding/=${srv.pkg}.soapenc" /> 

/* 
* An XML attribute type. 
* Localname: contentType 
* Namespace: http://www.w3.org/2004/06/xmlmime 
* Java type: com.csa.webservice.mas.xmlmime.ContentTypeAttribute 
* 
* Automatically generated - do not modify. 
*/ 
package com.csa.webservice.mas.xmlmime; 
関連する問題