2.2. Webサービスの作成

2.2.1. Webサービス作成ウィザードについて

WebOTX DeveloperのWebサービス作成ウィザードを使うと、とても簡単にJava EE 6に対応したWebサービスを開発することができます。ここでは、WebOTX Developerが提供するWebサービスの開発機能である「Webサービス作成ウィザード」と、その関連機能について詳しく説明します。
2.2.1.1. Webサービス作成ウィザードを使用する前に
Webサービス作成ウィザードを使用する前に次の設定をご確認下さい。
JREの設定
WebOTX Developer’s Studioのメニュー ウインドウ > 設定を選択すると、 設定ダイアログが起動します。
設定ダイアログでJava > インストール済みのJREを選択すると、インストール済みのJREページが表示します。
インストール済みのJREページで、「1.5」バージョン以上のJDKを選択。

JREの設定 インストール済みのJRE 「1.5」バージョン以上のJDK 選択

WebOTX Developer’s Studioのメニュー ウインドウ > 設定 を選択すると、 設定ダイアログが起動します。
設定ダイアログでJava > コンパイラーを選択すると、コンパイラーページが表示します。
コンパイラーページで、コンパイラー準拠レベルは「1.5」以上を選択。

JREの設定 コンパイラー コンパイラー準拠レベル 「1.5」以上 選択

WebOTXアプリケーションサーバのインストール
デフォルトランタイムの確認
デフォルトランタイムは設定されているかを確認します。WebOTX Developer’s Studioのメニュー ウインドウ > 設定を選択すると、 設定ダイアログが起動します。
設定ダイアログで サーバー > ランタイム環境 を選択すると、 サーバー・ランタイム環境 ページが表示します。

設定ダイアログ サーバー・ランタイム環境

サーバー・ランタイム環境 ページで、WebOTX Application Server v9(Local Default)が設定されているかを確認できます。
ランタイムの設定
デフォルトランタイムが設定されていない場合、ランタイムを設定する必要があります。
WebOTX Developer’s Studioのメニュー ウインドウ > 設定を選択すると、 設定ダイアログが起動します。
設定ダイアログで サーバー > ランタイム環境 を選択すると、 サーバー・ランタイム環境 ページが表示します。

設定ダイアログ サーバー・ランタイム環境 追加

サーバー・ランタイム環境 ページで、追加 をクリックし、新規サーバー・ランタイム環境ダイアログが起動します。  
新規サーバー・ランタイム環境ダイアログで NEC > WebOTX Application Server(Local)を選択して、次へ をクリックすると、 WebOTX サーバランタイムの新規作成ダイアログが表示します。

新規サーバー・ランタイム環境 WebOTX Application Server(Local) 選択

WebOTX サーバランタイムの新規作成ダイアログでランタイムのJREのバージョンは「1.6」以上を選択。 WebOTXサーバーのインストールパスはWebOTXのインストールパスを指定します。
完了をクリック。

WebOTX サーバランタイムの新規作成 JREのバージョン 「1.6」以上 選択

自動的にビルドの設定
WebOTX Developer’s Studioのメニュー プロジェクト > 自動的にビルドをチェックします。

プロジェクト 自動的にビルド チェック

Webサービス作成ウィザードの起動
Webサービス作成ウィザードの起動方法は二つあります。
新規ダイアログ
WebOTX Developer’s Studioのメニュー ファイル > 新規 > その他を選択すると、 新規ダイアログが起動します。
Webサービス作成ウィザードを開始するには、Web サービス > Web サービス(JAX-WS/JAX-RPC)を選択し、次へをクリック。

新規 その他 新規ダイアログ

ポップアップメニュー
動的Webプロジェクトまたは EJB プロジェクトを選択し、WebOTX Developer’sStudioの右クリックメニュー Web サービス > JAX-WS/JAX-RPC Web サービスの生成を選択すると、Webサービスダイアログが起動します。

Web サービス JAX-WS/JAX-RPC Web サービスの生成

Memo
選択したプロジェクトのプロジェクト名とロケーションがWebサービスダイアログに表示されます。



2.2.2. JAX-WS(Webサービス作成ウィザード)

Webサービス作成ウィザードを使用したJAX-WSに準拠したWebサービスの作成方法について説明します。
Webサービス
プロジェクト名にWebサービスを生成するプロジェクトの名前を指定します。カレントワークスペースにある既存プロジェクトまたは新規に作成するプロジェクト名を指定できます。プロジェクトは、デフォルトでは
<WebOTX_DIR>\Studio\workspace\指定したプロジェクト名
というフォルダに作成されます。もし、別の場所に作成したい場合は、デフォルトロケーションの使用 をOFFにして、任意の場所を絶対パスで指定します。
Webサービス仕様「JAX-WS」を選択。
新規に作成 を選択。
以上の設定を終了したら、次へ をクリック。

Web サービス(JAX-WS/JAX-RPC) webサービス仕様 JAX-WS 選択

既存のプロジェクトを指定している場合、下記の点をご注意ください。

Caution
指定したプロジェクトにウィザードで作成したWebサービスが既に存在している場合、Webサービスを生成することができません。

Caution
プロジェクトには動的Webプロジェクトと EJB プロジェクトのみを指定できます。

Caution
JAX-WS準拠のWebサービスを生成するには、Java コンパイラは 6.0 以上が必要になります。プロジェクトの右クリックメニュー プロパティをクリックして、プロパティダイアログで以下の三つ設定を確認してください。
1.JAVAのビルド・パス > ライブラリ ページでJREのバージョンは1.6以上です。
2.JAVAコンパイラーページでコンパイラー準拠レベルは6.0以上です。
3.Project FacetsページでJavaのfacetバージョンは1.6以上を確認してください。

Memo
プロジェクト名に含めてはいけない文字を含めると、エラーメッセージが表示されます。

Memo
<WebOTX_DIR>はWebOTXのインストールルートディレクトリのことです。

Webサービスの基本設定
Webサービスを作成するための最も基本的な情報を指定します。すべて設定が終了したら、 次へをクリック。

Webサービスの基本設定 Webサービス名 入力

設定項目
設定内容
Webサービス名
Webサービス名を英数字とアンダーバーを使用して指定します。
Webサービスの属する名前空間URI
省略可能。
Webサービスの存在する名前空間をURI(URL、URN)形式で指定します。http:やurn:などのスキームに続けて任意の名前を指定します。
(入力例)
urn:webotx.nec.com
http://www.nec.com/webotx

Caution
Webサービスの属する名前空間URIの値に基づいてパッケージを生成するため、長すぎる名前空間名を指定すると、全体のファイルパス長がWindowsOSの制限となる256文字を超えることがあります。

Memo
Webサービス名は、Webサービス作成時にクラス名として使用するため、Javaの識別子の規則に従っていないとエラーメッセージが表示されます。

