WebLogic Web サービス入門

     前  次    新しいウィンドウで目次を開く     
ここから内容の開始

JAX-WS 2.0 Web サービスの実装

以下のトピックでは、JAX-WS 2.0 Web サービスを実装する理由とその方法について説明します。

 


JAX-WS Web サービスの実装 : 概要

Java API for XML-Based RPC (JAX-RPC) 1.1Java API for XML Web Services (JAX-WS) 2.0 は双方とも、このリリースの WebLogic Server でサポートされていますが、WebLogic Web サービスのドキュメントでは、ほぼ JAX-RPC ベースの Web サービスの作成方法のみに絞って説明します。なぜなら、すべての WS-* 仕様 (WS-Security、WS-ReliableMessaging など) および付加価値の高い WebLogic の機能 (非同期の要求と応答、コールバックなど) が、JAX-RPC 形式の Web サービスでのみ有効であるからです。このため、特に JAX-WS Web サービスを作成する必要がある場合を除いて、WebLogic Server で提供されるすべての機能を完全に利用できるよう、JAX-RPC サービスを作成することが前提となっています。ただしこの節では、JAX-WS 2.0 Web サービスを実装する理由とその方法について説明します。

JAX-WS 2.0 に基づく Web サービスを実装する理由としては、次のようなものが挙げられます。

JAX-WS Web サービスの前述の機能のプログラミングに関する、その他のドキュメントおよびサンプルについては、java.net の「JAX-WS 2.0 User's Guide」を参照してください。

 


JAX-WS Web サービスの実装 : ガイドライン

JAX-WS Web サービスの実装は、JAX-RPC Web サービスの実装に類似しており、大部分については、「WebLogic Web サービスの反復的な開発」に記載の手順で実行できます。しかし、下記のように、いくつかの相違点があります。

 


JAX-WS Web サービスの簡単な実装例

以下の節では、JAX-WS Web サービスの簡単な実装例を示します。

JAX-WS Web サービスを実装する JWS ファイルの例

以下の Java ファイルでは、JAX-WS Web サービスの簡単な実装例を示します。

この例では、標準的な @javax.jws.WebService アノテーションを使用して、これが Web サービスであることを宣言し、次に共通の @javax.annotation.Resource アノテーションを使用して、Web サービスのコンテキストを context 変数に注入します。このコンテキストにより、Web サービスの情報 (この場合はサービスを呼び出すプリンシパル ユーザ) に関する情報を取得できます。

package examples.webservices.jaxws;
import javax.jws.WebService;
import javax.xml.ws.WebServiceContext;
import javax.annotation.Resource;
@WebService()
/**
* 簡単な JAX-WS WebLogic Web サービスの基本となる JWS ファイル
*
*/
public class JaxWsImpl {
  @Resource
private WebServiceContext context;
  public String sayHello(String message) {
    String principal = context.getUserPrincipal().getName();
    System.out.println("Hello!Here is the passed=in message: " + message + ".And here is the user principal: " + principal + ".");
    return "Here is the message: '" + message + "'.And here is the user principal: '" + principal + "'."
  }
}

jwsc Ant タスクと clientgen Ant タスクに対する JAX-WS Web サービスの指定

build.xml Ant ビルド ファイルからの以下の抜粋では、jwsc Ant タスクの type 属性を使用して、このタスクがデフォルトの JAX-RPC サービスではなく、JAX-WS Web サービスを生成することを指定する方法を示します。

    <jwsc
srcdir="src"
destdir="${ear-dir}">
      <jws file="examples/webservices/jaxws/JaxWsImpl.java"
type="JAXWS"
/>
    </jwsc>

同様に、以下の clientgen に対する呼び出しでは、タスクが JAX-WS Web サービスの呼び出しに使用されるクライアントサイド アーティファクトを生成することを指定する方法を示します。

<clientgen
type="JAXWS"
wsdl="http://${wls.hostname}:${wls.port}/JaxWsImpl/JaxWsImplService?WSDL"
destDir="${clientclass-dir}"
packageName="examples.webservices.jaxws.client"/>

JAX-WS Web サービス呼び出しの例

以下の簡単なスタンドアロン Java クライアントでは、ここまでの各節で実装された Web サービスを呼び出す方法を示します。

package examples.webservices.jaxws.client;
/**
* JaxWs Web サービスの sayHello オペレーションを呼び出す
* 簡単なスタンドアロンのクライアント アプリケーション
*
* @author Copyright (c) 2004 by BEA Systems. All Rights Reserved.
*/
public class Main {
  public static void main(String[] args) {
    JaxWsImplService service = new JaxWsImplService();
JaxWsImpl port = service.getJaxWsImplPort();
    String result = null;
result = port.sayHello("Hi there!");
System.out.println( "Got result: " + result );
}
}

ページの先頭       前  次