問題タブ [wsit]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
8545 参照

web-services - WSIT、Maven、および wsimport -- 連携できますか?

私はMavenで小規模なマルチモジュールプロジェクトに取り組んでいます。Web サービスを使用して UI をデータベース層から分離しました。jaxws-maven-plugin のおかげで、WSDL と WS クライアントの作成は多かれ少なかれ処理されます。(プラグインは、本質的に wsgen と wsimport のラッパーです。) 今のところ、とても良いです。

問題が発生するのは、WSIT セキュリティを図の中に重ねようとしたときです。NetBeans ではセキュリティ メタデータを簡単に生成できますが、wsimport では基本認証レベルのセキュリティを超えるものを処理することはまったくできないようです。

以下は、Maven ビルド中に wsimport を呼び出す現在の安全でない方法です。

xauthFile、xadditionalHeaders をいじってみました。引数を介して javax.xml.ws.security.auth.username とパスワードを渡します。また、コマンド ラインから wsimport を使用して、追加のセキュリティ情報を持つ Tomcat 生成の WSDL を指定しようとしました。ただし、wsimport によって生成されたファイルの構成はまったく変更されないようです。

ここでの私の質問は、WSIT 準拠のクライアントを取得するために、Maven と jaxws プラグインを完全に放棄して立ち往生しているのでしょうか? WSIT クライアントを自動生成する方法はありますか? または、手動でクライアントを生成する必要がありますか?

ここに書いたこと以外に追加情報が必要な場合はお知らせください。私はTomcatにデプロイしていますが、それは問題ではないようですが、MavenはMetroをデプロイされたWARファイルに喜んで取り込んでいるようです。

前もって感謝します!

編集: WSIT をいろいろ試した結果、うまくいったのは次のとおりです。

手始めに、Netbeans を使用して WSIT クライアントを生成します。テストして動作することを確認してから、WSIT 構成ファイル (wsit-client.xml および [Web サービス名].xml) を WS クライアント プロジェクトの META-INF ディレクトリに移動します。

セキュリティの観点から、プロジェクトへの関連する追加は、Web サービス xml のタグです。

明らかに、ビルド中に管理する必要があるハードコードされた依存関係がいくつかあります。ユーザー、パスワード、トラストストアの場所、およびピアエイリアスはすべて開発時のデフォルトであり、システムが開発からテストおよび本番に移行するにつれて変更されます。これを管理するためのいくつかの異なる戦略をいじっていますが、おそらく各環境への構築のために Hudson で環境変数を設定することになるでしょう。

Maven の jaxws プラグインの設定を少しいじります。WSDL はビルドの一部として生成されるため、ローカルで参照する必要はありません。以下は、WS クライアント ターゲットの wsimport コマンドのプラグイン タグです。

最後に、もちろん、Web サービスを呼び出す必要があるすべてのプロジェクトで、Metro 依存関係が適切に設定されていることを確認してください。

0 投票する
2 に答える
5504 参照

java - Metro を使用した Ws-Security ヘッダー

WS-Security を実装しているが、WSDL でポリシーを定義していない Web サービスがあります。Axis 2 をクライアントとして使用して、この Web サービスを正常に使用できます。

Metro 2 を使用して同じ Web サービスを使用しようとしていますが、wsse:security ヘッダーが使用できません。サービスが私の管理下にないセキュリティポリシーを定義している場合にのみ機能します。サンプル Web サービスを作成してこれをテストしました。ポリシーを定義しない限り、メトロ クライアントは wsse:security ヘッダーを送信しません。

Metro の使用に欠けているものはありますか?

編集 - - - - - - - - - - - - - - - - - - - - - - - - - ----------------------------------------------

wsdl のローカル コピーを作成し、その中でポリシーを定義しました。この wsdl を使用して Web サービス クライアントを作成しましたが、まだセキュリティ ヘッダーが機能しません。wsit-client.xml ファイルは問題ないようです。すべての構成を、ポリシーを定義する Web サービスのクライアントと比較したところ、構成は同じですが、それでも機能しません。現時点での私の結論は、metro クライアントには実際の Web サービスでポリシーを定義する必要があるということです。

編集 - - - - - - - - - - - - - - - - - - - - - - - - - ------------------------------------------------------