Memo
名前空間は、Webサービスが存在する空間の名前のことです。Javaのパッケージ名に相当します。

Memo
URIは、ウェブ上でリソースを識別する手段で、スキームに続けて名前を指定する形式です。http:、mailto:、urn:などのスキームはよく知られたところでしょう。詳細は、「URI」でウェブ検索してください。

Webサービスの実装形式選択
Webサービスを実装する形式を選択します。選択したら、次へ をクリック。

Web サービス(JAX-WS/JAX-RPC) 実装形式 選択

Memo
Webアプリケーション を選択した場合、動的Webプロジェクトを生成します。EJB を選択した場合、EJB プロジェクトを生成します。

ここでWebサービスの作成を開始できます
この画面が出たら、Webサービスを作成するための最低限の設定は終わったことを表します。 完了 をクリックすると、Webサービスの作成を開始します。 次へ をクリックすると、詳細設定の画面に移ります。

Web サービス(JAX-WS/JAX-RPC) Web サービス 作成開始

詳細設定
詳細設定を行う画面です。
SOAPメッセージ形式の選択
SOAPエンジンが作成するSOAPメッセージの形式をRPC/literalDocument/literal/wrapped、Document/literal/bareから選択。
完了 をクリックすると、Webサービスの作成を開始します。

Web サービス(JAX-WS/JAX-RPC) 詳細設定

Webサービスロジックの実装
ウィザードでのWebサービスの生成が成功すると、Webサービス名 に指定した値のクラスが生成されます。
生成されたクラスに public 属性のメソッドで Webサービスのロジックを記述してください。

プロジェクト・エクスプローラー 生成されたクラス

Memo
ロジックを作成する際に、アノテーション エディタを使用するとアノテーションの入力が簡単に行えます。アノテーションエディタについては、 [ 開発環境の構築(WebOTX Developer) > アノテーション定義支援ツール ] を参照して下さい。

以上でJAX-WS準拠のWebサービスの作成は終了です。作成したWebサービスアプリケーションの配備については、[Webサービスのデプロイ]を参照してください。
2.2.2.1.
ここでは、JAX-WS準拠のWebサービスを生成した場合の 動的Webプロジェクトの内容について説明します。
■settingsフォルダ
settingsフォルダにプロジェクトのFacetファイルが格納されます。
プロジェクトのXMLファイル「wizard.xml」がここに生成されます。
Webサービスの動作に必要な各種ソースコードが生成されます。基本構成は次の通りです。
新規に作成のWebサービス
クラス名
役割
Webサービス名
サービスエンドポイントクラスです。
WSDL から作成のWebサービス
クラス名
役割
WSDLファイルの定義によりクラス名
Webサービスインタフェースに必要な各種ソースコードです。
Webサービス名Impl
サービスエンドポイントクラスです。
■WebContent\WEB-INFフォルダ
web.xmlとnec-jaxws.xmlファイルが生成されます。
■WebContent\WEB-INF\wsdl フォルダ
WSDLファイルからWebサービスを作成する時、WSDLファイルが生成されます。
2.2.2.2.
ここでは、JAX-WS準拠のWebサービスを生成した場合のEJB プロジェクトの内容について説明します。
■settingsフォルダ
settingsフォルダにプロジェクトのFacetファイルが格納されます。
プロジェクトのXMLファイル「wizard.xml」がここに生成されます。
■build\classesフォルダ
build\classesフォルダにあるソースコードをビルドした結果が格納されます。
■ejbModuleフォルダ
Webサービスの動作に必要な各種ソースコードが生成されます。基本構成は[動的Webプロジェクト - Webサービス(JAX-WS)]の[srcフォルダ]を参照してください。
■ejbModule\META-INFフォルダ
MANIFEST.MFファイルが生成されます。
2.2.2.3.
ここでは、[JAX-WS(Webサービス作成ウィザード)]で作成したプロジェクトを元にWSDLファイルの生成方法について説明します。
WSDLファイルを生成する前に
メニュー ウィンドウ > 設定 を選択すると、設定ダイアログが起動されます。WebOTX > Webサービス > JAX-WS構成 を選択し、JAX-WS構成の画面が表示されます。

設定 WebOTX Webサービス JAX-WS構成

ソースファイル、クラスファイルを削除しないをONにした場合、WSDLファイルと同時に生成されたソースファイルは削除されません。
ソースファイル、クラスファイルを削除しないをOFFにした場合、WSDLファイルと同時に生成されたソースファイルは削除されます。
ポップアップメニュー
[JAX-WS(Webサービス作成ウィザード)]で作成したプロジェクトを選択し、WebOTX Developer’sStudioの右クリックメニュー Web サービス > WSDLファイル生成を選択すると、WSDLファイルを生成します。

Web サービス WSDLファイル生成

WSDLファイル(例:HelloService.wsdl)とスキーマファイル(例:HelloService_schema1.xsd)が生成されます。
動的Webプロジェクト
動的Webプロジェクト場合、WSDLファイルの位置は下記の通りです。
「/WebContent/WEB-INF/wsdl」

動的Webプロジェクト WSDLファイルの位置

EJB プロジェクト
EJBプロジェクト場合、WSDLファイルの位置は下記の通りです。
「/ejbModule/META-INF/wsdl」

EJBプロジェクト WSDLファイルの位置

Memo
以下の状況でwsgenツールを実行すると、「Class not found」エラーが発生する可能性があります。
1. 選択したプロジェクトのパッケージ名はwizard.xmlから取得したパッケージ名と一致しない。(例:プロジェクトのパッケージ名を変更したことがあります。)
2. 選択したプロジェクトのwizard.xmlからパッケージ名を取得できず、且つプロジェクトのパッケージ名はデフォルトパッケージ名と一致しない。(例:V9.xで生成したプロジェクトをデフォルトパッケージの違いワークスペースにインポートした。)
        ※ デフォルトパッケージは[パッケージ名変更の設定]を参照してください。
wizard.xmlを以下のように修正することで解決できます。

wizard.xmlファイルの修正方法
<?xml version="1.0" encoding="UTF-8"?>
<webservice version="2.0" xmlns="http://www.nec.co.jp/WebOTX/webservice/director" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.nec.co.jp/WebOTX/webservice/director/wizard.xsd">
  <server>
  ......
    <setting name="WebservicePackage" value="パッケージ名"/>
  ......
</server>
</webservice>
※パッケージ名はプロジェクトのパッケージです。(例:sample.hello.helloservice)

Caution
WSDLを生成するためには、Webサービスクラスの *.class ファイルが必要です。自動ビルドを OFF にしている場合など、*.class が無い場合は実行できませんので 予めビルドして下さい。

