モデルのテスト
アプリケーションをコールすると、任意のSOAPクライアントを使用してコンフィギュレータ・ランタイム・モデル・テスト・サービスを起動できます。 ここでの手順では、Oracle JDeveloperのjUnitテスト・ケースのコンテキスト内でサービスを実行するwebサービス・プロキシおよびデータ・コントロールを作成するプロセスについて説明します。
必要なプロセスは次のとおりです:
-
webサービス・プロキシを作成します。
-
webサービス・データ・コントロールを作成します。
-
jUnitを作成します。
これらのステップの詳細は次のとおりです。
Webサービス・プロキシの作成
最初のステップは、Oracle JDeveloper webサービス・プロキシ・ウィザードを使用してWebサービス・プロキシを作成することです。 このウィザードでは、webサービスのWSDLを使用して、リクエスト・ペイロードおよびレスポンス・ペイロードに必要なすべてのJavaオブジェクトを作成し、Webサービスをコールします。
webサービス・プロキシを作成するには:
-
Oracle JDeveloperに汎用アプリケーションおよびプロジェクトを作成します。
-
アプリケーションでプロジェクトを選択し、 をクリックします。
-
Webサービス・プロキシ・プロジェクト・テクノロジを検索して選択し、OKをクリックします。
-
ウィザードの概要ページで「次へ」をクリックします。
-
クライアント・スタイルをJAX-WSスタイルのままにして、「次へ」をクリックします。
-
Configurator Runtime Test ModelサービスがデプロイされているホストのWeb Services Description Language (WSDL)エンドポイントへのURLを入力し(クラウド・デプロイメントでは、これはHTTPSポート上にあります)、「次へ」をクリックします。
-
デフォルト・マッピング・オプションの指定ステップで、「非同期の生成」オプションの選択を解除し(非同期起動がサポートされていないため)、「次へ」を2回クリックして、オプションを変更せずにポート・エンドポイントに関連するステップをナビゲート
-
非同期メソッド・ステップで、必ず「非同期メソッドを生成しない」オプションを選択し、「次へ」をクリックします。
-
ポリシー・ステップで、ポリシーのリストが移入されるまで待機します。 リストからoracle/wss11_username_token_with_message_protection_client_policyを選択します。 「次」をクリックします。
-
定義済ハンドラ・ステップで、「次へ」をクリックします。 最後に、「終了」をクリックします。
-
ウィザードでは、webサービスとの対話に必要なリクエスト・ペイロードおよびレスポンス・ペイロードの作成に必要なすべてのJavaオブジェクトが作成されます。 これらのオブジェクトの使用方法の例については、jUnitの作成の説明を参照してください。
Webサービス・データ・コントロールの作成
webサービス・データ・コントロールは、Webサービスと対話するために、接続ファクトリ・オブジェクトを使用して接続を作成する効果的な方法です。 データ・コントロールは、サービスのコール時に必要なセキュリティ・ポリシー、資格証明およびデータ・モデルをカプセル化します。 適切に準備されたデータ・コントロールでは、クライアントがwebサービスを呼び出すために必要なのは、そのJava Naming and Directory Interface (JNDI)名を使用してサービス接続を取得することのみです。 サービス接続ファクトリを使用してwebサービスを呼び出す方法の例については、jUnitの作成の説明を参照してください。
webサービス・データ・コントロールを作成するには:
-
webサービス・データ・コントロールが作成されるプロジェクトを作成して選択し、 をクリックします。
-
Webサービス・データ・コントロール・プロジェクト・テクノロジを検索して選択し、OKをクリックします。
-
データ・ソースの名前を入力します。この名前は、後でこのwebサービス接続を検索するためのJNDI名として使用されます。 コンフィギュレータ・ランタイム・テスト・モデル・サービスがデプロイされているホストのWSDLエンドポイントへのURL(クラウド・デプロイメントでは、これはHTTPSポート上にあります)を指定し、「次へ」をクリックします。
-
データ・コントロール操作ステップで、testModel操作を選択して使用可能な操作リストから選択した操作リストに移動します。 「次」をクリックします。
-
レスポンス・フォーマット・ステップで、「次へ」をクリックします。
-
エンドポイント認証ステップで、ConfiguratorRuntimeServiceSoapHttpPortを選択し、webサービスのユーザー名とパスワードを入力します。 「次」をクリックします。
-
「終了」をクリックします。 webサービス・データ・コントロール・ウィザードは、すべてのタイプのXMLファイルを作成し、コール元のアプリケーションの
connections.xml
ファイルに接続参照を追加します。
jUnitの作成
webサービスを呼び出す方法は数多くあります。 ここでは、コンフィギュレータ・ランタイム・モデル・テスト・サービスの呼出しについて説明した車両は、jUnitです。jUnitsは、このサービスに対して繰返し可能なテストを実行する効果的な方法です。 また、Oracle JDeveloperはApache jUnit 4フレームワークを完全にサポートしています。
Oracle JDeveloperに単純なjUnitを作成するには、次のようにします。
-
jUnitを作成するアプリケーションで、既存のプロジェクトを選択するか、新規プロジェクトを作成します。
ノート:以前に作成したwebサービス・プロキシおよびWebサービス・データ制御プロジェクトがこのプロジェクトのライブラリ・パスにあることを確認します。 jUnitがこれらのプロジェクトのオブジェクトにアクセスできることが重要です。
-
テスト・ケース・プロジェクト・テクノロジを検索して選択します。 「OK」をクリックします。
-
「テスト中のクラス」リストで、<None>を選択します。 「次」をクリックします
-
jUnitの名前とパッケージを入力します。 生成する標準のjUnit設定および分解メソッドを選択します。 「次」をクリックして続行します。
-
「終了」をクリックします。 テスト・ケース・ウィザードは、プロジェクトにjUnit Javaクラスを作成します。
-
jUnitの内容は、次のコード例のようになります。
package oracle.apps.scm.cz; import org.junit.After; import org.junit.AfterClass; import static org.junit.Assert.*; import org.junit.Before; import org.junit.BeforeClass; public class MyServiceTest { public MyServiceTest() { } @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static void tearDownAfterClass() throws Exception { } }
-
次のコード例のようなテスト・メソッドをjUnitに追加します。
@Test public void testMyTest() { ConfiguratorRuntimeService_Service configuratorRuntimeService_Service; // Insert the name of the file that includes the model test request XML File testModelFile = new File("filename.xml"); TestModelResponse response = null; try { // 1. Lookup the web service connection using its JNDI name Context ctxnew = ADFContext.getCurrent().getConnectionsContext(); WebServiceConnection wsc = (WebServiceConnection)ctxnew.lookup("WebServiceJNDIName"); // 2. Get a reference to the web service port configuratorRuntimeService_Service = new ConfiguratorRuntimeService_Service(); ConfiguratorRuntimeService configuratorRuntimeService = wsc.getJaxWSPort(ConfiguratorRuntimeService.class); // 3. Create a test model request using JAXB JAXBContext jaxbContext = JAXBContext.newInstance(TestModel.class); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); TestModel testModel = (TestModel)jaxbUnmarshaller.unmarshal(testModelFile); // 4. Call the web service method TestModelResponse testModelResponse = new TestModelResponse(); testModelResponse = configuratorRuntimeService.testModel(testModel); } catch (Exception e) { Assert.fail(e.getMessage()); } // 5. Introspect the response object as needed JAXBElement<String> status = response.getResult().getTestStatus(); if (!"SUCCESS".equalsIgnoreCase(status.getValue())) Assert.fail(response.getResult().getTestFailureMessage().getValue()); }
-
モデル・テスト・リクエストXMLファイルへの相対パスと、webサービス接続を参照するための正しいJNDI名を指定してください。 JNDI名は、webサービス・データ・コントロールを作成したときに指定した名前です。
-
JavaクラスをOracle JDeveloper内のjUnitとして実行します。
開発者テストの推奨事項
コンフィギュレータ・ランタイム・モデル・テスト・サービスは、自律型SOAPベースのwebサービスで、任意のSOAPクライアントからコールできます。
コンフィギュレータ・ランタイム・モデル・テスト・サービスはクラウド環境に外部サービスとしてデプロイされるため、公開されたポートはデフォルトでSSL (Secure Sockets Layer)に対して有効になります。 SSLポートを使用してクライアント・アプリケーションを構築およびテストすることを強くお薦めします。
Javaクライアント・アプリケーション(jUnitなど)とwebサービス間の初期SSLハンドシェイクが確立されるようにするには、コンフィギュレータ・ランタイム・モデル・テスト・サービスがホストされているSSL証明書を、Javaクライアント・アプリケーションが実行されているローカルJavaキー・ストアにインポートする必要があります。
クライアント/サーバーのSSLハンドシェイク中にコンフィギュレータ・ランタイム・モデル・テスト・サービスの適切なSSL証明書を使用できるようにするには、次のステップを実行します:
-
標準ブラウザからSSLポート上のコンフィギュレータ・ランタイム・モデル・テスト・サービスにアクセスします。 Firefoxの使用例:
-
を選択
-
「証明書を表示...」をクリックします。
-
-
サーバーSSL証明書を証明書としてPEM (Privacy-Enhanced Mail)セキュリティ形式でエクスポートします。
-
「証明書ビューア」ダイアログ・ボックスの詳細タブで、「エクスポート」をクリックします。
-
PEMファイルを目的のロケーションに保存します。
my_server_com.PEM
-
-
Java
keytool
ユーティリティを使用して、Javaクライアント・アプリケーションが実行されているローカルJavaキーストアに証明書ファイルをインポートします。keytool -import -trustcacerts -file my_server_com.PEM -keystore $JAVA_HOME/lib/DemoTrust.jks