関連するポリシーセットと合理的/WebSphere Toolingのバインディングで、ログインクレジットをJAX-WSサービスクライアントに渡すにはどうすればよいですか

StackOverflow https://stackoverflow.com/questions/3782090

質問

私は特にWebSphere Integration Developer V7を使用していますが、Rational Software Architect v 7.5.1を使用することもできます(私も持っています)。

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

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

これはすべて素晴らしいことですが、実際には、Webサービスクライアントを書いている他のアプリケーションにさらすためだけに戦争で耳を傾けたくありません。 WebサービスクライアントJARを生成し、他のアプリケーションでパッケージ化したいと考えています。

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

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

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

役に立ちましたか?

解決

Ok。私はこれを研究するのに長い時間を費やし、RedbooksやDeveloperWorksの記事を読み、キーボードに頭を叩きましたが、ついにどこかに手に入れました。そこまでずっとではありませんが、ほとんど。 (いくつかのIBMのものが簡単に見つけることを望みます...しかし、あなたはあなたが与えられているもので働いています。そして、私が読んだことで、それは理にかなっていて、かなり強力です。)

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

だからここにあるところです:

  1. IDEに空のJavaプロジェクトを作成します。合理的なアプリケーション開発者/ソフトウェアアーキテクトまたはWebSphere Integration DeveloperでJava EEの視点を使用することを好みます。
  2. WSDLとスキーマを、新しく作成されたJavaプロジェクトではなく、IDEの別の空のジェネリックプロジェクトにインポートします。
  3. メインWSDLを右クリックして、Webサービスクライアントを生成することを選択します。
  4. ここに別の鍵: :クライアントプロジェクトを変更して、ステップ1で作成したJavaプロジェクトに変更しているように見えるウィザードで確認してください。デフォルトでは、ウィザードは、新しいまたは既存のDynamic Webプロジェクトをターゲットにしようとしますが、これはあなたが望むものではありません。
  5. 実装としてJax-WSを選択していることを確認してください。クライアントを「ポータブル」にしたいことを選択し、WizardにJava ProjectクライアントにWSDLを含めるように指示するようにしてください。
  6. 保留中、すべてを順番に(およびローカルサーバーを実行している)、合理的/WebSphereツールはJax-WS WebサービスクライアントをJavaプロジェクトに生成する必要があります。

素晴らしい!素晴らしい!これで、ポータブルにするために使用できるJavaプロジェクト(別名JAR)があります。しかし、IBMのツールをどのように幸せにし、セキュリティポリシーをクライアントに添付しますか?

まず、WebSphere Application Server/Enterprise Service Bus/Process Serverの管理コンソールにセキュリティポリシーを添付することが本当に最善であることを学びました。 IBMがAPIを提供するにもかかわらず、セキュリティを使用してすべてを手動でコーディングしようとするにはあまりにも多くのことがあります。私を信じて。サーバー上のセキュリティを定義し、クライアントに割り当てるだけです。

とにかく.... Jax-WSセキュリティのためにポリシーセットとクライアントバインディングを添付するためにクライアントが管理コンソールに表示されるようにするために、それは「Webレベル」(より良い用語がないため)でなければなりませんJARをWebクライアントとして見るように注文してください。これは、J2EEユーティリティジャーとしてJARをEARプロジェクトに取り付けることが機能しないことを意味します。耳は「Webレベル」ではなく、「アプリレベル」です。したがって、これを行うには、J2EEモジュール依存関係の画面でJavaプロジェクトを耳に関連付ける必要がありますが、ユーティリティジャーとしてではありません。代わりに、「lib」と書かれたボックスをチェックします。これは、動的なWebプロジェクト/戦争のLIBディレクトリに表示/マウントできることを意味します(これも必要です)。驚くべきことに、管理コンソールはあなたのクライアントジャーを真のJax-WS Webサービスクライアントとして見ることができます!そして今、あなたはあなたのセキュリティのニーズを満たすために、ポリシーセットとクライアントのバインディングをそれに関連付けることができます!

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top