問題タブ [hk2]
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 - Jersey 2を使用したREST API
Jersey 2を使用してREST APIを実装したいと思います.リソースをインターフェースとその実装に分けたいと思います.
ただし、リソースを公開することはできません。先ほど言及した hello リソースについては、次のもので十分であることを期待していました。
web.xml:
pom.xml:
でも打つ時は
404 応答が返されます。
ご意見をお待ちしております:) ありがとうございます。
新しい発見:これで動作します:
java - Jersey 2のリソースメソッドにプリンシパルを注入する
私は Jersey 2 を使用して REST API を開発しています。現在、Dropwizard にある @Auth と同様の注釈を使用して基本認証を取り入れようとしています。と
hello リソースの呼び出しは、Authorization HTTP 要求ヘッダーで渡された資格情報を使用して基本認証を実行し、メソッドのプリンシパル パラメーターにプリンシパルを挿入することに成功したコードによってインターセプトされる必要があります。
@Auth リゾルバの作成を開始しました。以下を参照してください。しかし、その中から Authorization HTTP リクエスト ヘッダーにアクセスする方法がわかりません。
これにアプローチする方法は?:)
java - Jersey 2 の 2 つのカスタム注入アノテーション
Jersey 2 で 2 つのカスタム注入アノテーションを共存させるには、ValueFactoryProvider バインディングをどのように行う必要がありますか? 以下に、私の現在のアプローチの例を示します。ご覧のとおり、Hello アノテーション インジェクションは SmallTalk アノテーション インジェクションを「隠します」。
こんにちは注釈:
SmallTalk 注釈:
こんにちは注釈リゾルバ:
SmallTalk アノテーション リゾルバー:
リソース構成:
両方の注入アノテーションを使用するリソース:
リソースを要求したときの結果 - 次のようになるはず"Hello! Nice weather."
です:
java - Jersey 2 の METHOD と PARAMETER の両方を対象とするカスタム アノテーション
target を使用してカスタム インジェクション アノテーションを実装することに成功しましたPARAMETER
。注釈サポートのターゲットをどのように作成するのかわかりませんMETHOD
か?
ここに私のサンプルコードがあります:
こんにちは注釈:
こんにちは注釈リゾルバ:
こんにちはリソース:
打った時
こんにちは!時間が禁止された間隔内であるかどうかに関係なく戻ります。
java - Jersey 2 の HK2 の asEagerSingleton に対応するものは何ですか?
Jersey 2 を使用して REST API を開発しています。一部のクラスは、リソース要求によってトリガーされたときだけでなく、起動時にインスタンス化する必要があります。
だから私が求めているのはSomethingImpl
、誰かが何かのリソースにヒットしたときだけでなく、サーバーの起動時にここで定義されたインスタンスが作成されるようにするにはどうすればよいですか? Guice では、 を使用します.asEagerSingleton()
。
応用:
何か:
いくつかのリソース:
cdi - JaxRS アプリケーションでの CDI HK2 エラー
Glassfish 4 用の JaxRS アプリケーションを作成しました。Jackson 2 を使用しています。問題なくビルドできますが、デプロイすると、次の 4 つのエラーのうちの 1 つ以上が発生します。
および/または
および/または
および/または
私が知っているように、グラスフィッシュがクラスを2回ロードしようとすると、最後の例外がスローされる可能性がありますか?
直接および間接の依存関係のスクリーンショットをアップロードしました。 http://i.stack.imgur.com/HEtb1.png
他のソリューションに関して<scope>provided</scope>
、これらのクラスを含むパッケージに追加しようとしました。--> 成功しない
何か考えはありますか?
編集1:
私のリソース構成:
Jackson 2 を有効にするには:
そのような多くのエンティティ:
それから私はそのような多くのDAOを持っています:
そして、そのような多くのリソース:
編集2:
新しいテスト プロジェクトを作成しました。依存関係を org.glassfish.jersey.server に追加するとすぐに、エラーが発生します。
編集3:
私はエラーでテストアプリケーションを作成しました:
http://www.file-upload.net/download-8459084/testApplication_20131229.rar.html
jersey - Jersey と HK2 ServiceLocator
Application コンストラクター (ResourceConfig から継承するもの) で、Jersey アプリケーションのいくつかのコンポーネントを初期化しようとしています。このように見えます
任意の時点でロケーターを使用しようとすると、locator.create(MyThing.class) メソッドを使用して AbstractBinder に登録したもののインスタンスを作成できません。
@inject フィールド アノテーションを介してリソース クラスに適切に注入されるため、それらが正しくバインドされていることは確かです。
違いは、Jersey/HK2 フレームワークがリソース クラスをインスタンス化していることです (それらはパッケージ スキャン パスにあるため、予想どおりです) が、コードを介して ServiceLocator を活用できないようです。
私の最終的な目標は、 @Inject 属性を持つ他の非ジャージー クラスを注入することです。構成されたデータベース アクセス レイヤーを挿入する必要があるワーカー クラスがあります。私は言いたい
そして注射します。
Binder に既に登録/バインドしたすべてのものを挿入する実際の ServiceLocator を取得するにはどうすればよいですか? (または、ServiceLocator 以外のものを使用する必要がありますか?)
java - コンストラクター引数を持つ HK2 と Impls
Jersey RESTful APIの一部としてHK2を使用しています。私はマルチテナント システムで作業しており、ほとんどの API 呼び出しで、テナントはパス パラメーターです。また、次のように、現在、コンストラクターで tenantId を受け入れるいくつかの DAO があります。
HK2 を使用して、DAO をアプリケーションの他のレイヤーに提供したいと考えています。これを行う正しい方法は何ですか?
コンストラクター引数ではなくセッターを使用するように DAO を変更します。ただ..いや。これ
tenantId
は、DAO の必要な状態の一部です。抽象化のレイヤーを追加します。
<interface>MapperFactory
andを作成しますMapperFactoryImpl
。これには、引数のないコンストラクターと、 and などの多数のゲッターがgetWidgetMapper
ありgetGizmoMapper
ます。ただ..これは面倒そうです。これらの余分なクラスを維持する必要はありません。実行時に HK2 がその int 値を WidgetMapper コンストラクターに挿入する魔法の方法はありますか? 次に、tenantId をマッパーに注入し、マッパーを他のクラスに注入します。
?? 他のHK2マジック?
java - org.glassfish.hk2.api.UnsatisfiedDependencyException: There was no object available for injection at Injectee
I am new to Jersey 2. So far I worked with Jersey 1.x and Spring and would like to use HK2 implementation.
After reading the tutorial I wrote the following:
However I get the following exception:
What is wrong?
memory - 実装として jersey を使用する jax-rs クライアント API と hk2 がメモリ リークを生成する
Spring 2.5 コンテキストを使用した単純なサーベット アプリケーションを使用しています。
jax-rs クライアントの推奨 ( https://jax-rs-spec.java.net/nonav/2.0-SNAPSHOT/apidocs/ ) のため、クライアント オブジェクトを Spring シングルトン Bean として使用し、WebResource オブジェクトを作成します。 GC によって簡単にフラッシュされます。
クローズは、Spring の Disposable Bean メカニズムを使用して行われます (デバッグされ、get メソッドが呼び出されます)。
数日後、アプリケーションのメモリが不足します。メモリ アナライザーを使用すると、org.jvnet.hk2.internal.SystemDescriptor から 500,000 個のインスタンスがあることがわかります。これはやがて PermGem につながります。
あなたもこの問題に遭遇しましたか?
ありがとうございました!