与Jersey和Spring集成Grizzly2.2.X

时间:2013-01-14 12:32:17

标签: java spring web jersey grizzly

我已成功将Grizzly v2.1.9JerseySpring整合。但在尝试将Grizzly迁移到版本2.2.19时无法使其正常工作。

Grizzly v2.1.9的原始代码如下所示。

HttpServer server = new HttpServer();
NetworkListener listener = new NetworkListener("grizzly2", "localhost", 3388);
server.addListener(listener);

ServletHandler sa = new ServletHandler();       
sa.setContextPath("/");     
sa.setServletInstance(new SpringServlet());
sa.addContextParameter("contextConfigLocation", "classpath:spring-context.xml");                
sa.addServletListener("org.springframework.web.context.ContextLoaderListener");
sa.addServletListener("org.springframework.web.context.request.RequestContextListener");                

ServerConfiguration config = server.getServerConfiguration();
config.addHttpHandler(sa, new String[] {"/"});
server.start();

Grizzly v2.2.19的新代码如下所示

HttpServer server = new HttpServer();
NetworkListener listener = new NetworkListener("grizzly2", "localhost", 3388);
WebappContext ctx = new WebappContext("ctx","/");       
final ServletRegistration reg = ctx.addServlet("spring", new SpringServlet());
reg.addMapping("/*");
ctx.addContextInitParameter("contextConfigLocation", "classpath:spring-context.xml");
ctx.addListener("org.springframework.web.context.ContextLoaderListener");         
ctx.addListener("org.springframework.web.context.request.RequestContextListener");
ctx.deploy(server);
server.start();

新代码可以编译和执行,没有异常。但是,Jersey应转发给不同方法的所有网址现在都转发到默认页面“/”。

更新

对于遇到同样问题的人。

在Grizzly2.2.20

之后修复

1 个答案:

答案 0 :(得分:3)

最后,我在向java.net发送电子邮件后得到了解决方法。

更改

WebappContext ctx = new WebappContext("ctx","/");  

WebappContext ctx = new WebappContext("ctx","");  

可以按照此link了解更多详情。