将Jersey服务实例发布到Grizzly

时间:2012-02-16 05:50:09

标签: java jersey jax-rs grizzly

我可以通过以下方式向灰​​熊发布球衣服务

final String baseUri = "http://localhost:51000";
final Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages", "my.rest.service");
SelectorThread threadSelector = GrizzlyWebContainerFactory.create(baseUri, initParams);

因此,将扫描指定的包以查找使用@Path注释的任何服务类,并将初始化它们。我的问题是,有没有办法指定一个预先初始化的球衣服务类 - 通过自定义工厂初始化,甚至只是通过新的MyService() - 并将其发布到Grizzly或任何其他容器?

2 个答案:

答案 0 :(得分:1)

您可以使用GrizzlyServerFactory.create(URI u,ResourceConfig rc)并将您的单例添加到提供的ResourceConfig。即:

final String baseUri = "http://localhost:51000";
final ResourceConfig rc = new PackagesResourceConfig("my.rest.service");
rc.getSingletons().add(new MyInstantiatedResource());
SelectorThread threadSelector = GrizzlyServerFactory.create(baseUri, rc);

答案 1 :(得分:1)

  

或任何其他容器?

Jersey也支持SimpleHttp容器,如果你添加了附加的jersey模块并使用SimpleServerFactory

ResourceConfig config = new DefaultResourceConfig();
config.getSingletons().add(new MyInstantiatedResource());

String serverBase = "http://localhost:8080/foo";
Closeable server = SimpleServerFactory.create(serverBase, config);