GUICE 3.0框架中的JAX-WS Web服务

时间:2012-05-23 14:44:30

标签: jax-ws guice

我们正在使用GUICE框架作为服务层的一部分。现在需要构建JAX-WS Web服务。我们使用JDK 1.6 JAX-WS API构建了Web服务。但是现在,我们无法使用任何GUICE资源,因为我们的Web服务不受管理。

我们正在使用Guice 3.0。我们如何实现这一目标?

尝试以下链接 http://jax-ws-commons.java.net/guice/,但没有成功,最后知道这只与某些论坛中的Guice 2.0兼容。

尝试了另一种方法 http://developian.blogspot.in/2008/11/google-guice-and-jax-ws.html, 但是这内部将开始使用一些访问受限的sun API,因此我不想使用...

现在什么是最好的方法或替代任何其他任何解决方案。

请建议。

由于

2 个答案:

答案 0 :(得分:0)

好吧,你可以注入一个包含guice注入器的EJB。这意味着,如果您使用Java EE,则可以使用EJB。那个EJB应该是一个Singleton,只处理持有注入器。如果你想注入一些东西,这就是你从中获取注射器的bean。当然,你必须在第一次通过Guice.createInjector()调用它时创建注入器。使用注射器时,使用注射器的方法getInstance(Class clazz)注入其他类是没有问题的。第一次调用使用注入的类时,必须仅在Web服务中访问注入器。

否则,您可以在Web服务中使用静态注入器。也许这不会那么干净但它会起作用。这需要您在构造函数中创建注入器。例如。在抽象服务类中,所有Web服务都依赖于。然后,您可以访问服务中的进样器,并执行与上述相同的操作。

@Singleton
public class InjectorHolder
{
private Injector injector;

   public GuiceInjectorHolder()
   {
        injector = Guice.createInjector(new Module())
   }
}

    public Injector getInjector()
    {
    return injector;
    }

}

public abstract class AbstractService
{
@EJB
InjectorHolder holder;

public void method()
{
holder.getInjector().getInstance(clazz).doSomething();
}
}

答案 1 :(得分:0)

您是否尝试过创建自己的Servlet并在loadBus()方法中绑定服务?解决方案在这里描述: CXF and Google Guice using JAX-RS + JAX-WS