問題タブ [cxf-client]
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.
web-services - CXF クライアントを実装して、REST サーバーから LIST を読み取る
Apache CXF を使用して REST Web サービスを実装しようとしていますが、サーバーからの応答としてオブジェクトのリストを返したいと考えています。そのため、一般的なエンティティを使用してサーバー上のリストをラップしましたが、ブラウザーからパスを入力するとすべて問題ありません。Jackson JAX-B を使用したため、オブジェクトの XML 表現を出力しますが、JAX-RS クライアントを使用しようとすると。例外が発生しています。
スレッド「メイン」での例外 javax.ws.rs.client.ResponseProcessingException: データの読み取りに問題があります。クラス XYZ、ContentType: /. at org.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:433) at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:378) at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:325) at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:313) at XYZ.ABC() at XYZ.ABC() Caused by: javax.ws.rs.core.NoContentException: Message body is empty at org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.reportEmptyContentLength(AbstractJAXBProvider.java:276) at org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:166) at org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1325) at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:369) ... 4 more
サーバーからデータを取得するために、次のクライアントコードを作成しました
final Client client = ClientBuilder.newClient();
WebTarget webTarget = client.target(URI.create(PATH));
Response response = webTarget.request(MediaType.APPLICATION_XML).get();
List<ABC> obj = response.readEntity(new GenericType<List<ABC>> (ABC.class){});
しかし、それとは別に、CXFクライアントを実装してサーバーからデータを取得するために多くのコードを試しましたが、ほぼ常に同じ例外が発生しています。クライアントを実装するために JAXRSCLIENTFactory も試しましたが、同じ例外がありました。
exception - Apache-cxf クライアントがカスタム例外ではなく SOAPFaultException を取得する
apache-cxf クライアントでの例外の処理に問題があります。SOAP 呼び出し 'Fault_Exception' によってスローされる例外を予期していますが、常に一般的な SOAPFaultException を受け取っています。
生成されたクラス:
そしてフォルトは
石鹸:
生成されたクラスと応答の間に不一致はありますか? または、他に何が問題になる可能性がありますか?それとも、SOAPFaultException を取得するのは完全にロジックですか? 情報(コードと説明)を取得する方法がわかりません...
敬具!
grails - CxfClientGrailsPlugin - clientInterface=[:] および serviceEndpointAddress を設定する前に Web サービス クライアント abcClient を作成できない
SOAP リクエストに cxf-client grails プラグインを使用しています: これらのクライアント設定を Config に追加しました:
grails を実行grails wsdl2java
すると、提供された WSDL に対してPaymentPortType
クラスを除く必要な Java クラスが生成されます。
アプリケーションを実行すると、次のエラーが発生します。
考えられる問題は何ですか?
java - CXF クライアントと WS-Addressing 属性
次のクライアント側コードで呼び出そうとする Web サービスがあります。
サーバー側(Tomcat) では、Webサービスは次のように実装されます。
CxfAdd.java:
CxfAddImpl.java:
ただし、クライアント側のコードを実行すると、サーバー側で次のエラーが発生します。
私は ws-addressing 属性を送信していないようです。誰かが私のコードで何が間違っているか、何が欠けているかを理解するのを手伝ってくれますか? ありがとうございました。
java - 1 つの webmethod リクエストに対して非同期の handleResponse が 2 回呼び出される
Apache CXF API を使用して非同期 JAX-RS Web メソッドを開発しました。webmethod は、次のようにカスタム タイプをパラメーターとして受け取ります。
「CustomType」のシリアル化を処理するために、カスタム MessageBodyReader と MessageBodyWriter を実装しました (サービス側とクライアント側)。クライアント側では、実装されたものを
あるサービスに非同期リクエストを行います
クライアント上
私の観察では、ランダムに応答が空ですが、サーバー ログでは空でない結果を確認できます。デバッグ時に、呼び出すスレッドが2つあることがわかりました
そのうちの 1 つは実際の結果で、もう 1 つは空です。最初に実行される内容に基づいて、結果は実際の文字列または空になります。呼び出しのトレースには、フェーズ インターセプター チェーンからの呼び出しが含まれています。これは、クライアントをカスタム リーダーおよびライターに登録した場合にのみ発生します。json でリクエスト本文を設定すると、1 つのスレッドだけがレスポンスを処理します。MessageBodyReaders / Writers の追加がこの問題を引き起こす理由を誰かが明らかにできますか?