JBoss7.1とJava1.6を使用しています。
GuiceサービスをJAX-WSエンドポイントで統合したいと思います。Gunnar.Morlingによって記述されたインターセプターパターンを使用すると、ステートレスBeanをWebサービスとして使用するときに、Guiceモジュールを適切にインスタンス化できます。ただし、単純なPOJO注釈付きWebサービスでは同じことを行うことはできません。これは可能ですか?誰かが回避策を見つけましたか?以下はこれまでの私の努力の要約です。
@UsesGuice @Interceptor
public class GuiceInterceptor {
@Inject
private GuiceInjectorHolderBean injectorHolder;
@AroundInvoke
public Object aroundAdvice(final InvocationContext ctx) throws Exception {
if (ctx.getTarget().getClass().isAnnotationPresent(UsesGuice.class)) {
final Injector injector = injectorHolder.getInjector();
injector.injectMembers(ctx.getTarget());
}
return ctx.proceed();
}
}
GuiceInjectorHolderBeanは、guiceの配線をトリガーする役割を担うsinlgetonBeanです。必要なアノテーションクラスは次のとおりです
@Retention(RUNTIME)
@Target(TYPE)
@InterceptorBinding
public @interface UsesGuice {}
JAX-WSPOJOクラス
@UsesGuice
@WebService(serviceName = "EchoServiceService", portName = "EchoServicePort", ame = "EchoServiceImpl", targetNamespace = "lala")
public class EchoServiceImpl implements EchoService
{
@Inject
MyGuiceInjection injection;
@Override
@WebMethod
public String sayHello(final String msg)
{
return "Hello " + injection.call(msg);
}
}
よろしくお願いしますDimitri