2.2.2.4. 添付ファイル
Web サービスで使用するSOAP メッセージには添付ファイルをつけることができます。
Web サービスで添付ファイルを利用する場合、以下の2つの形式があります。 MTOM の利用方法については、[JAX-WS準拠Webサービスのカスタマイズ > MTOM (Message Transmission and OptimizationMechanism)の利用] を参照してください。
WS-I Attachments Profile の利用方法は、javax.activation.DataHandler のコンストラクタに @javax.xml.bind.annotation.XmlAttachmentRef アノテーションを宣言します。 他の設定は必要ありません。通常のデータ型と同様の処理を行ってください。

2.2.3. JAX-RPC(Webサービス作成ウィザード)

Memo
本機能は旧互換のための機能です。 新規にWebサービスを作成する場合は、JAX-WSに準拠するサービスを作成してください。


ここでは、Webサービス作成ウィザードを使用して 既存のビジネスロジックから JAX-RPCに準拠するWebサービスの生成方法について説明します。
Webサービス
プロジェクト名にWebサービスを生成するプロジェクトの名前を指定します。カレントワークスペースにある既存のプロジェクトまたは新規に作成するプロジェクト名を指定できます。プロジェクトは、デフォルトでは
<WebOTX_DIR>\Studio\workspace\指定したプロジェクト名
というフォルダに作成されます。もし、別の場所に作成したい場合は、 デフォルトロケーションの使用をOFFにして、任意の場所を絶対パスで指定します。
Webサービス仕様は[JAX-RPC(非推奨)]を選択。
以上の設定を終了したら、次へ をクリック。

Webサービス(JAX-WS/JAX-RPC) Webサービス仕様 JAX-RPC(非推奨) 選択

Caution
指定したプロジェクトにウィザードで作成したWebサービスが既に存在している場合、Webサービスを生成することができません。

Caution
プロジェクトには 動的Webプロジェクトと EJB プロジェクト のみを指定できます。

Memo
プロジェクト名に含めてはいけない文字を含めると、エラーメッセージが表示されます。

Memo
<WebOTX_DIR>はWebOTXのインストールルートディレクトリのことです。

Webサービスの基本設定
Webサービスを作成するための最も基本的な情報を指定します。すべて設定が終了したら、 次へ をクリック。

Webサービス(JAX-WS/JAX-RPC) Webサービスの基本設定

設定項目
設定内容
Webサービス名
Webサービス名を英数字とアンダーバーを使用して指定します。
Webサービスの属する名前空間URI
Webサービスの存在する名前空間をURI(URL、URN)形式で指定します。http:やurn:などのスキームに続けて任意の名前を指定します。
(入力例)
urn:webotx.nec.com
http://www.nec.com/webotx
WS-Iモード
WS-I BP1.0に対応したい場合、ONにします。

Memo
Webサービス名は、Webサービス作成時にクラス名として使用するため、Javaの識別子の規則に従っていないとエラーメッセージが表示されます。

Memo
名前空間は、Webサービスが存在する空間の名前のことです。Javaのパッケージ名に相当します。

Memo
URIは、ウェブ上でリソースを識別する手段で、スキームに続けて名前を指定する形式です。http:、mailto:、urn:などのスキームはよく知られたところでしょう。詳細は、「URI」でウェブ検索してください。

Webサービスの実装形式選択
Webサービスを実装する形式を選択します。選択したら、次へ をクリック。

Webサービス(JAX-WS/JAX-RPC) Webサービスの実装形式

Memo
「Webアプリケーション」を選択した場合、動的Webプロジェクトを生成します。「EJB」を選択した場合、EJB プロジェクトを生成します。

Webサービスのビジネスロジックの選択
Webサービスにする既存のビジネスロジックに、Webサービス化したいビジネスロジックを含むプロジェクト、またはアプリケーションのアーカイブを指定します。Webサービスの実装形式選択画面でWebアプリケーションを選択した場合は JavaプロジェクトWebOTX WebプロジェクトJARファイルWARファイルのうちいずれかを、EJBを選択した場合は WebOTX EJBプロジェクトEJB-JARファイルのうちいずれかを指定します。
ビジネスロジックが参照しているライブラリがある場合、クラスパスに追加するライブラリの 追加 をクリックし、ライブラリを指定します。追加できるファイルは、 JARファイル、もしくはZIPファイルです。追加を取り消したい場合は、そのライブラリをリストで選択し、 削除 をクリック。

Webサービス(JAX-WS/JAX-RPC) Webサービスのビジネスロジックの選択

Webサービスの実装形式
指定するビジネスロジックの形式
Webアプリケーション
・Javaプロジェクト
・JARファイル
・WebOTX Webプロジェクト
・WARファイル
・WTP Webプロジェクト
などのEclipseのJavaプロジェクトに準じた全てのプロジェクト、ならびにJavaアプリケーションに相当する全てのアプリケーションアーカイブ
EJB
・WebOTX EJBプロジェクト
・EJB-JARファイル
・WTP EJBプロジェクト

Caution
ビジネスロジックとして指定するプロジェクトは、Eclipseのビルド機能によりビルドが成功しているものでなければなりません。

Caution
ビジネスロジックとして指定するプロジェクトが参照するプロジェクトも、すべてEclipseのビルド機能によりビルドが成功しているものでなければなりません。

Memo
Antでビルドを行っており、Eclipseのビルド機能ではビルドに失敗するプロジェクトを指定したい場合は、一旦Antによるビルドでアーカイブを作成すれば、そのアーカイブを指定してWebサービスを作成することができます。

Memo
ビジネスロジックとして指定した外部ファイル(アーカイブファイル)の読み込みに失敗する場合、対象のアーカイブファイルを解凍しMETA-INF\MANIFEST.MFをフォルダごと手動で削除後、同じMETA-INF\MANIFEST.MFを再度追加してアーカイブし直すことで解消される場合があります。

クラスの選択
Webサービスのビジネスロジックの選択画面でJavaプロジェクトWebOTX WebプロジェクトJARファイルWARファイルのいずれかを指定したとき、そのアーカイブに含まれるクラスの中から、Webサービス化したいクラスを選択する画面です。
プルダウンメニューからパッケージ名を選択すると、上のリストにそのパッケージに含まれるクラスの一覧が表示されます。その中からWebサービス化するものを選び、 をクリック。下のリストに追加されれば、選択完了です。
この作業を繰り返して、Webサービス化したいクラスが全て下のリストに表示されるようにしてください。下のリストでクラスを選択して をクリックすると、選択解除することができます。最後に、 次へ をクリック。

Webサービス(JAX-WS/JAX-RPC) クラスの選択

Caution
インタフェース、抽象化クラスは選択しないでください。

Caution
パッケージ名のついていないクラス(デフォルトパッケージに存在するクラス)は表示されません。

