私は22.1に従っています。カスタム インジェクション プロバイダーの実装の段落
https://jersey.java.net/documentation/latest/user-guide.html#deployment
クラスを次のように定義しました。
public class PrincipalConfig extends ResourceConfig {
public PrincipalConfig() {
packages("com.vex.klopotest.secured,com.klopotek.klas.auth.injection");
register(new MyBinder());
}
}
MyBinder の場所:
Public class MyBinder extends AbstractBinder implements Factory<KasPrincipal> {
@Override
protected void configure() {
bindFactory(this).to(MyInjectable.class).in(RequestScoped.class);
bind(KasPersistenceDaoInjectionResolver.class)
.to(new TypeLiteral<InjectionResolver<KasPersistenceDaoAnnot>>(){})
.in(Singleton.class);
}
@Override
public MyInjectable provide() {
// TODO Auto-generated method stub
return new MyInjectable();
}
@Override
public void dispose(MyInjectable instance) {
// TODO Auto-generated method stub
}
}
これは私の簡単な注釈です:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface MyAnnot {
}
res サービスでアノテーションを使用したい:
@Path("modelORA")
public class ModelRetrieverORA {
@Context
SecurityContext securityContext;
@Context
private UriInfo uriInfo;
@MyAnnot
private Myinjectable Principal;
私のweb.xmlでは、この構成コードでJerseyサーブレットコンテナー(間違っています)とjavax.ws.rs.Applicationをデプロイしました:
<servlet>
<servlet-name>com.my.package.injection.PrincipalConfig</servlet-name>
</servlet>
<servlet-mapping>
<servlet-name>com.my.package.injection.PrincipalConfig</servlet-name>
<url-pattern>/rest</url-pattern>
</servlet-mapping>
デバッグモードに入ると、残りのサービスを呼び出すときに提供メソッドが呼び出されないことがわかります...実際には常にnullです。
どこが間違っていますか?私はjboss Wildfly 9.0に取り組んでおり、Jersey 2.21ライブラリを使用しています