問題タブ [jaxb-xew-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.
wsimport - xsd から生成されたクラスで @XmlElementWrapper を生成するように maven-jaxws-plugin を取得する方法は?
maven-jaxws-plugin を使用して、wsdl スキーマから Java クラスを生成しています。生成されたクラスで @XmlElementWrapper アノテーションを生成していません。この投稿から、私は jaxb-xew-plugin を使用する必要があることを理解していますが、maven-jaxws-plugin で動作させることができません。どんな助けでも大歓迎です。試した設定はこちら
maven-jaxb2-plugin とのみ統合できる場合は、Web サービスを立ち上げるのを手伝ってもらえますか? 基本的に、wsdl を指定する方法とサービス クラスを生成する方法を教えてください。(@WebService アノテーション付き)
ありがとう、
バーギャ
java - wsimport/xjc コマンド ライン プラグイン
この投稿を使用して、maven でxewという名前の wsimport/xjc プラグインを正常に使用しました。
現在、私の会社でこれに Maven を使用することはできないため、Java 7 SDK の wsimport ユーティリティを使用しようとしています。
WSDL をインポートするときに xew xjc プラグインを含めるように wsimport に指示するにはどうすればよいですか?
私の現在のコマンドラインは次のとおりです。
ただし、 -B パラメータはまだ食べません: no such JAXB option: -Xxew
. xew プラグインと jaxb-xjc.jar は、作業ディレクトリとシステムの CLASSPATH にあります。
jaxb - カスタム JAXB バインディングにより名前空間エラーが発生する
歴史
自分の管理下にないスキーマから Java クラスを生成しています。Web サービス プロジェクトの依存関係である jar にエクスポートしています。これは正しく動作します。xs:date と xs:dateTime を のorg.joda.DateTime
代わりに のインスタンスとしてマーシャリングおよびアンマーシャリングするカスタム バインディングを追加しようとしましたXMLGregorianCalendar
。jar を生成し、Web サービス内でコンパイルして、問題なくデプロイできます。ただし、展開すると、以前は機能していた XML 要求が次の例外をスローするようになりました。
この例外は、ルート要素では発生しません。xs:date および xs:dateTime の以前のいくつかのインスタンスは問題なく解析され、例外は xs:date を含む複合型で最初に表示されます。
XML 構造の例を次に示します。
webServiceNamespace
とは異なりますschemaNamespace
が、以前は石鹸の封筒に必要だったのは 1 つだけでした。
質問
カスタム バインディングを追加した後、カスタム バインディングの影響を受ける子を持つ少数の親要素のみに名前空間を配置するようにパーサーが要求するのはなぜですか?
BindingAdapter
バインディング.xjb
POM.xml(とにかく関連ビット)
コメント
生成されたクラス ファイルが同一であることがわかる限り (ラッパーに固有の追加の注釈を除いて)、これはバインドなしで完全に正常に機能することを強調したいと思います。SOAP 要求で使用される xml は、Web サービスによって生成される WSDL に対して有効であり、カスタム バインディングを使用するかどうかにかかわらず、WSDL は同じです。コレクションのメンバーであり、日付を持つ子を持つ要素のみがスキーマ名前空間を必要とします。最後に、リクエストで名前空間を指定すると、レスポンスによってリクエスト オブジェクトが webServiceNamespace に配置され、スキーマ定義のルート以外のすべての子が schemaNamespace に配置されます。以前は、応答全体が webServiceNamespace にありました。
明らかに、カスタム バインディングを追加すると、名前空間の解決に問題が発生します (技術用語)。
提案?
更新: pretty-collections 生成用の XEW プラグインを削除しても、この問題には影響しませんでした。
更新: これは、バインディング前後の日付を含むクラスの例です。変更する唯一のプロパティは次のとおりです。
前
後
更新: 名前空間のないスキーマに対してビルドを実行すると、これは問題なく機能します。明らかに修正ではありませんが、現時点では回避策です。
maven - com.sun.tools.xjc.Plugin: プロバイダーサブタイプではない
Maven でビルドされている CXF JAX-RS アプリがあります。Gradle への変換に取り組んでいますが、Ant XJC タスクを使用しています。
現在のビルドでは、いくつかの拡張機能が使用されています。そのうちの 1 つは「要素ラッパー」プラグインのコピーであり、もう 1 つは「jaxb-fluent-api」です。
これら 2 つのプラグインの jar ファイルを xjc クラスパスに配置しようとしましたが、XJC タスクを実行すると、次のようになります。
java.util.ServiceConfigurationError: com.sun.tools.xjc.Plugin: プロバイダー dk.conspicio.jaxb.plugins.XmlElementWrapperPlugin がサブタイプではありません
XmlElementWrapperPlugin クラスは「com.sun.tools.xjc.Plugin」を拡張します。
ここで何が起こっているのか分かりますか?
問題があれば、xjc プラグインの Maven 構成は次のようになります。
これが私の「build.gradle」で、リポジトリのみが省略されています。
アップデート:
これは「Element Wrapper」拡張機能の問題ではないと判断しました。そのjarをクラスパスから削除して再構築すると、「Fluent API」プラグインについて同じエラーが報告されます。
また、これは厳密には Gradle の問題ではないと判断しました。Ant の「build.xml」や、「XJCFacade」Java クラスを直接呼び出す単純なシェル スクリプトでも同じ症状が発生します。実際、スキーマ ファイルを指定しないことで、このスクリプトを少し単純化できます。これにより、スキーマを処理しようとする前に、このエラーが発生することが明確になります。
以下は私の現在のスクリプトです:
これらすべてのアーティファクトを Gradle または Maven キャッシュにダウンロードし、単純なフォルダー構造にコピーすることで、同じテストを構築できます。
また、このテストは主に Windows 7 で実行していますが、このプロジェクトを圧縮して CentOS VM に移動したところ、まったく同じエラーが発生しました。
java - xjc コマンドラインで JAXB 拡張機能を使用する方法
ここで関連する問題に取り組んでいますが、別の質問があります。おそらくそれはすべて同じ問題の一部ですが、異なるようです。
Ant タスクとファサードを介して XJC を実行しているときに問題が発生したため、JDK のコマンドライン "xjc" ツールを使用して XJC を実行しようとしています。
元の問題と同様に、"Element Wrapper" と "Fluent API" 拡張機能を使用しようとしているので、コマンド ラインは次のようになります。
これらは基本的に、長い間機能してきた「cxf-jaxb-plugin」Maven プラグインに送信したパラメーターと同じです。残念ながら、この「xjc」コマンド ラインは次のエラーで失敗します。
認識されないパラメーター -Xxew
ここで何が問題なのですか?
jaxb - リスト内の Cxf Wsdl2java null エントリが消える
リストのアンラップ用のxew プラグインを使用して、cxf を使用して Web サービス クライアントを作成しました。
問題はnull
、リスト内の が消えることです。例えば:
List<String>
with Strings とnull
-entryを含む Request があります
リクエストがサーバーに到着すると、null
エントリではなく文字列のみが含まれます。したがって、例のリストには 2 つのエントリしかありません。
wsdl の例を次に示します。
wsクライアントを生成するためにmavenを使用しています
jaxbBindings.xml
jaxwsBindings.xml
リクエストの例:
null
エントリがサーバー側に存在し続ける方法はありますか?