2012-02-16 77 views
0

我可以做發佈的球衣服務灰熊以下出版澤西服務實例灰熊

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或任何其他容器?

回答

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

或任何其他容器?

澤西島還支持SimpleHttp容器,如果您添加附加球衣模塊並使用SimpleServerFactory

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

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