微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Guice Jersey:添加所有的资源和提供者,而不需要绑定到Jersey Servlet

Im目前正在使用Jersey 1.8与Guice 3.0一起使用针对我的JPA的DI.这与我无法克服的一个主要问题相当合适:

我必须使用bind手动将所有泽西资源类添加到JerseyServletModule中:

@Override
protected Injector getInjector() {
    return Guice.createInjector(new JerseyServletModule() {

        @Override
        protected void configureServlets() {

            install(new JpaPersistModule("dbname"));
            filter("/*").through(PersistFilter.class);

            /* bind the REST resources and serve*/
            bind(Hello.class);
            serve("/*").with(GuiceContainer.class);

        }
    });
}

我希望能够忽略对每个单一资源和提供者的绑定的使用,并在jersey-guice文档中找到一个备注:http://jersey.java.net/nonav/apidocs/1.8/contribs/jersey-guice/com/sun/jersey/guice/spi/container/servlet/package-summary.html

它基本上说可以将球衣资源的注册通过球衣服务.但是,我无法使用所述方法来管理这个问题:

@Override
     protected Injector getInjector() {
         return Guice.createInjector(new JerseyServletModule() {

             @Override
             protected void configureServlets() {
                 bind(GuiceResource.class);

                 Map<String,String> params = new HashMap<String,String>();
                 params.put(PackagesResourceConfig.PROPERTY_PACKAGES,"unbound");
                 serve("/*").with(GuiceContainer.class,params);
             }
         }
     });

遗憾的是,我无法获得关于泽西资源注册过程的更多信息.

任何帮助将不胜感激.当然,如果需要,我可以提供额外的信息!
谢谢.

解决方法

我回答自己的问题变得相当标准,但是我发现了一个Guice 2 Thread的答案,但幸运的是它与Guice 3和Jersey 1.8
/*
* The following line will scan ausbdsoccer.server.resources package for Jersey Resources
*/
params.put("com.sun.jersey.config.property.packages","ausbdsoccer.server.resources");

你去了

不要忘了将params地图传给你的GuiceContainer.class!

原文地址:https://www.jb51.cc/java/124578.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