wsit-client.xml の内容

NewWebService.xml は wsit-client.xml と一緒に配置され、次のポリシー情報が含まれています。

これはバインディングで次のように参照されます -

変更された wsdl には次のポリシーが含まれています -

0 投票する
2 に答える
2700 参照

java - WSIT/Metro が Security SOAP ヘッダーを認識しない

WSIT/Metro を使用して単純な Web サービスを作成しています。クライアントが単純なユーザー名/パスワード認証方式で接続しようとすると、サーバーで次のエラーが発生します。

WSIT に Security ブロックを理解させる方法がわかりません。

クライアントからのリクエスト:

サーバーの WSDL:

私のコード、サーバーのセットアップ:

0 投票する
1 に答える
419 参照

java - Metro & StreamBuffer 名前空間エラー - これを正しく理解していますか?

すべて、私は (まだ) Java/Metro 2.0 から WSE 3.0 .NET Web サービスを呼び出すことに取り組んでいます。メッセージの本文とヘッダーを暗号化し、ヘッダーに署名するように、セキュリティ要件が設定されています。サービスにリクエストを送信して応答を受け取ることはできますが、Metro は署名を検証できず、WSIT コードからエラーをスローします。私は CVS から最新の WSIT コードを入手しました。これは、大失敗しているメソッドのコード スニペットです。

com.sun.xml.ws.security.opt.impl.incoming.GenericSecuredHeader から:

ご覧のとおり、そこには TODO があります。これは、メソッドが現在の状況を処理できないことを示していると思いますが、「範囲内」の名前空間が何を意味するのかわかりません。

以下は、壊れている Web サービス応答からの XML のスニペットです。

スタック トレース (以下に含まれる) では、参照 URI="#Id-46282a5d-c7fa-403c-8ac9-f7df0dfdb0cf" を検証できないと不平を言っています。 私がはっきりしていないのは、参照要素に名前空間属性または接頭辞がないために失敗しているのでしょうか? 親の Signature 要素から名前空間を継承することを許可する必要がありますか?それとも、StreamBuffer クラスがそれを処理できないようにすることはできますか?

対照的に、私の要求 (WSIT によって生成されたもの) からの同様の XML スニペットを次に示します。ここで、ds プレフィックスは

xmlns:ds="http://www.w3.org/2000/09/xmldsig#"

Metro がこれらのブロックを生成すると、すべてに名前空間プレフィックスが付きます。

まだここまで読んでいるなら - ありがとう!スタック トレースの一部を次に示します。

0 投票する
1 に答える
287 参照

java - Netbeans Web サービスクライアントは、IDE から実行している場合にのみ機能します

Netbeans 6.8 と Metro 2.0 を使用して、Web サービスを呼び出し、その結果を Java Swing コンポーネントに表示する単純なアプリケーションを作成しました。Netbeans IDE で (F6 を使用して) アプリケーションを実行すると、アプリケーションは完全に動作します。

ただし、dist フォルダー内の .jar ファイルからコンパイル済みアプリケーションを実行しようとすると、swing UI が表示されますが、Web サービスを呼び出すボタンを押しても何も起こりません。

これを機能させる方法を知っている人はいますか?

0 投票する
1 に答える
4269 参照

ant - AntWSGENWSDL生成-WSITポリシー定義を含める

WSGEN Antタスクを使用して、サービスクラスからWSDLを生成しています。タスクは正常に実行され、必要なWSDLを生成します。私が抱えている問題は、WSDLポリシー定義をWSDLの先頭に組み込むようにしようとしていることです。

Netbeansにサービスをデプロイすると(つまり、Antを使用してWSGENを処理しない場合)、NetbeansはWSITポリシー定義を含むWSDLファイルを生成します。WSITポリシーは、Netbeansによって生成されたXMLファイル(web-inf / wsit-com.mypackage.web.webservice.jaxws.MyServiceService.xml)に含まれています。

このファイルの場所をWSGENタスクのクラスパスに追加したので、それを検出できるはずです。ただし、WSGENタスクによって作成されているWSDLには、WSポリシー定義は含まれていません。

