2

特にWebSphereIntegrationDeveloper V7を使用していますが、Rational Software Architect V 7.5.1を使用することもできます(両方を使用しているため)。

コンテキスト: JAX-WSを介して公開されるWebSphere ProcessServerV7のHumanTaskManagerおよびBusinessFlowManagerサービスを呼び出すためのJAX-WSクライアントを作成しようとしています。デフォルトでは、ポリシーセットと、いくつかのWS-Security設定を指定するプロバイダーバインディングが添付されています(これらはWSDLで定義されていないため)。

動的Webプロジェクトを使用してそれを機能させる方法を理解しました。WSDLからJAX-WSクライアントコードを生成することができました。ポリシーセットとプロバイダーおよびクライアントバインディングをProcessServerからエクスポートし、それらをワークスペースにインポートすることができました。ポリシーセットとクライアントバインディングをクライアントサービスに添付することができました。Webサービスを呼び出すための(クライアントをテストするための)ページとサーブレットを設定することができました。そして、デプロイメント記述子とWebsphereバインディング/拡張ファイルでセキュリティ設定をセットアップして、それを機能させることができました。

これはすべて素晴らしいことですが、実際には、Webサービスクライアントを私たちが作成している他のアプリケーションに公開するためだけに戦争に耳を傾けることは望んでいません。Webサービスクライアントjarを生成し、他のアプリケーションと一緒にパッケージ化します。

この考え方を踏まえて、IDEで通常のJavaプロジェクトを使用し、それにWebサービスクライアントを生成する方法を理解することができました。ポリシーセットとクライアントバインディングをクライアントに添付することもできました。

私の問題は、これをどのように呼び出すかです。クライアントをテストするために、以前と同じようにページとサーブレットを使用して動的Webプロジェクトを作成しました。クライアントプロジェクトをWebライブラリの依存関係として設定して、クライアントコードにアクセスできるようにしました。以前と同じようにデプロイメント記述子を設定して、ログインと認証を強制することもできます。現在の唯一の問題は、Webサービスが独自の「jar」にあるため、Webサービスに資格情報を渡す方法がわからないことです。TokenGeneratorとCallbackHandlerを設定するためのメニューにアクセスする前。クライアントが動的Webプロジェクトに含まれていないため、これらのメニューにアクセスできません。これで「切断」が発生し、サーバーで実行しようとするともちろん失敗します。

これを行う方法が必要です。クライアントjarを生成し、必要なものを渡すことができるはずです。誰かが以前にこれに遭遇しましたか?

4

1 に答える 1

4

Ok。私はこれを研究し、レッドブックやdeveloperworksの記事を読み、キーボードに頭をぶつけて長い時間を費やしてきましたが、ようやくどこかに行き着きました。そこまでではありませんが、ほとんどです。(IBMのものを見つけやすくしたいのですが...しかし、与えられたもので作業します。そして公平に言えば、私が読んだものでは、それは理にかなっていて、かなり強力です。)

とにかく、RationalツールとWebSphereツールの両方の秘訣は次のとおりです。最初に空のJavaプロジェクトを作成する必要があります。これは、ポータブルWebサービスクライアントを作成するための鍵の1つです。

これまでのところ、ここにあります。

  1. IDEに空のJavaプロジェクトを作成します。私は、Rational Application Developer /SoftwareArchitectまたはWebSphereIntegrationDeveloperのいずれかでJavaEEパースペクティブを使用することを好みます。
  2. WSDLとスキーマを、新しく作成されたJavaプロジェクトではなく、IDEの別の空の汎用プロジェクトにインポートします。
  3. メインのWSDLを右クリックして、Webサービスクライアントの生成を選択します。
  4. ここでのもう1つの重要な点:表示されるウィザードで、クライアントプロジェクトをステップ1で作成したJavaプロジェクトに変更していることを確認してください。デフォルトでは、ウィザードは新規または既存の動的Webプロジェクトをターゲットにしようとしますが、これは希望するものではありません。
  5. 実装としてJAX-WSを選択していることを確認してください。クライアントを「ポータブル」にすることを選択し、JavaプロジェクトクライアントにWSDLを含めるようにウィザードに指示することを確認してください。
  6. すべてが正常に実行されている(およびローカルサーバーが実行されている)まで、Rational/WebSphereツールはJAX-WSWebサービスクライアントをJavaプロジェクトに生成する必要があります。

素晴らしい!素晴らしい!これで、移植性を高めるために使用できるJavaプロジェクト(別名jar)ができました。しかし、IBMツールを満足させ、クライアントにセキュリティー・ポリシーを付加するにはどうすればよいでしょうか。

最初に、WebSphere Application Server / Enterprise Service Bus /ProcessServerの管理コンソールにセキュリティポリシーを添付することが本当に最善であることを学びました。IBMがあなたにそれを行うためのAPIを提供しているとしても、セキュリティで説明しようとすることは多すぎて、すべてを手動でコーディングしようとすることはできません。私を信じて。サーバーでセキュリティを定義してから、それをクライアントに割り当てる方が簡単です。

とにかく....クライアントを管理コンソールに表示して、JAX-WSセキュリティのポリシーセットとクライアントバインディングをアタッチできるようにするには、クライアントを「Webレベル」(より適切な用語がないため)にする必要があります。 jarをWebクライアントとして表示するように注文します。これは、jarをJ2EEユーティリティjarとしてEARプロジェクトにアタッチできないことを意味します。EARは「Webレベル」ではなく「アプリレベル」です。したがって、これを行うには、JavaプロジェクトをJ2EEモジュールの依存関係画面でEARに関連付ける必要がありますが、ユーティリティJarとして関連付ける必要はありません。代わりに、「lib」というチェックボックスをオンにしてください。これは、動的Webプロジェクト/戦争のlibディレクトリに表示/マウントできることを意味します(これも実行する必要があります)。驚くべきことに、管理コンソールはクライアントjarを真のJAX-WSWebサービスクライアントとして認識します。

これは最初は奇妙に見えるかもしれませんが、それはある意味で理にかなっています。結局のところ、Webサービスを扱っていて、 Webプロトコルを使用しているので、ある意味で、クライアントをアプリケーションの「 Webレベル」に配置することは理にかなっています。

編集:私はセキュリティポリシーを台無しにしました、そして私は この開発者の仕事の記事が私に最も役立ったことを発見しました。リスト2ClientTest.javaに特に注意してください。残念ながら、クライアントを最もクリーンに動作させるには、すべてのセキュリティをクライアントにコーディングする必要があります。そして、ここにもう1つの落とし穴があります。IBMでは、WebSphereの外部で実行されるクライアントからユーザー名トークンを作成することはできますが、WebSphereの外部でLTPAトークンを作成することはできません。したがって、これらの種類のトークンをテストするには、クライアントをローカルにパッケージ化してデプロイし、すべてをテストする必要があります。

于 2010-12-07T17:27:07.117 に答える