Java JDK wsimport.exe wsdlファイルからクラスファイルを生成
7822 ワード
目次
wsimportの概要
wsimport使用例
サービス側
クライアント
テストの呼び出し
wsimportの概要
1、Java JDKのbinフォルダの下にwsimport.exeツールがあり、wsdlファイルに基づいて対応するクラスファイルを生成し、生成したクラスファイルを使用する必要があるプロジェクトにコピーすることで、ローカルのクラスを呼び出すようにwebServiceが提供する方法を呼び出すことができます.
2、wsimport.exeツールは、C#、.netなどの言語で作成されたWebServiceサービス側のようなJava以外のwebServiceサーバに使用でき、wsdlファイルを入手すればwsimportによってJavaクライアント実装を生成することができる.
3、コンピュータ上にJava JDKの環境変数が配置されている限り、任意のディレクトリの下でcmdウィンドウを使用してwsimportコマンドを実行することができ、以下に示すようにコマンドのフォーマット、およびパラメータ、使用例などを見ることができる.
一般的なコマンドは次のとおりです.
-keep:javaソースファイルを生成するかどうか、つまり.classファイルを生成すると同時に.javaソースファイルも生成されます.-d:.classファイルの出力ディレクトリを指定します.このディレクトリは存在する必要があります.-s:.javaファイルの出力ディレクトリを指定します.指定しない場合、デフォルトは-dで設定されたパスと一致します.-p:生成クラスのパッケージ名を定義します.指定しない場合は元と一致します.-verbose:コンソールに出力情報を表示します.-b:jaxws/jaxbバインドファイルまたは追加のschemas-extensionを指定します.拡張を使用してSOAP 1.2をサポートします.
wsimport使用例
「JWS(Java Web Service)の最初のケース入門」のウェブサービスクライアントは、サービス側と同じインタフェースを直接書いているので、社内や仲の良いパートナーが開発者を探してウェブサービスが提供するインタフェースのソースコードを直接取得してもだめではなく、lowのように見えますが、一つの方法です.
サービス側
Java JDKが提供するwsimportツールを使用して、サービス側が提供するwsdlファイルに基づいてクラスファイルを直接生成し、サービス業者がwsdlアドレスを提供すれば、自分で黙ってクラスファイルを生成して呼び出すことができます.
この例では、「JWS(Java Web Service)の最初のケース入門」の「wsサービス側」をウェブサービスのサービス側として使用しているので、コードの貼り付けを繰り返すことはありません.
WebServiceサービスを開始するには、次の手順に従います.
クライアント
「JWS(Java Web Service)の最初のケース入門」の「クライアント」プロジェクトで書き換え、CalculatorServiceファイルを削除し、wsimport.exeで生成します.
1、使用コマンドは以下のとおりです.E:/wmx/webserviceディレクトリは生成したファイルを保存するために使用されます.事前に作成する必要があります.
2、コマンドの実行に成功した後、生成されたファイルの内容は以下の通りである.
以下にインタフェースの実装クラスも生成する CalculatorServiceImplServices.java(名前はサービス側より後ろのサービスが追加されています)ですが、その内容はウェブサービス側とは全く異なり、ソースコードの漏洩の心配はありません.
生成されたCalculatorServices.javaインタフェースの内容はほぼサーバと一致しており、インタフェースのメソッド名は必ず同じであり、他にも大きな内容が一致していないものがあります.
上記のように、サービス側は外部に1つのインタフェースしか提供していません. CalculatorServiceとその実装クラス CalculatorServiceImplですが、wsimport.exeコマンドはこんなに多くのファイルを生成します.
よく見るとAddition、Multiplicationはそれぞれサービス側CalculatorService インタフェースでは、加算関数、乗算関数を定義します.
クライアントが使用する必要があるのは Addition.java、AdditionResponse.java、Multiplication.java、MultiplicationResponse.java、CalculatorServices.java、および ObjectFactory.javaファイル.インタフェースの実装クラスや他のクラスはインポートしなくてもよいし、もちろんすべてインポートしてもエラーはありません.
デプロイフェーズでは、上の.classファイルを直接使用してもいいです.
生成されたファイルをインポートするには、上記のようにします. Web_サービスクラスはウェブサービスを呼び出すために使用され、「JWS(Java Web Service)の最初のケース入門」のコードと完全に一致しています.ここでもう一度貼り付けます.内容は次のとおりです.
テストの呼び出し
「JWS(Java Web Service)の最初のケース入門」と完全に一致し、呼び出しに成功しました.
特別説明
クライアントがwsimport.exeで生成したクラスをすべてインポートする場合、主にサービス側インタフェースの実装クラス、すなわち上のクラスを指す. CalculatorServiceImplServicejavaは、クライアントがサービス・エンド・メソッドを呼び出す場合にも、次のように使用できます.
wsimportの概要
wsimport使用例
サービス側
クライアント
テストの呼び出し
wsimportの概要
1、Java JDKのbinフォルダの下にwsimport.exeツールがあり、wsdlファイルに基づいて対応するクラスファイルを生成し、生成したクラスファイルを使用する必要があるプロジェクトにコピーすることで、ローカルのクラスを呼び出すようにwebServiceが提供する方法を呼び出すことができます.
2、wsimport.exeツールは、C#、.netなどの言語で作成されたWebServiceサービス側のようなJava以外のwebServiceサーバに使用でき、wsdlファイルを入手すればwsimportによってJavaクライアント実装を生成することができる.
3、コンピュータ上にJava JDKの環境変数が配置されている限り、任意のディレクトリの下でcmdウィンドウを使用してwsimportコマンドを実行することができ、以下に示すようにコマンドのフォーマット、およびパラメータ、使用例などを見ることができる.
C:\Users\Administrator.SC-201707281232>wsimport
WSDL_URI
: wsimport [options]
\ [options] :
-b jaxws/jaxb
( -b)
-B JAXB
-catalog
TR9401, XCatalog OASIS XML 。
-d
-encoding
-extension -
。
-help
-httpproxy:: HTTP ( 8080)
-keep
-p
-quiet wsimport
-s
-target JAXWS
2.2, 2.0, 2.1 2.2
, 2.0 JAXWS 2.0
-verbose
-version
-wsdllocation @WebServiceClient.wsdlLocation
-clientjar Artifact jar
Web WSDL 。
-generateJWS JWS
-implDestDir JWS
-implServiceName JWS
-implPortName JWS
\ :
-XadditionalHeaders
Java
-Xauthfile :
http://username:[email protected]/stock?wsdl
-Xdebug
-Xno-addressing-databinding W3C EndpointReferenceType Java
-Xnocompile Java
-XdisableAuthenticator JAX-WS RI ,
-Xauthfile ( )
-XdisableSSLHostnameVerification wsdl SSL
\ :
wsimport stock.wsdl -b stock.xml -b stock.xjb
wsimport -d generated http://example.org/stock?wsdl
C:\Users\Administrator.SC-201707281232>
一般的なコマンドは次のとおりです.
wsimport -keep -d D:\temp\d -s D:\temp\s -p com.map -verbose http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl
-keep:javaソースファイルを生成するかどうか、つまり.classファイルを生成すると同時に.javaソースファイルも生成されます.-d:.classファイルの出力ディレクトリを指定します.このディレクトリは存在する必要があります.-s:.javaファイルの出力ディレクトリを指定します.指定しない場合、デフォルトは-dで設定されたパスと一致します.-p:生成クラスのパッケージ名を定義します.指定しない場合は元と一致します.-verbose:コンソールに出力情報を表示します.-b:jaxws/jaxbバインドファイルまたは追加のschemas-extensionを指定します.拡張を使用してSOAP 1.2をサポートします.
wsimport使用例
「JWS(Java Web Service)の最初のケース入門」のウェブサービスクライアントは、サービス側と同じインタフェースを直接書いているので、社内や仲の良いパートナーが開発者を探してウェブサービスが提供するインタフェースのソースコードを直接取得してもだめではなく、lowのように見えますが、一つの方法です.
サービス側
Java JDKが提供するwsimportツールを使用して、サービス側が提供するwsdlファイルに基づいてクラスファイルを直接生成し、サービス業者がwsdlアドレスを提供すれば、自分で黙ってクラスファイルを生成して呼び出すことができます.
この例では、「JWS(Java Web Service)の最初のケース入門」の「wsサービス側」をウェブサービスのサービス側として使用しているので、コードの貼り付けを繰り返すことはありません.
WebServiceサービスを開始するには、次の手順に従います.
クライアント
「JWS(Java Web Service)の最初のケース入門」の「クライアント」プロジェクトで書き換え、CalculatorServiceファイルを削除し、wsimport.exeで生成します.
1、使用コマンドは以下のとおりです.E:/wmx/webserviceディレクトリは生成したファイルを保存するために使用されます.事前に作成する必要があります.
wsimport -d E:/wmx/webservice -keep -verbose http://192.168.1.20:3333/web_server/calculator?wsdl
2、コマンドの実行に成功した後、生成されたファイルの内容は以下の通りである.
以下にインタフェースの実装クラスも生成する CalculatorServiceImplServices.java(名前はサービス側より後ろのサービスが追加されています)ですが、その内容はウェブサービス側とは全く異なり、ソースコードの漏洩の心配はありません.
生成されたCalculatorServices.javaインタフェースの内容はほぼサーバと一致しており、インタフェースのメソッド名は必ず同じであり、他にも大きな内容が一致していないものがあります.
上記のように、サービス側は外部に1つのインタフェースしか提供していません. CalculatorServiceとその実装クラス CalculatorServiceImplですが、wsimport.exeコマンドはこんなに多くのファイルを生成します.
よく見るとAddition、Multiplicationはそれぞれサービス側CalculatorService インタフェースでは、加算関数、乗算関数を定義します.
クライアントが使用する必要があるのは Addition.java、AdditionResponse.java、Multiplication.java、MultiplicationResponse.java、CalculatorServices.java、および ObjectFactory.javaファイル.インタフェースの実装クラスや他のクラスはインポートしなくてもよいし、もちろんすべてインポートしてもエラーはありません.
デプロイフェーズでは、上の.classファイルを直接使用してもいいです.
生成されたファイルをインポートするには、上記のようにします. Web_サービスクラスはウェブサービスを呼び出すために使用され、「JWS(Java Web Service)の最初のケース入門」のコードと完全に一致しています.ここでもう一度貼り付けます.内容は次のとおりです.
import com.lct.web_service.CalculatorService;
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Logger;
/**
* Created by Administrator on 2019/1/25 0025.
*/
public class Web_service {
//
public static final Logger logger = Logger.getGlobal();
public static void main(String[] args) {
try {
/** url:webservice , "?wsdl"*/
URL url = new URL("http://192.168.1.20:3333/web_server/calculator?wsdl");
/** QName XML ,QName URI、 。
* QName(final String namespaceURI, final String localPart): URI QName 。
* xml , :
*
*/
QName qName = new QName("http://web_service.lct.com/", "CalculatorServiceImplService");
/**
* Service Web
* Service :1、 ,2、 javax.xml.ws.Dispatch 。
* create(java.net.URL wsdlDocumentLocation,QName serviceName): Service 。
* wsdlDocumentLocation : WSDL URL
* serviceName : QName
*/
Service service = Service.create(url, qName);
/**
* getPorts /
* getPort(Class serviceEndpointInterface):
* serviceEndpointInterface:
*/
CalculatorService calculatorService = service.getPort(CalculatorService.class);
float added = calculatorService.addition(100, 80);
float multied = calculatorService.multiplication(2.5F, 100);
logger.info("added:" + added);
logger.info("multied:" + multied);
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
テストの呼び出し
「JWS(Java Web Service)の最初のケース入門」と完全に一致し、呼び出しに成功しました.
特別説明
クライアントがwsimport.exeで生成したクラスをすべてインポートする場合、主にサービス側インタフェースの実装クラス、すなわち上のクラスを指す. CalculatorServiceImplServicejavaは、クライアントがサービス・エンド・メソッドを呼び出す場合にも、次のように使用できます.
CalculatorServiceImplService calculatorServiceImplService = new CalculatorServiceImplService();
CalculatorService calculatorService = calculatorServiceImplService.getCalculatorServiceImplPort();
float added = calculatorService.addition(100,80);
float multied = calculatorService.multiplication(2.5F,100);