問題タブ [jax-ws-customization]
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 - 返されたオブジェクトをリストにアンラップするために JAX-WS に適用するカスタマイズは何ですか?
引数の 1 つとして文字列のリストが渡され、オブジェクトのリストを返すChemSpider WebServiceCSID2ExtRefs
の操作などをカスタマイズする方法があるかどうかを見つけようとしています。
生成されたwsimport
インターフェイス メソッドは次のとおりです (with jaxws:enableWrapperStyle = true
):
しかし、私はラップを解除してリストに変えたいと思いArrayOfExtRef
ます。たとえば、次のように取得します。ArrayOfString
この変更を手動で行うと、JAX-WS は正常に動作します。そのための適切なカスタマイズを書く方法はあるのだろうか?
java - wsimport ant タスクの使用中にすべてのパッケージ名にプレフィックスを追加する
wsimport ant タスクを使用してクライアント コードを生成しています。周知のように、自動生成されたクラスのパッケージ名は、WSDL にある名前空間に従って決定されます。
これらのパッケージ名を変更し、パッケージ名のプレフィックスを追加したいと考えています。たとえば、wsdl の名前空間がcom.example
の場合、パッケージ「prefix.com.example」が生成されます。
この問題を処理するために、2 つの異なる解決策を試しました。しかし、彼らは私を助けることができませんでした。
-p prefix.com.example
生成されたすべてのクラスがこのコマンドで 1 つのパッケージに含まれているため、wsimport ant タスクで使用されるコマンドは機能しません。- jaxws または jaxb バインディング ファイルも同様に機能します。このタグを追加する
<jaxb:package name="prefix.com.example" />
と、生成されたクラスは という名前の 1 つのパッケージに含まれますprefix.com.example
。
クライアント コードの生成中に、パッケージ名のすべての名前空間にプレフィックスを追加したいだけです。
この件に関して他の解決策はありますか?
前もって感謝します。
java - Webサービスインターフェイスはどこにありますか?
私はJBossDeveloperStudio( Eclipseベース)を使用して中規模のプロジェクトに取り組んでいます。2つのWebプロジェクトがあり、そのうちの1つはJBossWSでJAX-WSを使用してWebサービスを格納/管理します。上司がソフトウェアアーキテクチャドキュメントを更新していて、Webサービスプロジェクトで生成されたインターフェイスはどこにあるのかと尋ねられました。これらのインターフェイスはデフォルトでツールを使用して生成されることを彼女に伝えた後、すべてのプロジェクトの検索を開始しましたが、明示的なインターフェイスはありません(明示的には、を含むMyService.javaファイルを意味しますpublic interface MyService
)。クラス、WSDLファイル、および対応するサービス実装クラスを呼び出すweb.xmlで構成されたサーブレット。
これらのサービスのインターフェースを作成する必要がありますか?サービスクラスごとに100個のメソッドがあるので、そうなる場合、またはそうなる可能性がある場合、これらのインターフェイスの作成で私とチームを支援するツールはありますか?
いくつかの情報を追加するために、インターフェイスを使用してWeb上でWSDLファイルを呼び出すこれらのサービスを使用する別のWebプロジェクトがあります。
soap - JAX-WS @RequestWrapper属性(またはフルBean)を抽出する方法
RequestWrapperオブジェクトから(XML属性値のように)属性を抽出することは可能ですか?
私の実装では、属性の値を使用したいのですが、@ WebParamで参照することはできません。これは、要素専用であるためです(私は信じています)
@SOAPBindingは「Document/Literal/Wrapped」と定義されています
WSDL(関連セクション、**のターゲット属性):
SEI抽象メソッド(WebParamでXML要素を指定できます):
実装:
@RequestWrapper Bean Status(@WebParam経由のエンティティ)の値を読み取る方法は明らかですが、 Status内の値( Handle )にアクセスする方法はあります。WebParamは、私が理解している限り、属性をサポートせず、要素のみをサポートします。
解決策を尋ねる/探す別の方法は、RequestWrapperによって参照されている完全なBean(この場合はGetStatus )にアクセスする方法を尋ねることです。
Document / Literal / Bareに移行する場合は、パラメーターと戻り値にBeanを反映させることができますが、すべての情報がこれが最も広く推奨されるバインディングであることを示しているため、wrappedを使用してこれを解決したいと思います。
web-services - Jax-WS WSDL @IDREF バインディングを変更する方法
Jax-WS Spring サポートを使用して、Tomcat サーブレット コンテナーでコントラクト ファーストの JAX-WS Web サービスを正常に公開しています。私はxs:idref
タイプでトラブルを抱えています。元の XSD ファイルに複合型が含まれています
どの xjc が正しくコンパイルされるか
しかし、Web サービスをデプロイすると、@XmlIDREF
アノテーションが無視されxs:anyType
、結果の WSDL の in the namespace 宣言になってしまいます。
問題の Web サービスのクライアントは、これを使用して (C# を使用して) クライアント スタブを生成できないと報告していanyType
ます。どうすれば元に戻すことができxs:idref
ますか? ありがとう。
web-services - SOAPHandler (JAX-WS) をプラグインするには?
SOAPHandler を使用して SOAP ヘッダーを処理したい、つまり、SOAPHandler を作成しましたが、それを指定されたサービスにプラグインするにはどうすればよいですか? 言い換えれば、このハンドラーはこのサービスのメッセージを処理する必要があるということです.おそらく、注釈またはxml構成を使用する必要があります... ?..
web-services - JAX-WS を使用した非同期 Web サービス呼び出し: 非同期に wsimport サポートを使用するか、独自にロールしますか?
wsimport を使用して、非同期 Web サービス呼び出しを持つ Web サービス クライアント アーティファクトを作成する方法を説明しているYoung Yang による優れた記事があります。非同期では、WSDL にタグが含まれている必要があります
<enableAsyncMapping>true</enableAsyncMapping>
そのバインディングセクションで。JAX-WS アノテーション付き Java クラスでボトムアップ アプローチを使用している場合、WSDL は Web サーバー上で生成されたアーティファクトであるため、これを直接 WSDL で行うことはできません。代わりに、Ant や Maven などのビルド ツールを使用して、wsimport が WSDL で実行されるときにこのバインディングを含めます。
生成されたクライアント アーティファクトには、
または
これは未来です。
Yang の記事を読んだ後の私の質問は、エグゼキューターとフューチャーを使用して、独自の非同期 Web サービス呼び出しをロールしない理由です。wsimport によって作成されたアーティファクトには、ロール ユア オウン アプローチでは見られない利点がありますか?
両方のアプローチの経験や洞察をお持ちの方がいらっしゃいましたら、フィードバックをいただければ幸いです。
java - JAX-WSによってエクスポートされるオブジェクトにデフォルトのコンストラクターが必要なのはなぜですか?
JAX-WSでは、送信されるすべてのクラスにデフォルトのコンストラクター(引数なしのコンストラクター)が必要です。クライアントはWSDLに基づいて独自のクラスを作成するため、その要件を理解していません。IMOこの要件は、Webサービスの入力パラメーターとして使用されるクラスに対してのみ意味があります。
誰かがその要件を回避する方法を知っていますか?
java - jaxws 複合型パッケージ
wsimport を使用して、jaxws SOAP 生成クライアントによって消費される WCF サービスがあるとします。サービスSEIは次のようになります
複合型 Person を取り、同じ型 Person を返し、生成された DoSomething は次のようになります
Person が DoSomething と同じパッケージである場合、すべて正常に動作します。 Person を別の場所に移動するとすぐに、WCF サービスは Person オブジェクト (フィールドは null または 0) から何も取得できず、WCF からの戻り値は JAXWS によって正しく逆シリアル化できません。例外はありませんでしたが。
それらが同じパッケージにある場合、 setPerson が呼び出されますが、異なるパッケージにある場合は呼び出されません。
複雑なタイプの Person を DoSomething として別のパッケージに入れることは可能でしょうか。
java - Tomcat 7 での JAX-WS Web アプリケーションのデプロイ
シンプルな JAX-WS Web サービスを開発しています。ANT ビルド スクリプトを使用して WAR ファイルを作成しています。ファイルを Tomcat 7 サーバーにデプロイすると、次の例外がスローされ、次のようなデプロイ エラーが発生します。
JAXB 2.1 API はブートストラップ クラスローダーから読み込まれますが、この RI (jar:file:/D:/DreamSoln/Server/apache-tomcat-7.0.29/webapps/WebserviceDemo/WEB-INF/lib/jaxb-impl. jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) には 2.2 API が必要です。承認されたディレクトリ メカニズムを使用して、jaxb-api.jar をブートストラップ クラスローダーに配置します。
私はJDK 1.6をインストールしました。承認されたメカニズムを試しました。つまり、lib/endorsedディレクトリを作成し、そこにjaxb-api.jarとjaxws-api.jarをコピーしました。しかし、それでもうまくいきません。
Web アプリの WEB-INF/lib から jaxb-api.jar と jaxws-api.jar を削除する必要がありますか?
他に何をする必要がありますか?