問題タブ [wsdl2java]
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 - CXF または JAX-WS で生成された Web サービス クライアントで WSDL の場所を指定する必要をなくすにはどうすればよいですか?
CXF から wsdl2java を使用して Web サービス クライアントを生成すると (wsimport に似たものを生成します)、maven を介してサービスを開始すると、次のようなコードが表示されます。
ハードコーディングされた絶対パスは本当に最悪です。生成されたクラスは、私のコンピューター以外では機能しません。
最初のアイデアは、WSDL ファイル (およびそれがインポートするすべての WSDL と XSD) を jar ファイルのどこかに置き、クラスパスを指定することです。しかし、私たちはこれを避けたいと思っています。これらはすべて WSDL と XSD に基づいて CXF と JAXB によって生成されたため、実行時に WSDL を知る必要はありません。
wsdlLocation 属性は WSDL の場所をオーバーライドすることを目的としており (少なくともこれは私がどこかで読んだものです)、デフォルト値は "" です。Maven を使用しているため<wsdlLocation></wsdlLocation>
、CXF の構成内に含めて、ソース ジェネレーターに強制的に wsdlLocation を空白のままにしようとしました。ただし、これは XML タグが空であるため、単純に XML タグを無視します。を使用して、本当に醜い恥ずべきハックを行いました<wsdlLocation>" + "</wsdlLocation>
。
これにより、他の場所も変更されます。
だから、私の質問は次のとおりです。
すべてのクラスが CXF と JAXB によって生成されたとしても、本当に WSDL の場所が必要ですか? はいの場合、なぜですか?
WSDL の場所が本当に必要ない場合、CXF にそれを生成させず、完全に回避させる適切でクリーンな方法は何ですか?
そのハックで得られる悪い副作用は何ですか? 何が起こるかをテストすることはまだできないので、誰かが前もって言ってくれたらうれしいです.
java - cxf 2.2.12 で wsdl から Java ソースを生成中に cos-nonambig スキーマ エラーを取り除く方法
こんにちは、この wsdl https://mollusk.atollon.com//scheduler.wsdlからソース コードを生成中に問題が発生しました。私の質問は:
- cos-nonambig エラーを取り除き、ソース コードを生成することは可能ですか?
- wsdlの検証がうまくいったので、このcos-nonambigの問題が正確にどこにあるかを見つけるために使用できる他のツールはありますか?
java - wsdl2 java :Java ヒープ領域
私はWebサービスを扱っています。ファイル wdsl があり、それを 2 つの Java ファイルに変換しました。
wsdl2java -uri nameFile.wsdl
作成された Java ファイルの 1 つは 87kb です。Eclipseで開こうとすると、次のエラーが発生します。
私は今したい場合:
1) 引数 wsdl2java に問題があります。これは、大きなファイルではなく、より多くの Java ファイルを作成する何らかの方法を意味します。
2) 記憶障害の日食
どうすれば解決できますか?
ありがとう
java - Axis WSDL2Javaで生成されたコード:リクエストをすばやく連続して実行するとサーバーエラーが発生する
Axis Webサービスのカスタム暗号化用に、サードパーティのwsdlとデプロイメント記述子などが提供されています。私はWSDL2Javaを使用してJavaクラスを生成しましたが、それはすべてかなりうまく機能しています...ある程度まで。数分間隔でメソッドを呼び出すと、メソッドは正しく機能し、有効なデータを返します。しかし、(必要に応じて)それらをすばやく連続して呼び出すと、(以下の)単純な古いサーバーエラーが発生します。
axisFaultの障害コードと詳細を出力すると、次のようになります。-
class org.apache.axis.AxisFault Fault Code = {http://xml.apache.org/axis/} Server Fault Reason = Server Error Fault String = Server Error Fault Details = [Lorg.w3c.dom.Element; @ 2d4ba772 [org.apache.axisのorg.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:473)のサーバーエラー。org.apache.axisのorg.apache.axis.server.AxisServer.invoke(AxisServer.java:281)。 transport.http.AxisServlet.doPost(AxisServlet.java:699)at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java: 327)javax.servlet.http.HttpServlet.service(HttpServlet.java:717)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)atorg.apache.catalina.core。ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)at org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:175)at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter .service(CoyoteAdapter.java:241)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)at org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:580)at org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:447)at java.lang.Thread.run(Thread.java:595)、サードパーティホスト名org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)のconnector.CoyoteAdapter.service(CoyoteAdapter.java:241)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java: 580)org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:447)at java.lang.Thread.run(Thread.java:595)、サードパーティホスト名org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)のconnector.CoyoteAdapter.service(CoyoteAdapter.java:241)org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java: 580)org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:447)at java.lang.Thread.run(Thread.java:595)、サードパーティホスト名
誰か助けてもらえますか?私は私の知恵の終わりにいます..それはタイミング/キャッシングの問題でしょうか?おそらく、WSDL2JAVAツールが作成するcreateCall()メソッドのキャッシュ値の1つですか?
maven-2 - CXF:JAXB外部バインディングファイルを使用してWSDLインポートされたXMLスキーマのパッケージを変更するにはどうすればよいですか?
いくつかのXMLスキーマをインポートするWSDLファイルがあり、それぞれが同じ名前空間を持っています(これをAと呼びましょう)。JAXB外部バインディングファイルを使用して、これらのスキーマに対して生成されたパッケージ名(たとえばB)を変更しようとしています。次に例を示します。
(cxf-codegen-pluginを使用して)WSDLからコードを生成するための構成を含むPOMファイルがあります。
私のWSDL:
これが私の実際のバインディングファイルですが、まったく機能していません。まったく適用されていないようです(エラーメッセージはありません...)。
生成中にエラーメッセージがないので、インポートされたスキーマへのアクセスに使用されるXPath式が適切でないことが原因である可能性があります...
手がかりはありますか?私はここでちょっと立ち往生しています...
ご入力いただきありがとうございます!
java - axistools-maven-pluginがこの相対的なスキーマの場所にアクセスしようとしているのはなぜですか?
Axis 1.xを使用してWebサービスプロジェクトを実行していますが、Mavenビルドを機能させるのに問題があります。
私は
これがaxistools-maven-pluginのwsdl2java
目標をトリガーします。最終的には中止されます
正解です。そのファイルは存在しません。(そして、-eは追加の有用な情報を生成しません-それは、FileNotFoundExceptionによって引き起こされたAxisPluginExceptionによって引き起こされたMojoExecutionExceptionによって引き起こされたLifecycleExecutionExceptionです。)
重要なのは、検索するのではなくWEB-INF\project.xsd
、にアクセスする必要があるということですWEB-INF\wsdl\project.xsd
。
WSDLの内容は次のとおりです。
これは私のすべての同僚にとってうまくいくようです。私たちはすべてMaven2.2.1を使用しており、axistools-maven-pluginは次の構成で1.4に固定されています。
不正な依存関係であることを期待して、ローカルのMavenリポジトリーをすでに完全にクリアしましたが、それでも何も変わりませんでした。何が私だけのためにこれを引き起こしている可能性がありますが、私の同僚のためではありませんか?
編集1:schemaLocationをwsdl/project.xsd
(テスト目的で、WSDLに永続的な変更を加えることはできません)に変更しようとしましたが、この面白い結果が得られました:
あなたが私のように、今./project.xsd
はうまくいくかもしれないと思っているなら...いいえ、申し訳ありませんが、それはWEB-INF/project.xsd
再び直接検索することになります。
編集2:さて、今axistoolsはちょうど私をからかっています...
../project.xsd
-> src/main/webapp/project.xsd
(間違っている)
../wsdl/project.xsd
-> src/main/webapp/wsdl/project.xsd
(間違っている)
../WEB-INF/wsdl/project.xsd
-> src/main/webapp/WEB-INF/WEB-INF/wsdl/project.xsd
(間違っている)
念のため、正しいパスはですsrc/main/webapp/WEB-INF/wsdl/project.xsd
。
java - WSDL2JAVA が setter メソッドを生成しない
誰かがこれに出くわしましたか?基本的に、SUN jre から IBM に切り替えましたが、wsdl2java が必要なセッター メソッドをコンパイルしていないためにコンパイルが失敗しました。
前もって感謝します。
java - xsd:anyTypeを使用するSOAPWebサービスの呼び出し
次のように定義されたxsd:anyTypeの配列として定義された引数を持つWebServiceを呼び出す必要があります。
また、戻りタイプも次のようにxsd:anyTypeタイプです。
WebServiceは実際には多くの異なるタスクを実行できるサーバーであり、サーバーのユーザーがタスクを構成できます(各タスクには固有の引数があります)。
これまでは、MicrosoftのWSDLユーティリティを使用して、このWebサービスのC#クライアントプロキシを生成できました。生成されたC#コードは、すべての引数を.Net'オブジェクト'型に正しくキャストすれば、簡単に使用できます。
ここで、このWebサービス用のJavaクライアントを生成する必要があります(正直なところ、私はJavaの初心者にすぎません)。http://ws.apache.org/muse/docs/2.0.0/tutorial/01-install-muse.htmlで見つけたWSDL2JAVAというユーティリティがあるようです。しかし、実行すると、次のエラーが発生します。
警告:[ID='NoWSRPSchema']WS-RPスキーマが見つかりません。java.lang.RuntimeException:[ID ='NotDocLiteral']WSDL操作'runTask'は、SOAP本文に複数のメッセージ部分を持つメッセージを定義するため、doc-literalではありません。doc-literalメッセージのSOAP本文には、0個以上の子要素(パラメーター)を持つ1つのルート要求要素(操作名を含む)が含まれている必要があります。org.apache.muse.tools.inspector.ResourceInspector.getInputName(ResourceInspector.java:486)at org.apache.muse.tools.inspector.ResourceInspector.createJavaMethod(ResourceInspector.java:329)at org.apache.muse.tools .inspector.ResourceInspector.getOperations(ResourceInspector.java:570)at org.apache.muse.tools.inspector.ResourceInspector.run(ResourceInspector.java:
重大:[ID='CodeGenFailed']コード生成に失敗しました。以下の例外情報を参照してください。
例外がキャッチされました:[ID ='NotDocLiteral']WSDL操作'runTask'は、SOAP本文に複数のメッセージ部分を持つメッセージを定義するため、doc-literalではありません。doc-literalメッセージのSOAP本文には、0個以上の子要素(パラメーター)を持つ1つのルート要求要素(操作名を含む)が含まれている必要があります。
xsd:anyTypeはここではサポートされていないので、私は私に見えます。
このWebサービスのプロキシクラスを生成する簡単な方法は何ですか?WSDLが私のためにC#プロキシを作成したように、できればできるだけ簡単に。
wsdl - 2 つのクラスが同じ xml タイプ名を持っています
ワークスペースを RAD に公開しようとすると、「2 つのクラスに同じ xml タイプ名があります」というエラーが表示されます。おそらく、同じクラス名が同じパッケージに存在するが、2 つの異なる jar に存在するためです。そして、 @XmlType アノテーションは、これらのクラスのソースでその属性名と名前空間に個別の値を持つ必要があるようです。Apache CXF で利用可能な wsdl2java を試しましたが、この名前空間属性を生成させることができません。-p パッケージ オプションをいじってみましたが、それは生成されたソースを指定したパッケージに配置するためだけのものです。
wsdlで発生した各要素に対してこの名前空間属性を生成する方法はありますか? ティア。
jaxb - Wsdl2Java Jaxb エラー「宣言が衝突を引き起こします」をデバッグする方法
Java アプリケーションで使用しようとしている .NET によって生成された wsdl があります。これを行うために、CXF Wsdl2Java ツールを使用しようとしています。問題は、ツールの実行時に jaxb 例外がスローされることです。
ビルド時にオブジェクトの名前を変更するには、おそらくカスタム バインディング ファイルを作成する必要があることは理解していますが、どこから始めればよいかわかりません。wsdl 内のどのオブジェクトが問題を引き起こしているかを調べるにはどうすればよいですか?
(例外が実際にどの要素が名前の競合を引き起こしているかを示していればいいようです)