初始化Jetty + Jersey

时间:2014-01-05 18:10:43

标签: java jersey-2.0

我正在尝试使用以下代码初始化Jetty:

URI baseUri = UriBuilder.fromUri("http://localhost/").port(config.getPort()).build();
ResourceConfig resConfig = new ResourceConfig(GetFutureTimetableCommand.class);
Server server = JettyHttpContainerFactory.createServer(baseUri, resConfig);

WebAppContext context = new WebAppContext();
context.setDescriptor("WebContent/WEB-INF/web.xml");
context.setResourceBase("WebContent");
context.setContextPath("rest/*");
context.setParentLoaderPriority(true);
server.setHandler(context);
server.start();

我的资源看起来像这样:

@Path("/timetable")
public class GetFutureTimetableCommand extends CMSCommand {

@GET    
@Produces(MediaType.APPLICATION_JSON)
public CMSBean execute(@PathParam("param") String params) {
    System.out.println("GOOD");
    return new FutureTimetable(8202L, DateTime.now().plusDays(2));
}
}

来自浏览器:

http://localhost:8080/rest/timetable

但没有真正发生,我做错了什么?

2 个答案:

答案 0 :(得分:2)

我发现在尝试确定资源未执行的原因时,启用MBeans with monitoring statistics非常有用。

将以下内容添加到web.xml中的Jersey Servlet定义中,并连接JVisualVMJConsole以查看有关已部署资源的大量数据。

<init-param>
   <param-name>jersey.config.server.monitoring.statistics.mbeans.enabled</param-name>
   <param-value>true</param-value>
</init-param>

我很欣赏这不是你问题的答案,但希望能帮你找到它。

威尔

答案 1 :(得分:0)

根据Jersey文档(其他人只是被忽略),当泽西与jetty一起使用时,似乎只考虑根上下文路径: https://jersey.java.net/documentation/latest/deployment.html

您可能需要使用以下命令更改上下文路径:

context.setContextPath("/");