【问题标题】:Initializing Jetty+Jersey初始化 Jetty+Jersey
【发布时间】:2016-04-25 05:36:26
【问题描述】:

我正在尝试使用以下代码初始化 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

但实际上什么也没发生,我做错了什么??

【问题讨论】:

  • 当你说“什么都没有发生”时,你到底是什么意思?
  • 我在资源的 'execute' 方法中放了一个断点,它永远不会停在那里。
  • 调试器可能有错误,不幸的是。在浏览器中呢,那里会发生什么?
  • 空白页。一开始我使用 Tomcat 和 Jersey 1.18,它运行良好。但我决定在我的服务器中嵌入 Jetty 并升级到 Jersey 2.5 ...

标签: java jersey-2.0


【解决方案1】:

我发现在尝试确定资源未执行的原因时启用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>

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

【讨论】:

    【解决方案2】:

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

    您可能需要更改上下文路径:

    context.setContextPath("/");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 1970-01-01
      • 2017-02-16
      相关资源
      最近更新 更多