Memo
異なるパッケージに存在する複数のクラスを同時に選択することもできます。

EJBの選択
Webサービスのビジネスロジックの選択画面でWebOTX EJBプロジェクトEJB-JARファイルのいずれかを指定したとき、そこに含まれるEJBの中からWebサービス化したいEJBを選択する画面です。
Webサービス化の対象になるEJBのEJB名とEJBのクラスが一覧表示されます。この中からWebサービス化したいEJBを1つ選択し、 次へ をクリック。

Webサービス(JAX-WS/JAX-RPC) EJBの選択

Caution
ステートレスセッションBean以外のEJBは表示されません。


メソッドの選択
クラスの選択、またはEJBの選択画面で選択したクラスに含まれるメソッドから、Webサービス化するものを選択する画面です。
プルダウンメニューからクラスを選択すると、上のリストにそのクラスに含まれるメソッドの一覧が表示されます。その中からWebサービス化するものを選び、 をクリック。下のリストに追加されれば、選択完了です。
この作業を繰り返して、Webサービス化したいメソッドが全て下のリストに表示されるようにしてください。下のリストでメソッドを選択して をクリックすると、選択解除することができます。最後に、 次へ をクリック。

Webサービス(JAX-WS/JAX-RPC) メソッドの選択

Caution
インタフェース、抽象化クラスはプルダウンメニューには表示されません。

Caution
1つのクラス内に同名のメソッドが複数ある場合、それらを同時に複数選択することはできません。

Caution
コンストラクタ、小文字で始まっていない名前のメソッドは選択できません。

Caution
ビジネスロジックがEJBの場合で、メソッド名に数字がある場合、その直後の文字は大文字でなければなりません。

Memo
異なるクラスに存在する複数のメソッドを同時に選択することもできます。


2.2.3.1. Web サービスと型
Web サービスのデータのやり取りはXML を利用します。Java とXML ではデータ型の種類が異なっているため、それぞれの 型同士を結び付けて互換性を取る必要があります。そこで、JAX-RPC 仕様ではJava の型からXML の型への変換規則、 XML の型からJava の型への変換規則を規定しています。WebOTX はJAX-RPC の規定している型変換法則に対応してい ます。Web サービス作成ウィザードでは、その中でJava の型とXML の型の相互変換をする時に可逆である型の組み合わ せを使用しており、実際に利用できる型は次に挙げるものです。ランタイムの種類、ウィザード中で選択するモードによって 対応する型に違いがありますので、ビジネスロジックの引数と返り値の型が対応しているかどうかをよくご確認ください。引 数や返り値に任意に作成したBean を使用している場合、そのフィールドに含まれる変数の型についても同様に考慮する必 要がありますのでご注意ください。
Java の型 WS-I mode OFF
RPC/encoded
WS-I mode ON
WS-I mode OFF
RPC/literal
WS-I mode OFF
Document/literal
boolean
xsd:boolean
xsd:boolean
★byte
xsd:byte
xsd:byte
★byte[]
xsd:base64Binary
xsd:base64Binary
short
xsd:short
xsd:short
int
xsd:int
xsd:int
long
xsd:long
xsd:long
float
xsd:float
xsd:float
double
xsd:double
xsd:double
java.lang.String
xsd:string
xsd:string
java.math.BigInteger
xsd:integer
xsd:integer
java.math.BigDecimal
xsd:decimal
xsd:decimal
java.util.Calendar
xsd:dateTime
xsd:dateTime
javax.xml.namespace.QName
xsd:QName
xsd:QName
java.net.URI
xsd:anyURI
xsd:anyURI
java.lang.Boolean
soapenc:boolean
xsd:boolean
java.lang.Float
soapenc:float
xsd:float
java.lang.Double
soapenc:double
xsd:double
java.lang.Integer
soapenc:int
xsd:int
java.lang.Short
soapenc:short
xsd:short
java.lang.Byte
soapenc:byte
xsd:byte
2.2.3.2. 型に関する注意
詳細設定画面でRPC/literal の設定をしたとき、メソッド選択画面で選択した全てのメソッドの引数、返却値について、次の型の組み合わせについては同時に複数使用することができません。
同時に選択できない型の組み合わせ
java.lang.Boolean[]
boolean[]
java.lang.Float[]
float[]
java.lang.Double[]
double[]
java.lang.Integer[]
int[]
java.lang.Short[]
short[]
※[]は配列の意味です。
2.2.3.3. 添付ファイル
Web サービスで使用するSOAP メッセージには添付ファイルをつけることができます。WS-I モードがOFF で、RPC/encodedのとき、次の型の引数、または返り値が存在するメソッドが選択されると、自動的に添付ファイルとして扱います。なお、添付ファイルがある状態で生成されたMain クラスは必ずカスタマイズする必要があります。
WS-I モードON にする場合、あるいはRPC/literal やDocument/literal を使用する場合は、SOAP メッセージの添付ファイル領域を使うことはできません。その場合、あらかじめビジネスロジック内でbyte 配列型に変換するようにしておき、そのbyte 配列をWeb サービス化するメソッドの引数、または返却値に入れるようにしてください。こうすることによって、ファイルの受け渡しをbyte 配列の受け渡しとして扱うことができます。
2.2.3.4. ユーザ定義の例外
Webサービス化するビジネスロジックでjava.rmi.RemoteException以外の例外を定義すると、それはユーザ定義の例外として扱われます。ユーザ定義の例外をスローすると、ビジネスロジック内で例外が起こったときにSOAP Faultメッセージを使って、例外が発生した場所やクラス名、例外の詳細な内容についてクライアントに通知することができます。
ユーザ定義の例外は、クライアントに渡す情報量によって作り方がいくつかあります。
1つ目は、java.lang.Exceptionを継承するだけのクラスを作成し、引数なしのインスタンスを作成して、例外をスローします。すると、faultstringに発生した例外のクラス名が入ります。
2つ目は、文字列のメッセージをクライアントに渡す場合です。このときは、java.lang.Exceptionを継承するクラスを作成します。ビジネスロジックの中で例外をスローするときには、Stringの引数が1つのコンストラクタでインスタンスを作成し、引数にクライアントに渡したい文字列を入れます。
public class UserException extends Exception { 
  public UserException(String arg0) { 
    super(arg0); 
  } 
} 
    
このとき、detailには次のようにメッセージが封入されます。
<detail> 
  <ns1:UserException xsi:type="ns0:UserException"> 
    <message xsi:type="xsd:string">例外のメッセージ</message> 
  </ns1:UserException> 
</detail>
    
