この規則は、以下の基準に基づいて、JAX-RPC Web サービスがあることを検出します。
- web-services.xml ファイルが存在する
- weblogic-webservices.xml ファイルと webservices.xml ファイルが同一フォルダー内に存在する
クイック・フィックス
ソース・スキャナーで、この規則は、特定の IBM(R) Ant タスクを含む Ant スクリプトを作成します。これらのタスクは WebLogic J2EE Web サービス・デプロイメント記述子に基づく JAX-RPC Web サービスを生成します。
IBM Ant によって生成されたファイルがプロジェクトのルート・フォルダーに存在しない場合、クイック・フィックスは Web サービスのデプロイメント記述子をスキャンして Ant スクリプトを生成します。このスクリプトには、JAX-RPC Web サービスを生成する IBM Ant タスクが含まれます。
規則のプロパティー
規則のプロパティーには正しい値を指定する必要があります。
この規則のプロパティーの値を変更するには、「ソフトウェア分析プログラムの構成 」ウィンドウで規則を選択します。
次に、「プロパティー (Properties)」タブにあるフィールドを使用します。
この規則のプロパティーは、以下のとおりです。
- 生成された Ant スクリプト名
:
生成される新しい Ant スクリプトの名前を指定します。
スクリプト名は、有効なファイル名でなければなりません。
値にはスラッシュや円記号を使用しないでください。生成されるスクリプトは、プロジェクトのルート・フォルダーに入れられます。
デフォルト値: build-ibm-ws.xml
- 生成フォルダー名:
生成成果物が入れられるフォルダーの名前を指定します。
値にはスラッシュや円記号を使用しないでください。
生成フォルダーは、プロジェクトのルート・フォルダーに入れられます。
デフォルト値: ibm-ws-gen
Ant クラスパス
Ant クラスパスは Eclipse プロジェクトから計算されます。
コンパイルに必要なすべてのエレメントが Eclipse クラスパス上にあることを確認することが重要です。
web-services.xml ファイルで定義された JAX-RPC サービス
web-services.xml で定義されたサービスの情報およびタイプに基づいて、Ant スクリプト、
および場合によっては Web サービスのエンドポイント・インターフェースを表す追加の Java コードが、JAX-RPC サービスを
複製するために生成されます。
- サポートされるコンポーネント
ステートレス・セッションのエンタープライズ Bean (<stateless-ejb>) および Java(R) (<java-class>) コンポーネントだけが認識されて変換されます。
- ステートレス EJB コンポーネント:
<ejb-link> エレメントのパス属性で定義された Enterprise JavaBeans(TM) (EJB) JAR ファイルがプロジェクトに存在する必要があります。
クイック・フィックスは EJB JAR ファイルをスキャンして、EJB リモート・クラスに基づいて新しいサービス・エンドポイント・インターフェース (SEI) クラスを生成します。
SEI インターフェースは、そのクラスが java.rmi.Remote を拡張しなければならない点、
および各メソッドが例外 java.rmi.RemoteException をスローしなければならない点で、EJB リモート・インターフェースと異なります。
クイック・フィックスは Java リフレクションを EJB リモート・インターフェース上で使用して、新しい SEI を生成します。
そのため、Eclipse プロジェクトのクラスパスは、クイック・フィックスが EJB リモート・クラスを正しくロードできるように、
必要なすべてのクラス、JAR ファイル、フォルダーなどを使用してセットアップする必要があります。
SEI は、ユーザーが規則のプロパティーで指定した、生成フォルダーの中にあるフォルダー sei に生成されます。
SEI パッケージは EJB リモート・インターフェース・パッケージと一致し、
SEI 名は EJB リモート・インターフェースに SEI という語を付加した名前と同じになります。
さらに、新しい SEI フォルダーがプロジェクト・クラスパスに追加されます。
- Java クラスのコンポーネント:
EJB コンポーネントと同様に、クイック・フィックスはサービス・エンドポイント・インターフェースを属性 <class-name> で定義された Java クラスから生成します。
- 生成される Ant ターゲット:
生成される Ant スクリプトには、WSDL ファイル、およびクイック・フィックスで作成された新しい SEI に基づく JAX-RPC サービスを生成するためのターゲットが含まれます。
WSDL 生成ターゲットの名前は genWSDL_ssss になります。
ssss は <web-service> エレメントの name 属性フィールドに指定された JAX-RPC サービスの名前です。
サービス生成ターゲットの名前は genService_pppp です。
pppp はエレメント <stateless-ejb> または <java-class> の name 属性にあるコンポーネントの名前です。
クイック・フィックスは、<handlers-chain>、<types>、<operations>、<security> などの他のエレメントで提供される情報を使用しません。
webservices.xml ファイルで定義された JAXRPC サービス
webservices.xml ファイルに定義されるサービスの情報とタイプに基づいて、
JAX-RPC サービスを複製する Ant スクリプトが生成されます。
- 生成される Ant ターゲット:
生成される Ant スクリプトには、WSDL ファイルと JAX-RPC サービスを生成するターゲットが含まれます。
WSDL 生成ターゲットが生成されるのは、
クイック・フィックスでエレメント <wsdl-file> で定義された WSDL ファイルを見つけられない場合のみです。
WSDL 生成ターゲットが作成される場合、名前は genWSDL_ssss になります。
ssss はエレメント <webservice-description-name> で定義されるサービスの名前です。
サービス生成ターゲットの名前は genService_pppp になります。
pppp はエレメント <port-component-name> で定義されるポートの名前です。
IBM WebSphere Application Server Ant タスク
WebSphere(R) Application Server には、JAX-RPC サービスに必要な成果物を生成する java2wsdl や wsdl2java などの Ant タスクが組み込まれています。
生成される Ant スクリプトは、これらのタスクを使用してサービスを作成します。
これらのタスクに関する追加情報は、以下から入手できます。
WebSphere Application Server の資料。
Ant スクリプトの実行
クイック・フィックスが Ant スクリプトを生成した後に、そのスクリプトを表示して、必要であれば追加のカスタマイズを行ってください。
IBM Ant タスクの追加のカスタマイズについては、アプリケーション・サーバーの資料を参照してください。
このスクリプトは、WebSphere Application Server に組み込まれている Ant ツール
を使用して実行する必要があります。 IBM Ant スクリプト
は、以下から実行できます。
- Windows(R) オペレーティング・システムの場合 WAS_HOME¥bin¥ws_ant.bat
- UNIX(R) オペレーティング・システムの場合 WAS_HOME¥bin¥ws_ant.sh
例: c:¥IBM¥AppServer¥bin¥ws_ant.bat -f
c:¥eclipse¥MyProject¥ibm-ws-gen.xml genService_TestService
Ant ターゲットが実行されると、生成される成果物が生成フォルダーに入れられます。
その後、ユーザーは生成されたコードおよびデプロイメント記述子を検査し、
これらの成果物をモジュールに追加できます。