問題タブ [jaxws-maven-plugin]
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.
spring - 変更できますか動的 - JAX-WS を使用
私は SOAP Web サービスを初めて使用します。デプロイされている環境に応じて、SOAP アドレスの場所を変更できるかどうかを知りたいです。私はjaxws-springを使用しています
java - 文字列以外の要素に対して空のタグを生成するように JAXB を取得するにはどうすればよいですか?
編集:私の意図をより明確にするために、質問を再フォーマットしました。
JAXB マーシャラーを使用して Java オブジェクトを XML にマップし、ベンダー SOAP サービスの SOAP 要求を作成しようとしています。空またはnullであっても、リクエストに提示する必要がある要素はほとんどありません。pom.xml でjaxws-maven-plugin
プラグインを使用して、WSDL ファイルからソースを生成します。wsimport
私はここ[ https://stackoverflow.com/questions/11215485/jax-ws-to-remove-empty-tags-from-request-xml ]から読んで理解しましたxs:string
タイプの要素の場合、空のタグは空""
の文字列を値として設定することで生成されます。ただし、それぞれオブジェクトxs:dateTime, xs:boolean, xs:integer
を生成するなどのタイプの要素では実行できません。XMLGregorianCalendar, BigInteger, Boolean
値を null に設定すると、マーシャリング プロセスで要素が生成されません。他の人が指摘したように、に追加することで実現できますがnillable=true
、@XmlElement
最初のビルド後にmavenからプラグインを削除しない限り、次のビルドで上書きされる生成されたソースに変更する必要があります。
私の現在の回避策は、リクエストで提示する必要がある特定の要素のタイプをxs:string
WSDL ファイルに変更し、対応する Java オブジェクト フィールドに空の文字列を渡すことです。
nillable=true
私の質問は、生成されたフィールドに追加するために jaxws:wsimport をトリガーする WSDL 側で変更を加えることは可能@XmlElement
ですか? 生成されたソースではなく WSDL ファイルを変更することを好む理由は、
- すべての変更を 1 か所にまとめて簡単に文書化できるように、すでに WSDL ファイルにいくつかの変更を加えています。
- 生成されたソースを変更しないようにして、Git リポジトリから除外し、ビルドごとに上書きされないようにしたいと考えています。
以下は、コードの簡略化されたバージョンです。
まず、complexType Currency 用に生成された Java クラスを用意します。
フィールドが存在しないため、フィールドをnullに設定しました。
<typ:Currency /> が生成されますが、以下のように生成する必要があります。