Java SOAP Web サービスの指定

www.altova.com このトピックを印刷 前のページ 1つ上のレベル 次のページ

ホーム >  SOAP Web サービスの実装 >

Java SOAP Web サービスの指定

MapForce では Web サービスを作成するために必要な全てのコードならびにスクリプトが生成されます (コード ジェネレータ を参照)。 通常のコード生成処理と唯一異なる点は、生成されたコードを Axis2 (Tomcat) サーバーへデプロイする必要があるということです。

 

Java コードを生成する:

1.<マイ ドキュメント>\Altova\MapForce2019\MapForceExamples\Tutorial\ フォルダーから前のセクションで使用した Query Person database.mfp プロジェクトを開きます。上記のようなプロジェクトの作成に関しては、WSDL ファイルから Web サービスプロジェクトを作成するを参照してください。
2.プロジェクト メニューから「プロジェクト | コードの生成 | Java」を選択します。コード生成が完了すると、 Altova ジェネリッククラスと Web サービス プロジェクトの実際のクラスなど com ディレクトリを含む、複数のフォルダーとファイルがターゲットディレクトリ内に作成されます。
3.生成された Java コードをビルドします (MapForce により生成された build.xml ファイルを Apache Ant に提供します)。 この結果、Axis2 のデプロイに対応した Axis Archive (*.aar) ファイルが作成されます。

 

生成された プロジェクトを Eclipse で開くと、 "org.apache のインポートが解決されません"のようなエラーが生じる場合があります。この場合、Axis2 ライブラリが Java ビルドパスに追加されていることを確認してください。 Axis2 ライブラリを Eclipse 4.4.2  Java ビルドパスに追加するには、以下を行います:

 

1.パッケージエクスプローラー内のプロジェクトを右クリックして、 「プロパティ」 を選択します。
2.「Java ビルドパス」 をクリックします。
3.「ライブラリ」 タブで 「外部 JAR を追加」 をクリックし、 Axis2 ライブラリを <AXIS2_HOME>\lib フォルダーから追加します。

 

Web サービスのデプロイ

Web サービスをデプロイするには以下を行います:

 

Axis2 の "サービスをアップロード" Web 管理者ページを開き、前のステップで作成された .aar ファイルをアップロードします。
手動でアップロードします。例: Tomcat サーバーがフォルダー <TOMCAT_HOME>,  にインストールされている場合、手動で .aar ファイルを <TOMCAT_HOME>\webapps\axis2\WEB-INF\servicesにコピーすることができます。

 

デプロイを解除する

<TOMCAT_HOME>\webapps\axis2\WEB-INF\services フォルダーから *.aar ファイルを削除します。

 

Axis2 の制約

AXIS2 では rpc/encoded に対するサポートが制限されています。MapForce では rpc/encoded  Web サービス(SOAP 1.1 ならびに SOAP 1.2)を生成することができます。これにより、オリジナルの WSDL がウェブサーバーから取得されないという制約があります。

 

これはつまり、http://127.0.0.1/axis2/services/WS2DB?wsdl により、利用可能な WSDL ファイルが取得されないということになります。

 

上にあるドキュメントのリテラル Web サービスの URL により、正しい WSDL ファイルが与えられますが、それはオリジナルのファイルではありません:コメントは取り除かれ、名前空間が変更されます。それでもオリジナルの WSDL ファイルとは機能的に等価なものとなります。

 

AXIS2 では RPC/encoded はサポートされていませんが、デプロイされた Java コード(コンパイルされたコード)から WSDL を生成することができ、MapForce により生成されたコードにより RPC/encoded メッセージが処理されます。AXIS2 は移送のためだけに使用されます。

 

既知の問題: SOAP レスポンスメッセージ内の名前空間

MapForce により生成されたコードは、 javax.xml.transform.TransformerFactory クラスをインスタンス化します。クラス実装がロードされる場合、 javax.xml.transform.TransformerFactory システムプロパティから読み込まれる可能性があります。(詳細に関しては、このクラスの Java ドキュメント を参照してください)。

 

Java 環境内のシステムプロパティ javax.xml.transform.TransformerFactory が実装 org.apache.xalan.transformer.TransformerIdentityImpl を定義する場合 SOAP レスポンスメッセージが正確ではない名前空間を用いて生成される可能性があります。

 

この問題を回避するため、 org.apache.xalan.xsltc.trax.TransformerFactoryImpl 実装を使用してください。これを以下のパラメーターを Java Virtual Machine (JVM仮想マシン)に追加することで行うことができます:

 

-Djavax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl

 

パラメーターを JVM に追加する命令は、使用中のオペレーティングシステムとサーバーにより異なります。以下の命令は Windows 7上のサービスアプリケーションとして実行される Apache Tomcat 7.0 構成に適用することができます:

 

1.Tomcat7w.exe を実行します(このファイルは Tomcat 配布ルートフォルダー CATALINA_HOME \bin サブフォルダー内にあります)。
2.Java タブをクリックします。
3."Java オプション" ボックスの最後に、以下を入力します: -Djavax.xml.transform.TransformerFactory=org.apache.xalan.xsltc.trax.TransformerFactoryImpl

ws_known_issue_javax


(C) 2019 Altova GmbH