mar*_*gti 0 java google-app-engine guice maven-3 jersey-2.0
按照Up和在MaE,Jersey和Guice的AppEngine上运行的优秀步骤- 第3部分,除了将对象注入Jersey POJO之外,我已经能够完成所有工作.
我从该配置中唯一的区别是我也集成了Objectify,但这是有效的.
TestClass注入到HelloWorldServlet工作中的实例(单例),但注入POJO 的TestClass和SecondTest(RequestScoped)对象HeyResource总是如此null.
我怀疑HK2和Guice之间的互动应该归咎于此,但这是我与Guice , Jersey 和 HK2的第一个项目,所以我都在海上.
我的配置是:
使用Jersey 2,您不需要像使用Jersey 1那样使用Guice Web包装器.您已经拥有了guice-bridge,只需要在Jersey配置中使用HK2进行配置.参见The Guice/HK2 Bridge.
你基本上需要得到HK2的句柄ServiceLocator来绑定两个框架.Jersey允许您在应用程序的许多位置注入定位器.您最需要的地方是配置类(即ResourceConfig).以下是如何配置它的示例.
public class JerseyConfig extends ResourceConfig {
@Inject
public JerseyConfig(ServiceLocator locator) {
packages("your.packages.to.scan");
GuiceBridge.getGuiceBridge().initializeGuiceBridge(locator);
// add your Guice modules.
Injector injector = Guice.createInjector(new GuiceModule());
GuiceIntoHK2Bridge guiceBridge = locator.getService(GuiceIntoHK2Bridge.class);
guiceBridge.bridgeGuiceInjector(injector);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用web.xml配置应用程序,则可以使用init-param将此类添加到配置中
<servlet>
<servlet-name>Jersey Web Application</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.stackoverflow.jersey.JerseyConfig</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
556 次 |
| 最近记录: |