java – Jetty 9上的Descriptor-less Jersey

我正在寻找使用嵌入式Jetty和Jersey在Java中编写独立REST应用程序.

Jersey文档表明,在Servlet 3.0容器中,Jersey应该能够自动注册Web应用程序,而无需Web描述符文件或代码:https://jersey.java.net/documentation/latest/deployment.html#deployment.servlet.3

但是,我怀疑我没能以正确的方式(或者根本)正确地调用Jersey:

        ServletHandler handler = new ServletHandler();

        Server server = new Server(8080);
        server.setHandler(handler);

        server.start();
        server.join();

我尝试过其他一些东西,但大多数其他例子似乎都试图解决其他问题.

我想要实现的完整示例代码在这里:
https://github.com/dowlingw/jax-rs-plzhalp

(不相关:我考虑过使用DropWizard,但不想要提供的所有内容)

干杯:)

解决方法:

这是一个简单的例子

服务器:

package com.mayapp.app;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.glassfish.jersey.server.ServerProperties;
import org.glassfish.jersey.servlet.ServletContainer;

/**
 * Hello world!
 */
public class App {
    public static void main(String[] args) {
            Server server = new Server(8112);
            ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
            context.setContextPath("/");
            server.setHandler(context);
            ServletHolder h = new ServletHolder(new ServletContainer());
            h.setInitParameter(ServerProperties.PROVIDER_PACKAGES, "com.myapp.resources");
            h.setInitOrder(1);
            context.addServlet(h, "/*");
            server.setDumpAfterStart(true);
            try {
                server.start();
            }catch(Exception ex) {
               ex.printStackTrace();
            }
        }

}

和资源:

package com.myapp.resources;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("hello")
public class HelloWorldResource {
    @GET
    @Produces("text/plain")
    public String getHello() {
        return "hello world";
    }

}
上一篇:阿里巴巴数据库设计规范


下一篇:移动端服务器i-jetty下载编译安装及问题解决系列