問題タブ [jersey]
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.
rest - RESTfulリソースが見つかりません。404または204?ジャージーはハンドラーからnullが返されると204を返します
あなたが探していて/Resource/Id
、そのリソースが存在しない場合、私はいつもその404が適切な応答でしたが。ただし、null
Jerseyハンドラーから戻ると、「204NoContent」が返されます。私はどちらかで作業できる可能性がありますが、これに関する他の人の考えに興味があります。
私自身の次の質問に答えるために。ジャージーが404を返すようにするには、例外をスローする必要があります。
java - ジャージーリソースクラスの相互作用?
だから、私はJerseyのスピードを上げており、「ベストプラクティス」の質問があります. リソースを 1 つのファイルに収める厳密さ。必要に応じて、あるリソース クラスが別のクラスを参照する必要がありますか?
例:
Person リソースと Appointment リソースがあります。(例: /Person/1 & /appointment/12345)。/Person/1/Appointments のようにして、1 人のすべての予定を一覧表示することもできます。
したがって、私の質問は、Person Resource クラスにメソッド getPersonAppointments() を実装するか、誰かが Appointment リソース クラスへの参照を取得してそのメソッドを呼び出し、「Appointments」を返すすべてのメソッドを一緒に保持する必要があるかということです。
正しい方法か間違った方法があるかはわかりません。
json - JAXBオブジェクトのリストのJSONへのシリアル化をカスタマイズするにはどうすればよいですか?
私はJerseyを使用して、サーバーコンポーネント用のRESTWebサービスを作成しています。
リストでシリアル化したいJAXB注釈付きオブジェクトは次のようになります。
次のような1つのディストリビューションを取得するためのRESTリソースがあります。
また、すべてのディストリビューションのリストを取得するためのRESTリソースがあります。これは次のようになります。
ContextResolverを使用してJAXBシリアル化をカスタマイズします。これは、現在次のように構成されています。
両方のRESTリソースと、コンテキストリゾルバーが機能します。これは、最初のものの出力の例です。
それはまさに私が欲しいものです。これは、リストの出力例です。
これは私が望んでいることではありません。
distribution
なぜそこに囲みタグがあるのかわかりません。.rootUnwrapping(true)
コンテキストリゾルバーでそれを削除したかったのですが、どうやらそれは別の囲んでいるタグを削除するだけです。これは次の出力.rootUnwrapping(false)
です:
.arrays("distribution")
また、要素が1つしかない場合でも、常にJSON配列を取得するように構成する必要がありました。
理想的には、これを出力として使用したいと思います。
List<XMLDistribution>
、XMLDistributionList
(リストのラッパー)、、を返そうとしましたXMLDistribution[]
が、必要な形式でディストリビューションの単純なJSON配列を取得する方法が見つかりませんでした。
JSONConfiguration.natural()
、などによって返される他の表記法も試しましたがJSONConfiguration.mappedJettison()
、必要なものに似たものを取得できませんでした。
これを行うようにJAXBを構成できるかどうか誰かが知っていますか?
java - JAXBとJerseyのリスト解決?
いくつかの jaxb オブジェクトを生成するために、次の XSD を定義しています。それはうまくいきます。
Spring RowMapper を使用して、データベースの行を Person オブジェクトにマップします。したがって、 People オブジェクトではないList<Person> オブジェクトになります。I People オブジェクトは内部的に List<Person> を持っています。
次に、Jersey リソース クラスには次のものがあります。
返される XML は次のとおりです。
私の質問は、XML で List<Person> から People にマッピングする方法です。また、要素は「人」(小文字のP)ではなく「人」(大文字のP)です。実際には XSD をまったく使用していないようです。
EDITこれは、この質問に何らかの形で関連しています: JAXB Collections (List<T>) Use Pascal Case for Camel Case for Element Names
java - Hibernate 遅延読み込み + Jersey REST = 熱心な読み込み?
私は、Hibernate を永続層として使用し、Jersey REST をネットワーク通信用に使用して、クライアント サーバー アプリケーションを開発しています。
ロールを持つユーザーの場合:
- クライアント内のすべてのユーザーを表示したい場合、Hibernate によってロールが読み込まれたり、ネットワーク経由で送信されたりしたくありません。
- ユーザーの役割を変更したい場合は、それらをロードして転送したい
私はプリロード パターン ( http://bwinterberg.blogspot.com/2009/09/hibernate-preload-pattern.html ) を使用して、Hibernate によってどのプロパティをロードする必要があるかを判断しています。これはうまくいきます。
ケース 1 では、意図したとおり、Hibernate によってロードされるロールはありません。しかし、Jersey がクライアントに送信される XML を作成するとすぐに、ユーザーのロールを読み取り、Hibernate がロール (および他のすべてのプロパティ) をロードできるようにします。最終的に、Hibernate は常にユーザーに属するデータセットの完全なツリーをロードします。
ユーザーをJerseyに渡す前にセッションを閉じてユーザーを切り離すことを考えたので、Hibernateはロールをロードできませんが、それは何の効果もないようです。
何か案は?
rest - ジャージーでメソッドコメントを追加
私たちはWebサービスにJerseyを使用してきましたが、それは素晴らしく簡単です。メソッド定義内に小さな説明コメントを追加する方法はありますか(おそらく@Descriptionのようなアノテーションを使用して):
そして、WADLでは次のようなものが得られます。
ありがとう、ルノー
rest - キャッシュを許可するようにJerseyを設定しますか?
ジャージーの@GETメソッドから次のように返されます。正常に動作しますが、常にNo-cacheヘッダーが含まれます。このデータはめったに変更されないため、クライアントがこのデータをキャッシュできるようにしたいと思います。
応答は常に次のとおりです。
それは私がここで間違っているのですか?
tomcat - Jersey、Tomcat、およびセキュリティ アノテーション
Tomcat 6.0.24 コンテナーで単純な Jersey RESTful API を保護する必要があります。ファイルを使用してユーザーとロールを定義する基本認証で認証を維持したいと思いtomcat-users.xml
ます(これは今のところ、小さいと言ったように)。
さて、承認のために、、、、など@RolesAllowed
のJSR 250 アノテーションを使用できるようにしたいと思います。@PermitAll
@DenyAll
私は一生、これをすべて結び付ける方法を理解することはできません。
現時点では非常に単純なものが必要なので、Spring Security ルートに行きたくありません。
誰かが私を正しい方向に向けることができますか?
java - JAX-RS @PathParamスラッシュ、ハイフン、および等号を含む文字列を渡す方法
私はJAX-RSを初めて使用し、Jerseyを使用して単純なRESTfulWebサービスを構築しようとしています。
2つの質問があります。これらを明確にしてください:
このURLのような単純なWebサービスを使用しようとしています
http://localhost:8080/SampleJersey/rest/inchi/InChIName
InChINameは、このような文字列
InChI=1S/C9H8O4/c1-6(10)13-8-5-3-2-4-7(8)9(11)12/h2- 5H,1H3,(H,11,12)
です。これをとして渡すにはどうすればよいですか。@PathParam
通常の文字列は正常に機能していますが、ここにはスラッシュ、ハイフン、およびコンマがあります。これらを無視するにはどうすればよいですか。引用符で囲んでみましたが、うまくいきませんでした。これはどのようにすればよいですか?これを別のWebサービスに渡す必要があり
InChI
、XMLを出力として返し、そのXML出力をWebサービスの出力として表示したいと思います。私が持っている場合@Produces("application/xml")
、それは機能しますか?
これは私のコードです:
java - サーバーでジャージログを取得するには?
REST WS に jersey を使用しています。サーバー側でジャージーログを有効にするにはどうすればよいですか?
長い話: クライアント側の例外が発生しましたが、Tomcat ログには何も表示されません [メソッドに到達することさえありません]。スタック トレースが「toReturnValue」と表示されているため、サーバーから何かを取得しました。しかし、サーバーが何を言ったのかわかりません。