問題タブ [jax-ws]
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.
java - WSContext.getUserPrincipal() がパスワード ダイジェスト認証に対して null を返す
私の WebService では、呼び出し元の ID をログに記録する必要がありますが、WS-Security とパスワード認証を使用してユーザーが認証されていても、wsContext.getUserPrincipal() は null を返します。JAX-WS 2.1 の JavaDocs によると、WSContext.getUserPrincipal() は、ユーザーが認証されていない場合にのみ null を返す必要があります。
ユーザー プリンシパルを WSContext に設定するには、セキュリティ ハンドラで何かを行う必要がありますか? ドキュメントは、それが自動的に行われることを示しているようです。
Tomcatのjax-ws 2.1.3スタックでmetro 1.1スタック(1.1.5だと思います)を使用しています。
java - jaxb 外部バインディングのカスタマイズの使用中にエラーが発生しました
wsdlc ツール (weblogic 10.3.1) を使用して、wsdl からクラスを生成します。次の外部 jaxb バインディング カスタマイズ ファイルがあります。
コンパイル時のエラー メッセージ: シンボル my.MySuperClass が見つかりません。そしてjavacから:「パッケージmyは存在しません」。クラスパス =<pathelement location=
などを介して含めるすべてのものと、Eclipse プラグインからの 60 行。問題は、wsdlc が開始する javac コマンドにあります。このコマンドのクラスパスは正しいですが (ハードコードされたパスなど)、「パッケージ ... が存在しません」。
ant からの wsdlc の使用法は次のようになります。
java - ユーザー名とパスワードがデータベースにある場合の JAX-WS および BASIC 認証
私は JAX-WS が初めてで、理解できないことがあります。
JAX-WS セキュリティの設定方法に関するチュートリアルはたくさんありますが、ほとんどすべての場合、BindingProvider.USERNAME_PROPERTY と BindingProvider.PASSWORD_PROPERTY はいくつかの .xml ファイルに格納されています (私が信じているコンテナーによって異なります)。それらは「ハードコーディング」されています。あれは。そして、それは私が得られないものです。BindingProvider.USERNAME_PROPERTY および BindingProvider.PASSWORD_PROPERTY をデータベース内のユーザー名およびパスワードと比較して、Web サービス クライアントを認証するにはどうすればよいですか? クライアント側で BindingProvider.USERNAME_PROPERTY と BindingProvider.PASSWORD_PROPERTY を次のように設定してみました。
そして、サーバー側で次のように取得します。
しかし、私は常にnullを取得します.xmlで何も設定しませんでした.Webサービスは問題なく動作しますが、これらの変数を取得できない:(
Java 1.6、Tomcat 6、およびJAX-WS の両方で実行しています。
データベースからのパスワードを使用してユーザーを認証するためのヘルプは非常に高く評価されています, ありがとう.
java - Jetty7が埋め込まれたJAX-WSエンドポイントを公開する
誰かがこれを手伝ってくれる?
組み込みのJetty7をエンドポイントとして使用したい。これは私が試したものです:
}
しかし、これがデフォルトのsunHttpServerの代わりにJettyを実際に使用しているかどうかはわかりません。
言及された1つのブログ
しかし、Jetty7にはそのようなHttpServerProviderはないようです。
助けてくれてありがとう、アクセル。
java - JAX-WS Web サービスを使用する Microsoft SSRS
私は JAX-WS (v2.1.3 - Sun JDK 1.6.0_05) を使用して Web サービスを開発しました。これは、Java クライアント、SoapUI、またはその他の Web サービス テスト ツールを使用すると問題なく動作します。2005 Microsoft SQL Server Reporting Services を使用してこのサービスを利用する必要があるのですが、次のエラーが表示されます
HTTP プロキシを使用して SSRS の送信内容を盗聴すると、投稿本文の先頭に EF BB BF が表示され、JAX-WS はそれを好みません。特殊文字を削除し、Fiddler を使用してリクエストを再送信すると、Web サービスの呼び出しが機能します。
私の質問は、SSRS がこれらの特殊文字を導入する理由と、それを停止するにはどうすればよいかということです。止められない場合、どうすれば JAX-WS にそれらを無視させることができますか? ここに私のSSRSクエリがあります:
以下のようなクエリも試しました。
私が何を試すことができるかについて誰かアイデアがありますか? SOAPBinding などのタイプを変更するために、JAX-WS 側でいくつかの異なるタイプの注釈を試しましたが、Microsoft SSRS で動作させるものはないようです。
java - デフォルトのsaxパーサーを使用すると、巧妙に細工されたxmlによってjaxb unmarshalが悪用されますか?
したがって、現在のプロジェクトでは、JAXB RI を Sun の JRE (Xerces だと思います) のデフォルトの Java パーサーで使用して、任意の XML を非整列化します。
まず、XJC を使用して次の形式の XSD をコンパイルします。
「良いケース」では、すべてが設計どおりに機能します。つまり、このスキーマに準拠する XML が渡された場合、JAXB はそれをオブジェクト ツリーに正しく非整列化します。
問題は、外部DTD参照を含むXMLを渡されたときに発生します。
このようなものをアンマーシャリングすると、SAX パーサーはリモート エンティティ (" http://somehost/foobar.dtd ") をロードしようとしますが、このスニペットは以前に XJC でコンパイルしたスキーマに明らかに準拠していません。
この動作を回避するには、適合する XML (コンパイルした XSD によると) がリモート エンティティの読み込みを必要としないことを知っているため、すべてのリモート エンティティの読み込みを回避するカスタム EntityResolver を定義する必要があります。したがって、次のようなことをする代わりに:
私はこれを行うことを余儀なくされています:
だから私の究極の質問は:
JAXB でアンマーシャリングする場合、問題の XML がそれらのリモート エンティティをロードせずに無効であると認識できる場合、基礎となる SAX パーサーによるリモート エンティティのロードを自動的に短絡する必要がありますか?
また、これはセキュリティ上の問題のように思えませんか? JAX-WS が内部で JAXB に依存していることを考えると、特別に細工された XML を任意の JAX-WS ベースの Web サービスに渡し、WS ホストに任意の URL をロードさせることができるようです。
私はこれに比較的初心者なので、おそらく何かが欠けている可能性があります。もしそうなら教えてください!
java - SOAP ボディに UTF-8 BOM が含まれている場合の JAX-WS エラー
私は、WebLogic 10.3 にデプロイされた JAX-WS (v2.1.3 - Sun JDK 1.6.0_05) を使用して Web サービスを開発しました。この Web サービスは、Java クライアント、SoapUI、またはその他の Web サービス テスト ツールを使用すると問題なく動作します。2005 Microsoft SQL Server Reporting Services を使用してこのサービスを利用する必要があるのですが、次のエラーが表示されます
例外のため、SOAP メッセージを作成できませんでした: XML リーダー エラー: 予期しない文字コンテンツ
HTTP プロキシを使用して SSRS が JAX-WS に送信しているものを盗聴すると、投稿本文の先頭に EF BB BF が表示され、JAX-WS はそれを好みません。特殊文字を削除し、Fiddler を使用してリクエストを再送信すると、Web サービスの呼び出しが機能します。
JAX-WS が標準の UTF-8 BOM で爆発するのはなぜですか? この問題を回避するための回避策はありますか? どんな提案でも大歓迎です。ありがとう
--ヴィニー
java - Web サービスのクライアントの IP アドレスを取得する
JAX-WS を使用していますが、Web サービスを使用しているクライアント情報を取得できません。私は JAX-RPC と Apache Tomcat Axis でそれを行う方法を見つけましたが、JAX-WS ではそうではありませんでした。誰かがこれについて考えを持っていますか?
java - JDK1.5 の Spring に沿った JAXWS コードの生成と実装
一連の WSDL (それぞれ独自の XSD を持つ) からソース コード スタブを生成しようとしています。これは問題なく実行でき、JDK1.6 で完全に動作しますが、JDK1.5 で動作する必要があります。
ソースコードを生成するために jaxws-maven-plugin を使用していますが、利用可能な wsimport バイナリに依存します (これは JDK1.5 では利用できません)。これに対する回避策が見つかり、ソース コードを生成できるようになりました。
最後の問題は、生成されたクライアント コードとのインターフェイスに JaxWsPortProxyFactoryBean を使用している Spring (2.5.6) でコンパイル済みのスタブ コードを使用しようとしたときに発生します。java.lang.NoClassDefFoundError: javax/xml/ws/soap/Addressing が発生します。その理由を調べたところ、javax.xml.ws/javax-api/2.1 の依存関係にこのクラスが含まれていないことがわかりました。バージョン番号を 2.1-1 にアップグレードしましたが、(ソース コードを生成するために) プロジェクトをビルドすると、次のエラーが発生します。
JAXWS クライアント スタブ コードを生成し、それを JaxWsPortProxyFactoryBean で動作させることができるように、だれかがこれに対する解決策を提供できますか?
前もって感謝します
ジョナサン