JAX-WS ツールを使用することにより、JavaBeans コンポーネントから開始する際に JAX-WS Web サービスを作成するために必要な、Java 成果物を生成できます。
JavaBeans で開始するボトムアップ・アプローチを使用して JAX-WS Web サービスを作成する際に、 WSDL ファイルを作成する必要はありません。アノテーションの使用により、 サービス・エンドポイントまたはクライアントの構成に必要な WSDL 情報のすべてが提供されます。 Feature Pack for Web Services は WSDL 1.1 文書をサポートします。 この文書は、Web Services-Interoperability (WS-I) Basic Profile 1.1 仕様に準拠し、Document/Literal スタイル文書または RPC/Literal スタイル文書のいずれかです。 さらに、LITERAL という値の USE 属性を宣言する バインディング付き WSDL 文書は、サポートされますが、値 ENCODED ではサポートされません。 Document/Literal ラップ・パターンを実装する WSDL 文書の場合、 ルート・エレメントは XML スキーマ内に宣言され、メッセージ・フローのオペレーション・ラッパーとして使用されます。 要求と応答の両方に、別個のラッパー・エレメント定義が存在します。
/* This is a sample EchoServicePortTypeImpl.java file. */ package com.ibm.was.wssample.echo; @javax.jws.WebService(serviceName = "EchoService", endpointInterface = "com.ibm.was.wssample.echo.EchoServicePortType", targetNamespace="http://com/ibm/was/wssample/echo/", portName="EchoServicePort") public class EchoServicePortTypeImpl implements EchoServicePortType { public EchoServicePortTypeImpl() { } public String invoke(String obj) { System.out.println(">> JAXB Provider Service: Request received.\n"); String str = "Failed"; if (obj != null) { try { str = obj; } catch (Exception e) { e.printStackTrace(); } } return str; } }
/* This is a sample EchoServicePortType.java file. */ package com.ibm.was.wssample.echo; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.xml.ws.RequestWrapper; import javax.xml.ws.ResponseWrapper; @WebService(name = "EchoServicePortType", targetNamespace = "http://com/ibm/was/wssample/echo/", wsdlLocation="WEB-INF/wsdl/Echo.wsdl") public interface EchoServicePortType { /** * * @param arg0 * @return * returns java.lang.String */ @WebMethod @WebResult(name = "response", targetNamespace = "http://com/ibm/was/wssample/echo/") @RequestWrapper(localName = "invoke", targetNamespace = "http://com/ibm/was/wssample/echo/", className = "com.ibm.was.wssample.echo.Invoke") @ResponseWrapper(localName = "echoStringResponse", targetNamespace="http://com/ibm/was/wssample/echo/", className = "com.ibm.was.wssample.echo.EchoStringResponse") public String invoke( @WebParam(name = "arg0", targetNamespace = "http://com/ibm/was/wssample/echo/") String arg0); }
app_server_root¥bin¥wsgen.bat -wsdl -s c:¥generated_source¥ -cp c:¥my_application¥classes¥ com.ibm.was.wssample.echo.EchoServicePortTypeImpl -verbose -d c:¥generated_artifacts¥
. ./setupCmdLine.sh (ピリオド間のスペースに注意してください。)wsgen コマンドを実行します。
app_server_root/bin/wsgen.sh -wsdl -s c:/generated_source/ -cp c:/my_application/classes/ com.ibm.was.wssample.echo.EchoServicePortTypeImpl -verbose -d c:/generated_artifacts/
/generated_source/com/ibm/was/wssample/echo/EchoStringResponse.java /generated_source/com/ibm/was/wssample/echo/Invoke.java /generated_artifacts/EchoService.wsdl /generated_artifacts/EchoService_schema1.xsd /generated_artifacts/com/ibm/was/wssample/echo/EchoStringResponse.class /generated_artifacts/com/ibm/was/wssample/echo/Invoke.class
EchoStringResponse.java ファイルと Invoke.java ファイルは、 生成された Java クラス・ファイルです。生成された Java ファイルのコンパイル済みバージョンは、 EchoStringResponse.class ファイルと Invoke.class ファイルです。 -wsdl オプションを指定したため、EchoService.wsdl ファイルと EchoService_schema1.xsd ファイルが生成されています。