3つ目は、detail要素を使ってさらにいろいろな情報を渡したい場合です。このときは、JavaBeanの規則に沿ってprivate変数を宣言し、各変数ごとにsetter, getterを用意します。このとき、コンストラクタは定義しないか、デフォルトコンストラクタのみを定義しておきます。
public class UserException extends Exception { 
  private int code; 
  private String message; 
  public int getCode() { 
    return code; 
  } 
  public void setCode(int code) { 
    this.code = code; 
  } 
  public String getMessage() { 
    return message; 
  } 
  public void setMessage(String message) { 
    this.message = message; 
  } 
}
    
この状態でWebサービス作成ウィザードを通すと、コンパイルエラーになるクラスが現れるため、次のようにコンストラクタがあることを前提としたコードから引数を取り出し、setterを使うコードに修正します。(逆にユーザ定義例外側に生成されたのと同じ形式のコンストラクタを追加しても構いません。)

RPC-encodedの場合・・・ユーザ定義の例外クラス名_SOAPBuilder修正前:
public void construct() { 
  _instance = new com.nec.webotx.webservice.sample.UserException(code,message); 
}
    
RPC-encodedの場合・・・ユーザ定義の例外クラス名_SOAPBuilder修正後:
public void construct() { 
  _instance = new com.nec.webotx.webservice.sample.UserException(); 
  _instance.setCode(code); 
  _instance.setMessage(message); 
}
    
