問題タブ [jax-rs]
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.
jax-rs - JAX-RS および JAXB_ENCODING
RestEasy ライブラリを使用して JAX-RS Web サービスを実行しています。サービスメソッドで JAXBContext をインスタンス化していません。JAX-RS が返す XML に "<?xml version...?>" ヘッダー文字列を含める方法はありますか? これが私のコードのサンプルサービスメソッドです:
java - RESTfulサービスにJerseyとGuiceを使用するための実用的なアドバイス
私がオンラインで見つけたものから、Guice + Jersey統合の最先端は、両方のチームが行き詰まったように見える2008年以来停滞しています。問題の核心は、JAX-RSアノテーションがフィールドとメソッドの注入を実行することであり、これはGuice自身の依存性注入とうまく機能しません。
私が見つけたいくつかの例は、解明するのに十分ではありません:
IqbalyusufのJersey+Guice on Google App Engine Javaに関する投稿は、多くの定型文(手動でインジェクターを取得して呼び出す)に悩まされています。バインディングとインジェクションは、Guiceアノテーションを介して舞台裏で行われる必要があります。
Jonathan Curranの記事「Jersey、Guice、およびJSR-250を使用したRESTfulサービスの作成」は、はるかに新しい(2010)ため、希望を与えてくれましたが、GuiceServletModule内でJerseyサービスを開始する方法を示しただけでした。ただし、実際の依存性注入を行う例はありません。それは読者の練習問題として残されたと思います。Curranの投稿は、実際にはGuiceとJerseyを接続するための正しい最初のステップである可能性があるため、それから始める予定です。
食欲をそそるジェームズ・ストラチャンはこう書いています:
JAX-RSは、Spring、Guice、GuiceyFruit、JBossMCなどの依存性注入フレームワークでうまく機能します。基本的にはどちらかを選択できます。
しかし、開業医の観点からは真実であるという証拠は見当たりません。
私が不足しているのは、JAX-RSとGuiceアノテーションを組み合わせる方法に関する実際的な例と説明です。例えば:
- ジャージーがこれを制御したいので、どのリソースでもコンストラクターインジェクションを使用できないと思います
- @Injectを@PathParam、@QueryParamなどと組み合わせることができるかどうかはわかりません。
- MessageBodyWriter実装でインジェクションを使用する方法
プロセスでどちらか一方を犠牲にすることなく、JerseyとGuiceを組み合わせた重要なアプリケーションの例を、できればソースとともに誰かが持っていますか?私は関係なくこの道を進んでいますが、ジャージーとギスのリストの断片は、私の前に来た他の人の仕事を繰り返しているように私に思わせます。
java - 「ローカルトランザクションにはすでに1つの非XAリソースがあります」例外を防ぐ方法は?
ステートレスEJBで2つのPUを使用しており、それぞれが1つのメソッドで呼び出されます。
これらのメソッドには、この例外を回避するためにREQUIRES_NEWトランザクションの注釈が付けられています。javaFXアプレットからこれらのメソッドを呼び出していたとき、すべてが期待どおりに機能しました。現在、JAX-RS Webサービスからそれらを呼び出そうとしています(どちらの場合もejbが初期コンテキストで検索されたため、論理的な違いは見られません)。この例外が発生し続けます。Glassfish 2.1接続プールでXADatasourceを設定すると、em2でnullpointer例外が発生しました。
次に何を試すべきかアイデアはありますか?
よろしく
java - JAX-RS を使用して JSON クエリ パラメータをオブジェクトに変換する
次のような JSON 文字列としてパラメーターを取得する JAX-RS リソースがあります。
ここで JSON を使用する理由は、実際のユース ケースではクエリ オブジェクトが非常に複雑になる可能性があるためです。
JSON 文字列を Java オブジェクト (例では dto) に変換したいと思います。
JAX-RS は、クエリ パラメータとして渡された JSON から Java オブジェクトへのこのような変換をサポートしていますか?
java - Mavenで構築されたJARにJerseyメッセージ本文リーダーが見つかりません
私のアプリケーションはREST(JAX-RSジャージー)インターフェースを使用しています。Eclipseで実行すると、すべて問題ありません。ドメインオブジェクトには注釈が付けられています。RESTマッピングにXMLファイルを使用していません。
ここで、maven-assembly-pluginを使用してスタンドアロンJARを作成しました。これにより、アプリケーションとすべての依存関係が単一の実行可能JARファイルにパックされます。これもうまくいくようです。
しかし、アプリケーションを起動してサーバーにオブジェクトを要求すると、Jerseyはメッセージ本文リーダーが見つからないと文句を言います。
なぜこれが起こるのか考えはありますか?
編集:私がそれで一晩寝た後、私はそれがJSONについて不平を言っていることに気づきました...しかし私はシリアル化のためにXMLだけを使用しています。変。
java - @Producesアノテーション以外に、Jersey(JAX-RS)はPOJOを特定のmimeタイプとして扱うことをどのように知っていますか?
ジャージーの例は次のようになります。
しかし、アイテムを分析するのに問題があり、JerseyがアイテムをXMLまたはJSONに変換する方法をどのように知っているか。構築されたHTMLまたはXMLの文字列を返すだけの非常に基本的な例を見てきました。これは私にとってより理にかなっていますが、次のステップがありません。サンプルを調べたところ、オブジェクトが次のタイプの注釈でマークされていたため、そのうちの1つ(json-from-jaxbサンプル)が際立っていました。
この「翻訳」を段階的に説明するチュートリアル、またはPOJOを特定のmimeタイプとして出力するように翻訳する方法の説明を探しています。ありがとう!
java - Spring 3.0 REST 実装またはジャージー?
私は現在、JSR-311 のどの実装をフード チェーンのさらに上に推奨するかを考えています。REST をネイティブにサポートする Spring 3.0、または Sun 独自の Jersey を使用する (Restletsもオプションの可能性があります) という2つのオプションにかなり絞り込みました。
私には、実際の構文に大きな違いはないように思えますが、まだ把握していないパフォーマンス上の問題がある可能性があります。
このサービスは、一部の負荷の高い EJB を置き換え、代わりに RESTful Web サービスを作成することを目的としています。負荷はかなり高く、1 日あたり 100,000 ユーザー (最大) の範囲になると予想されますが、真剣に負荷分散されます。
すべての洞察に感謝します。
java - UriBuilder がクエリ パラメータ値を正しくエンコードしていませんか?
パスと単一のパラメーターがエンコードされている次のコード サンプルを考えてみましょう...
パラメータ名:「param」
パラメータ値: "foo/bar?aaa=bbb&ccc=ddd" (たまたまクエリ パラメータ付きの URL)
返されるエンコードされた URL 文字列は次のとおりです。
これは正しいです ?
パラメータ値の文字列で文字「&」(または「?」の場合もある) をエンコードするべきではありませんか?
生成された URL は次のように解釈されませんか。
1 つの最初のパラメーター、name="param"、値 = "ar?aaa%3Dbbb"、それに続く 2 番目のパラメーター、name="ccc%3Dddd"、値なし。
java - JAX-RS(CXF、およびJersey)のようなJAXBでjava.util.Listをマーシャリングするにはどうすればよいですか?
最新のJAX-RSはjava.util.ListをXMLRootElementとして返すメソッドを処理できるようですが、通常のJAXBは処理できません。CXFとJerseyが行っていることを模倣したいと思います。
言い換えれば、CXFやJerseyと同じように、リストをマーシャリングしたいと思います。通常、JAXBを使用してリストをマーシャリングしようとすると、ルート要素の例外が発生します。ラッピングオブジェクトを作成せずにこれを回避するにはどうすればよいですか?
編集:多くの回答に感謝しますが、私は@XmlElementWrapperに精通していますが、JAX-RSが実行していることをシミュレートすることすらできません。
JAX-RSはこれを行います:
犬のリストをシリアル化すると、次のようになります。
XMLは(JAX-RSが行うこと)である必要があります:
したがって、すべての単一ドメインオブジェクトに対してラッパーオブジェクトを作成する必要がないことがわかります。
java - HTTP メソッドを JAX-RS で上書きする
今日のブラウザー (または HTML < 5) は HTTP GET と POST のみをサポートしていますが、RESTful なブラウザーと通信するには PUT と DELETE も必要です。回避策として Ajax を使用しない場合は、実際の HTTP メソッドを上書きするために非表示のフォーム フィールドのようなものが必要になります。
Rails は次のトリックを使用します。
JAX-RS で同様のことを行う可能性はありますか?