AntタスクにWS-Policyを含めるように指示するために渡すことができる引数はないようです。ただし、内部的には、WSGENタスクはNetbeansで使用されているものと同じwsgen、つまりglassfishv2 / lib/webservices-tools.jarからのものを使用しています。

AntタスクにWS-Policy定義を含めることができた人はいますか?私は何が間違っているのですか?

乾杯、

J

0 投票する
1 に答える
1158 参照

java - wsit-client.xml内の場所を別のjar内のファイルにインポートし、URL文字列を使用してクラスパス上のファイルを検索します

通常、wsit-client.xmlには次のようなインポートステートメントがあります。

クラスパス/META-INFの1つのwsit-client.xmlをオンラインにすることができますが、そのwsit-client.xmlの別のjarにあるxmlを参照できますか?何かのようなもの :

すべてのWebサービスのインポートを含む単一のwsit-client.xmlを作成したいのですが、すべての異なるWebサービスの構成を異なるプロジェクトに分離したいと思います。

0 投票する
1 に答える
282 参照

jax-ws - 単一のメトロクライアントから2つの異なるセキュリティ対応Webサービスにアクセスする

同様の質問がquestion:is-there-a-way-to-use-multiple-wsit-client-xmlとして投稿されました。Metroクライアントを使用して2つの異なるWS-Security対応Webサービスがあり、単一のクライアントを使用してそれらにアクセスしたいと思います。これには、クライアントプロジェクトで2つのwsit-client.xmlを定義する必要があると思います。2つのwsit-client.xmlファイルを定義することは可能ですか?または私は何かが欠けていますか。Axis2 + rampartを使用すると、2つの異なるポリシーファイルを使用することでこれが可能になると思います。Axis2 + rampartの使用を避けようとしています。これには、さらに70個のjarを追加する必要があり、クラスパスにすでに50個のjarがあるモジュールがいくつか必要になるためです。

0 投票する
1 に答える
439 参照

java - wsimport で生成されたすべての例外クラスの名前を変更します

.net wsdl を使用して wsimport でコードを生成すると、[servicename][operationname]FaultFaultFaultMessage のような非常に長い例外クラスが発生します。

各例外の名前を変更する方法は知っていますが、jaxb .xjb ファイルを使用してすべての例外を一度に「テンプレート化」できますか?

0 投票する
2 に答える
511 参照

wcf - WSIT/JAX-WS を使用した HTTP メタデータ リクエスト

.NET STS および保護された Web サービスに対して Java (Metro を使用) クライアントを実行する際に問題があります。ただし、.NET ベースのクライアントを実行すると、常に機能します。

おそらく既にご存じのとおり、JAX-WS クライアントが実行されると、(設計時に既に wsimport が実行されていても) 実行時にサービスからメタデータを要求します。ただし、このランタイム メタデータ リクエストに問題があるようです。

私が直面している問題は、メタデータの実行時要求中に、WCF サービスによってエクスポートされた一部の WSDL が原因で、mex 要求中に Java クライアントが「ハング」することです。ハングすると、RST 要求を発行するまでには至りません。

たとえば、9 つの [OperationContract] 属性があり、それが機能する場所にたどり着くことができます。しかし、10 番目のサービス メソッドを追加すると、機能しません。ただし、9 つのうちの 1 つを削除すると、機能します。組み合わせて一致させることができ、同じパターンが成立するため、特定の方法に問題がないことはわかっています。

一部の WSDL が機能し、一部の WSDL が機能しない理由について、パターンや理由を推測することはできないようです。サービスメソッドの数に制限があるとは思えません。しかし、これはエクスポートされた WSDL の「全体的な複雑さ」の問題でしょうか?

誰にもアイデアはありますか?以前にこの問題に遭遇した人はいますか?

さらに情報が必要な場合は、喜んで投稿できます。最初の投稿を扱いやすい長さに保つようにしています。

また、.NET 4 で STS とセキュリティで保護された Web サービスを実行しており、それらは WIF に基づいていることも付け加えておきます (したがって、セキュリティ設定について心配する必要はありません)。私の .NET クライアントも .NET 4 です。Java 側では、Glassfish 3 を実行する Metro 2.1 で Netbeans 6.9.1 を使用しています。Metro 2.0 で実行しても同じ問題が発生することを確認しました。