RPC-encodedの場合・・・ユーザ定義の例外クラス名_SOAPSerializer修正前:
if (isComplete) { 
  instance = new com.nec.webotx.webservice.sample.UserException(((Integer)codeTemp).intValue(),(java.lang.String)messageTemp); 
} else {
    
RPC-encodedの場合・・・ユーザ定義の例外クラス名_SOAPSerializer修正後:
if (isComplete) { 
  instance = new com.nec.webotx.webservice.sample.UserException(); 
  instance.setCode(((Integer)codeTemp).intValue()); 
  instance.setMessage((java.lang.String)messageTemp); 
} else {
    
RPC/Document-literalの場合・・・ユーザ定義の例外クラス名_ LiteralSerializer修正前:
instance = new com.nec.webotx.webservice.sample.UserException(((Integer)codeTemp).intValue(),(java.lang.String)messageTemp);
    
RPC/Document-literalの場合・・・ユーザ定義の例外クラス名_ LiteralSerializer修正後:
instance = new com.nec.webotx.webservice.sample.UserException(); 
instance.setCode(((Integer)codeTemp).intValue()); 
instance.setMessage((java.lang.String)messageTemp);
    
このとき、detailには次のようにメッセージが封入されます。
<detail> 
  <ns1:UserException xsi:type="ns0:UserException"> 
    <code xsi:type="xsd:int">012345</code> 
    <message xsi:type="xsd:string">例外のメッセージ</message> 
  </ns1:UserException> 
</detail>
    
※ユーザ定義の例外クラスが継承関係を持っている場合などに、ユーザ定義の例外クラスと同じクラス名のクラスがWebサービスプロジェクトに生成されてしまう場合がありますが、そのクラスは不要ですので手動で削除してください。
※SOAP Faultの返却が成功した場合、JAX-RPCは正常に処理を終了しているため、webservice.logにログは出力されません。ユーザ定義の例外クラスが呼び出された際のログを残す必要がある場合は、アプリケーション側で処理を追加する必要があります。
※Document/literalの時、void(返却値なし)のメソッドにおいてユーザ定義の例外をスローすることはできません。Document/literalでは、void(返却値なし)のメソッドをWebサービス化するには「一方向通信を行う」オプションをつけなければならず、一方向通信においてユーザ定義の例外をスローすることは、本来返るはずのないSOAP Faultメッセージを定義することにあたるためです。
2.2.3.5. パラメータの入出力
JAX-RPCに準拠するWebサービスを作成する際、パラメータでデータを入出力するには Holder クラスを使用する必要があります。
Webサービスを作成する際にユーザ定義のObjectを保持するHolderクラスをパラメータに持つメソッドをWebサービス化すると、 自動生成されるソースコード内でコンパイルエラーが発生する場合があります。その場合、手動で次のような修正が必要になります。

例:
Webサービスのプロジェクト名:Web
ビジネスロジックのプロジェクト名:LogicBean
ユーザ定義のObjectを保持するHolderクラス:test.TestDataHolder
自動生成されたHolderクラス:webotx.ws.ds.WebService.holders.TestDataHolder

2.2.3.6.
自動生成されるJava クラスのパッケージ名を変更することができます。変更方法は次の通りです。
<workspace>/.metadata/.plugins/org.eclipse.core.runtime/.settingsにある com.nec.webotx.webservice.prefsファイルにcommon.package=新パッケージ名+「.」を追加します。
(例)common.package=homo.moge.
com.nec.webotx.webservice.prefsファイルがなければ、手動で同じ名前のテキストファイルを新規作成する必要があります。
デフォルトのパッケージ名はwebotx.ws.ds.「Web サービス名」です。
配備の設定
Webサービスを配備するURLを指定する画面です。WebサービスのURLは、http://ホスト名:ポート番号/WebサービスにマッピングするURL/Webサービス名 となります。
この画面で指定した値が上記のURLのWebサービスにマッピングするURL、ホスト名とポート番号部分に反映されます。 WebサービスにマッピングするURLの初期値はプロジェクト名が指定されています。
ホスト名の初期値は「localhost」、ポート番号の初期値は「80」が指定されています。変更したい場合には書き換えてください。変更後のURLのイメージは随時WebサービスのURL初期値に表示されます。設定が終わったら、 次へ をクリック。

Webサービス(JAX-WS/JAX-RPC) 配備の設定

Caution
指定する文字列の最初と最後に「/」をつける必要はありません。

Memo
「foo/var/service」のような深い階層を設定することもできます。

ここでWebサービスの作成を開始できます
この画面が出たら、Webサービスを作成するための最低限の設定は終わったことを表します。 完了 をクリックすると、Webサービスの作成を開始します。 次へ をクリックすると、詳細設定の画面に移ります。

Webサービス(JAX-WS/JAX-RPC) ここでWebサービスの作成を開始できます

詳細設定
詳細設定を行う画面です。
SOAPメッセージ形式の選択
SOAPエンジンが作成するSOAPメッセージの形式をRPC/encodedRPC/literalDocument/literal/wrappedから選択します。
RPC/encodedはSOAP仕様に定められたRPCのエンコード方法でSOAPメッセージを作成し、SOAPでRPCを実現することを目的とするものです。
RPC/literalはSOAP仕様に定められた方法でRPCを実現しますが、XMLスキーマで定義されたデータ型を使用することや、WSDL に定義されたXMLスキーマに従った書式のXMLをやりとりすることに主眼が置かれます。
Document/literal/wrappedはSOAP Bodyの中にWSDLで定義されたXMLスキーマに従った任意のXML文書を入れて送ることを目的とした形式です。このウィザードでWebサービスを作成する場合、 RPC/literalとDocument/literal/wrappedのSOAPメッセージは全く同じ形式になりますが、RPC/literalではXMLスキーマで定義されるデータ型を参照したWSDLになるのに対し、 Document/literal/wrappedでは「型」の概念が無いため、WSDL内でSOAP Body内に入るXMLの書式が全てXMLスキーマで表現されるという特徴があります。

Webサービス(JAX-WS/JAX-RPC) 詳細設定

一方向通信を行う
クライアントからサーバの方向のみSOAPメッセージを送る場合、ONにします。通常、Webサーバのタイムアウトまでビジネスロジックからの応答を待ち続けますが、ここでONにすることによって、クライアントからのSOAPメッセージを正常に受け取ったら、ビジネスロジックの応答を待たずにHTTP202を返却し、一方的にSOAP通信を終了させます。ビジネスロジックやそのバックエンドが非同期で実装されている場合など、非同期のWebサービスを実現したい場合にご活用ください。RPC/encoded、RPC/literalの時はvoid(返却値なし)のメソッドのみで一方向通信が成立します。Document/literal/wrappedの時は返却値の有無に関わらず強制的に一方向通信になります。また、Document/literal/wrappedの時はRemoteException以外のユーザ定義の例外をスローしないでください。
JavaのパッケージとXMLの名前空間URIのマッピングを追加
Webサービス化するメソッドの引数返却値にBean型が含まれている場合に任意で指定することができます。追加するには、 追加 をクリックすると表示される 追加ダイアログ を使用します。JavaのパッケージにはBeanが属するパッケージ名を、XMLの名前空間URIには、BeanがWebサービス(XML)の空間で振舞う時に属する名前空間URIを指定し、 OK をクリック。
追加したマッピングを変更する時は、リストで変更したいマッピングを選択し、 編集 をクリック。追加ダイアログが表示されるので、修正して OK をクリック。マッピングを削除する時は、リストで変更したいマッピングを選択し、 削除 をクリック。
設定が終了したら、次へ をクリック。

追加したマッピングを変更 追加ダイアログ

Caution
Document/literal/wrappedを選択したとき、Webサービス化するメソッドにvoid(返却値なし)のものが含まれる場合、必ず「一方向通信を行う」をONにしてください。配備に失敗します。

Caution
パッケージ名と名前空間URIのマッピングを設定する場合は、必要な設定をすべて行ってください。自動でマッピングする機能は、ここで設定を1つでも行うと働きません。

Memo
WS-IモードをONにしている場合には、RPC/literalかDocument/literal/wrappedしか選択できません。

Memo
パッケージ名と名前空間URIのマッピングは、ここで指定しなければ自動で行われます。その際の規則は、「http://パッケージ名のドット区切りで逆順の文字列」になります。

Memo
WSDLも自動的に作られるので、WSDLにXMLスキーマを定義することについて気にする必要はありません。

wscompileコマンドオプションの編集
wscompileコマンドのオプションを編集する画面です。
WSDLファイルの作成オプション
WSDLファイルを作成する際に使用するオプションを入力します。
指定可能なオプションは下記表をご参照下さい。

Webサービス(JAX-WS/JAX-RPC) wscompileコマンドオプションの編集

サービスエンドポイントインタフェースの作成オプション
サービスエンドポイントインタフェースを作成する際に使用するオプションを入力します。
指定可能なオプションは下記表をご参照下さい。

Caution
WebOTX Developer’s Studioでは既定で指定しているオプションがあり、この画面で既定のオプション設定と異なるオプションを入力した場合、画面で指定されたオプションが有効となります。

この画面では下記のオプションを指定できます。
オプション
説明
-define
WSDLを生成する場合に指定します。「サービスエンドポイントインタフェースの作成オプション」では指定できません。
-classpath <path>
入力クラスファイルの検索場所を指定します。
-cp <path>
-classpathと同様です。
-f:<features>
JAX-RPCのfeatureを指定します。指定できるFeatureの一覧は下記のFeature一覧テーブルを参照してください。
複数個指定する場合は、カンマ「,」で区切って指定して下さい。
-features:<features>
-f:<features> と同様です。
-keep
Javaソースファイルを生成します。デフォルトでは、ソースファイル自体が生成されずにコンパイル結果のみが生成されます。
-g 
デバッグ情報を生成します。
-model <file>
内部モデルをファイルに出力します。
-O
生成されたコードを最適化します。
-httpproxy:<host>:<port> 
HTTPプロキシサーバを指定します。デフォルトのポートは8080です。
<features> には以下の値が指定可能です。
Feature
説明
WSDL作成
SEI作成
datahandleronly
常に属性をデータハンドラ型にマッピングします。
×

donotoverride
すでに生成が終了しているクラスファイルの再生成を行わないようにします。クラスファイルの上書きを禁止します。


donotunwrap
WS-Iモード選択時のdocument/literal/wrappedラッパー要素のアンラッピングを無効にします。
×

explicitcontext
サービスコンテキストマッピングを明示的に有効にします。
×

jaxbenumtype
匿名列挙をそのベース型にマッピングします。
×

noencodedtypes
エンコーディングの型情報を無効にします。


nomultirefs
複数の参照を無効にします。


norpcstructures
rpc構成を出力しません。
×

novalidation
インポートしたWSDLの検証を行いません。
×

resolveidref
xsd:IDREF(ID参照値という意味のデータ型)を解釈します。
×

searchschema
type要素用にXMLスキーマを探します。
×

serializeinterfaces
直接インタフェースの型とシリアライズすることを有効にします。


Caution
rpcliteral、wsi、documentliteral、useonewayoperations、nodatabinding のFeature については、ウィザード中の選択に依存するため、この画面では指定できません。
ここで設定は終了です。 完了 をクリックしてWebサービスを生成します。
2.2.3.7. 動的Webプロジェクト
ここでは、JAX-RPC準拠Webサービスを生成した場合の動的Webプロジェクトの内容について説明します。
■settingsフォルダ
settingsフォルダにプロジェクトのFacetファイルが格納されます。
プロジェクトのXMLファイル「wizard.xml」がここに生成されます。
■build\classesフォルダ
build\classesフォルダにあるソースコードをビルドした結果が格納されます。
srcフォルダ
Webサービスの動作に必要な各種ソースコードや、そのWebサービスをテストするためのクライアントコードなどが生成されます。主なクラス、プロパティ構成は次の通りです。
クラス名
役割
Webサービス名_Service
サービスインタフェースです。Webサービスを仮想化したインタフェースで、ポートを内封します。
Webサービス名_Service_Impl
サービスインタフェースの実装クラスです。クライアント側の初期化をになっており、JAX-RPCHandlerの初期化パラメータも書かれます。
Webサービス名_PortType
サービスエンドポイントインタフェースです。
Webサービス名_PortType_Tie
タイクラスです。サービス側でSOAPメッセージの受け口になるクラスです。JAX-RPC Handlerの初期化パラメータも書かれます。
Webサービス名_PortType_Stub
クライアントが利用するスタブクラスです。
Webサービス名SoapBindingImpl
ウィザードで指定したビジネスロジックを呼び出すWebサービスの実装クラスです。Webサービスの実装形式がWebアプリケーションの時のみ生成されます。
Webサービス名Client
テスト用のクライアントです。スタブクラスを利用しながらWebサービスの呼び出しを行います。
Main
テスト用のクライアントを呼び出して動作させるためのクラスです。クライアントを作成する時は、このクラスをカスタマイズすると簡単です。
■configフォルダ
Webサービスの実装形式をWebアプリケーションにした場合、ビジネスロジックのパッケージ、クラスに関する情報をWebサービスのオペレーション名に自動的に付加します。こうすることによって、Webサービスのオペレーションと、ビジネスロジックのメソッドを一対一で結び付けています。この動作によってオペレーション名は次のように命名されます。
<メソッド名>_<ビジネスロジックのクラス名>< パッケージに対応した数字>
パッケージに対応した数字は、ビジネスロジックとして複数のパッケージから同時にメソッドを選択した時に自動的に割り振られます。どのパッケージがどの番号が対応しているかについて、configフォルダの中に「webサービス名.properties」という名前で生成されるプロパティファイルに書かれます。
■keystoreフォルダ
Webサービス作成ウィザード中で、署名、暗号化など、キーストアを利用する設定を行った場合、指定したキーストアファイルがこのフォルダにコピーされます。
■WebContent\WEB-INFフォルダ
Webサービス作成ウィザード中で、WARファイルをビジネスロジックとして指定した場合に、それを展開した内容が置かれます。Webサービスプロジェクト作成後、ビジネスロジックのWARファイルの中身を置換または追加したい場合は、このフォルダ内のファイルを修正します。また、Webサービスの実装形式をWebアプリケーションとする場合、HTMLやJSPのような任意のファイルやフォルダをWebContent\WEB-INFフォルダ直下に置けば、WARファイルに含めることができます。
各種配備記述子などのXMLファイルがここに生成されます。アーカイブ時、ここにあるファイルが優先的に封入されますので、配備記述子を編集したい場合はWebContent\WEB-INFフォルダ配下のファイルを編集してください。

Caution
ビジネスロジックを置換するとき、Webサービス化したメソッドのインタフェースを変えることはできません。

■WebContent\WEB-INF\classesフォルダ
Webサービス(JAX-RPC)作成ウィザード中で、WARファイルをビジネスロジックとして指定した場合に、WARファイルを展開した内容(クラスファイル)が置かれます。
Webサービス(JAX-RPC)作成ウィザード中で、プロジェクトをビジネスロジックとして指定した場合に、プロジェクトのクラスファイルが置かれます。
■WebContent\WEB-INF\libフォルダ
Web サービス(JAX-RPC)作成ウィザード中で、JAR ファイルをビジネスロジックとして指定した場合、そのJAR ファイルはこのフォルダに自動でコピーされます。また、別途ビジネスロジックやWebサービスから参照するJARファイルを作成した場合は、そのJARファイルをこのフォルダに手動でコピーすると、ここに置かれたJAR ファイルは、WAR ファイルの「/WEB-INF/lib/」配下に封入されます。
■WebContent\WEB-INF\wsdl フォルダ
WSDLファイルがここに生成されます。WSDLファイルを編集したい場合はWebContent\WEB-INF\wsdlフォルダ配下のファイルを編集してください。
2.2.3.8. EJB Project- Webサービス(JAX-RPC)
ここでは、JAX-RPC準拠のWebサービスを生成したEJB Projectの内容について説明します。
■settingsフォルダ
settingsフォルダにプロジェクトのFacetファイルが格納されます。
プロジェクトのXMLファイル「wizard.xml」がここに生成されます。
■build\classesフォルダ
build\classesフォルダにあるソースコードをビルドした結果が格納されます。
■ejbModuleフォルダ
Webサービスの動作に必要な各種ソースコードや、そのWebサービスをテストするためのクライアントコードなどが生成されます。主なクラス、プロパティ構成は [動的Webプロジェクト)]の[srcフォルダ] を参照してください。
セキュリティを設定した場合、セキュリティの関連のPropertiesファイルもここに置かれます。
Webサービス作成ウィザード中で、EJB-JARファイルをビジネスロジックとして指定した場合に、それを展開した内容が置かれます。Webサービスプロジェクト作成後、ビジネスロジックのEJB-JARファイルの中身を置換または追加したい場合は、このフォルダ内のファイルを修正します。
Webサービス作成ウィザード中で、EJB-JARファイルをビジネスロジックとして指定した場合に、EJB-JARファイルを展開した内容(クラスファイル)が置かれます。
Webサービス作成ウィザード中で、プロジェクトをビジネスロジックとして指定した場合に、プロジェクトのクラスファイルが置かれます。
プロジェクトの配備記述子XMLファイル「mapping.xml」がここに生成されます。

Caution
ビジネスロジックを置換するとき、Webサービス化したメソッドのインタフェースを変えることはできません。

■ejbModule\META-INFフォルダ
各種配備記述子などのXMLファイルがここに生成されます。アーカイブ時、ここにあるファイルが優先的に封入されますので、配備記述子を編集したい場合はxmlフォルダ配下のファイルを編集してください。
■ejbModule\META-INF\wsdl フォルダ
WSDLファイルがここに生成されます。WSDLファイルを編集したい場合はejbModule\META-INF\wsdlフォルダ配下のファイルを編集してください。
■configフォルダ
Webサービスの実装形式をWebアプリケーションにした場合、ビジネスロジックのパッケージ、クラスに関する情報をWebサービスのオペレーション名に自動的に付加します。こうすることによって、Webサービスのオペレーションと、ビジネスロジックのメソッドを一対一で結び付けています。この動作によってオペレーション名は次のように命名されます。
<メソッド名>_<ビジネスロジックのクラス名>< パッケージに対応した数字>
パッケージに対応した数字は、ビジネスロジックとして複数のパッケージから同時にメソッドを選択した時に自動的に割り振られます。どのパッケージがどの番号が対応しているかについて、configフォルダの中に「webサービス名.properties」という名前で生成されるプロパティファイルに書かれます。
■libフォルダ
Web サービス作成ウィザード中で、JARファイルをビジネスロジックとして指定した場合、そのJAR ファイルはこのフォルダに自動でコピーされます。
■keystoreフォルダ
Webサービス作成ウィザード中で、署名、暗号化など、キーストアを利用する設定を行った場合、指定したキーストアファイルがこのフォルダにコピーされます。
 

2.2.4. SOAPメッセージを直接処理するサーブレット

HTTPを直接処理できるサーブレットを使って、任意のXML文書を処理する方法について説明します。ここではSAAJを利用してSOAPを処理する方法を紹介します。文中では「SAAJ」サンプルを参照する箇所がありますので、あわせて「SAAJ」サンプルをご覧ください。

Caution
SOAPメッセージの処理に必ずSAAJを使用しなければならないということではありません

2.2.4.1. サーブレットのインタフェースを決める
まず、交換するXML文書の書式とサーブレット詳細(URLやmethodなど)を決めます。XML文書の書式を自分で決める必要がある場合には、 XMLスキーマなどを使って定義します。サーブレットが受け取るXMLと返却するXMLの書式が別々の場合には、それぞれについて定義します。
2.2.4.2. WSDLの作成
サーブレットのインタフェースをWSDLに反映します。先に作成しておいたXMLスキーマなどのXML書式を types要素の中でimportして使用すると便利です。

Caution
WSDLは必ず作成しなければならないものではありません。

2.2.4.3. プロジェクトを作成する
サーブレットを作成するために、動的Webプロジェクトを作成します。
新規プロジェクトダイアログ
WebOTX Developerのメニューから、ファイル > 新規 > プロジェクトを選択すると、 新規プロジェクトダイアログが起動します。
Web >動的Webプロジェクトを選択し、次へ をクリック。

ファイル 新規 プロジェクト 動的Webプロジェクト 選択

新規動的Webプロジェクト
プロジェクト名」に 動的Webプロジェクトの名前を指定します。プロジェクトは、デフォルトでは
<WebOTX_DIR>\Studio\workspace\指定したプロジェクト名
というフォルダに作成されます。もし、別の場所に作成したい場合は、プロジェクトコンテンツの デフォルトの使用をOFFにして、任意の場所を絶対パスで指定します。
ターゲットランタイムはWebOTX Application server v9(local Default)に設定します。まだ、サーバの登録をしていない場合は、新規ランタイム をクリックし、[新規サーバー・ランタイム環境]ダイアログに移ります。ここで WebOTX Application Server(local)を選択し、次へ をクリックします。
するとWebOTXサーバのインストールパスを設定し、 完了 をクリックします。
プロジェクトファセットは特に設定する必要はありません。 次へ をクリックします。
Webモジュール画面も特に設定する必要はありませんが、コンテキストルート などが設定できます。最後に 完了 をクリックします。
これで動的Webプロジェクトが作成されます。

新規 動的Webプロジェクト

新規 サーバー・ランタイム環境

新規 サーバー・ランタイム環境 WebOTXサーバーランタイムの新規作成

プロジェクト・ファセット 動的 Webモジュール

新規 動的Webプロジェクト Web モジュール

2.2.4.4. Webプロジェクトの設定をする
サーブレットの中でXML処理用に使用するライブラリがある場合は、動的Webプロジェクトの設定でライブラリをクラスパスに追加します。
2.2.4.5. サーブレットを作成する
サーブレットウィザードを使ってWebプロジェクトにサーブレットを追加します。
サーブレットの作成ウィザード
作成した動的Webプロジェクトで右クリックし、、新規 > サーブレットを実行します。
Web プロジェクト、Java パッケージ、クラス名 を設定します。ここでは順に、[SaajSample]、[com.nec.webotx.webservice.sample]、[SAAJServlet]を設定しています。
次へ をクリック。

新規 サーブレット作成

名前」はサーブレット名です。[SAAJService]に変更します。URL マッピングは[sample]に変更します。URL マッピングの 編集 をクリックして変更します。

新規 サーブレット作成 名前 URL マッピング 入力

また、メソッドはinitdoPostをONにして、完了 をクリック。

新規 サーブレット作成 メソッド・スタブ 選択

2.2.4.6. 生成されたサーブレットクラスの編集
生成されたサーブレットクラスにソースコードを追加します。追加内容は、SAAJサンプルの [SAAJServlet]クラスを参照してください。doPostメソッドでリクエストメッセージからSAAJのSOAPMessageオブジェクトを生成したり、SOAPMessageオブジェクトからレスポンスメッセージを生成する処理を行っている汎用のクラスです。
2.2.4.7. SOAPメッセージ処理クラスの追加
サーブレットクラスの中で、doPostメソッド内で取り出したSOAPMessageを処理するメソッドとして onMessageメソッドを用意しています。このonMessageメソッドを実装することで、SOAPメッセージに封入されたXML文書を処理することができます。onMessageメソッドを実装するには、作っておいたサーブレットクラスを継承したクラスを作成し、onMessageメソッドをオーバライドします。サーブレットクラスを継承したクラスは次のように作成します。
メニュー ファイル > 新規 > クラス を選択し、 名前スーパークラスを指定し、完了 をクリック。ソース・フォルダやパッケージはSaajSampleプロジェクトを選択した状態でこのダイアログを開くと自動的に設定されていますが、変更もできます。なお、スーパークラスは、あらかじめ作っておいたサーブレットクラスを指定します。

新規 Java クラス SOAPメッセージ処理クラス 追加

ここで作成したクラスに、サンプルのクラス[SAAJService]を参照して、内容を追加します。
2.2.4.8. WARファイルを作成する
作成したサーブレットをWAR形式でアーカイブし、サーバに配備できる状態にします。
Webプロジェクトへのファイル追加
Webサービスのインタフェースを公開する場合、WSDLとXMLスキーマをWebプロジェクトのコンテンツディレクトリに追加しておくと便利です。
エクスポート
メニュー ファイル > エクスポートを選び、選択画面で Web > WAR fileを選択し、次へ をクリック。プロジェクトはここで作ったWebプロジェクトを、出力ファイルに出力先を指定し、 完了 をクリック。
2.2.4.9. WARファイルを配備する
ウィンドウ > パースペクティブを開く > その他を実行し、リストから「 WebOTX運用管理ツール」を指定し、 OK をクリック。接続ダイアログで設定をし、ドメインに接続します。

WARファイル 配備 パースペクティブ その他 WebOTX運用管理ツール 接続

ドメインのツリーのアプリケーションで右クリックし、「コンポーネントの配備」を実行します。
コンポーネントタイプで「Webコンポーネント」を選択し、ファイルに作成したWARファイルを指定し、 次へ2回クリック。

WARファイル 配備 コンポーネント配備

コンテキストルートを指定します。コンテキストルートはWebサービスのURLに次のように影響します。
http://<ホスト名>:<ポート番号>/<コンテキストルート><サーブレット作成時に指定したURL>
最後に配備をクリックし、配備を行います。

WARファイル 配備 コンテキストルート