Java 将Jetty与JAX-RS集成

Java 将Jetty与JAX-RS集成,java,servlets,jetty,jersey,jax-rs,Java,Servlets,Jetty,Jersey,Jax Rs,在对web和Stackoverflow进行了彻底的搜索之后,我仍然在努力找出如何将Jersey提供的RESTlet风格的界面与Jetty集成起来 我已经安装并运行了Jetty服务器,这样的球衣似乎也很容易使用,有人知道如何将两者结合起来吗?任何具体的链接都会有所帮助——我对servlet编程也有点陌生。不久前,我使用Jetty和Jersey创建了一个应用程序。这只是一个标准的网络应用程序,真的: web.xml: <servlet> <servlet-name>r

在对web和Stackoverflow进行了彻底的搜索之后,我仍然在努力找出如何将Jersey提供的RESTlet风格的界面与Jetty集成起来


我已经安装并运行了Jetty服务器,这样的球衣似乎也很容易使用,有人知道如何将两者结合起来吗?任何具体的链接都会有所帮助——我对servlet编程也有点陌生。

不久前,我使用Jetty和Jersey创建了一个应用程序。这只是一个标准的网络应用程序,真的:

web.xml:

<servlet>
    <servlet-name>rest.service</servlet-name>
    <servlet-class>
        com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class>
    <init-param>
        <param-name>com.sun.jersey.config.property.resourceConfigClass</param-name>
        <param-value>com.sun.jersey.api.core.PackagesResourceConfig</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>your.package.with.jersey.resources</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>rest.service</servlet-name>
    <url-pattern>/service/*</url-pattern>
</servlet-mapping>
码头起动器:

public class StartJetty {

    public static void main(String[] args) throws Exception {

        Server server = new Server();
        SocketConnector connector = new SocketConnector();
        // Set some timeout options to make debugging easier.
        connector.setMaxIdleTime(1000 * 60 * 60);
        connector.setSoLingerTime(-1);
        connector.setPort(8080);
        server.setConnectors(new Connector[] { connector });

        WebAppContext bb = new WebAppContext();
        bb.setServer(server);
        bb.setContextPath("/");
        bb.setWar("src/main/webapp");

        server.addHandler(bb);

        try {
            System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP");
            server.start();
            while (System.in.available() == 0) {
                Thread.sleep(5000);
            }
            server.stop();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
            System.exit(100);
        }
    }
}
pom.xml:

<!-- Jetty -->
<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty</artifactId>
</dependency>
<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-util</artifactId>
</dependency>
<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-management</artifactId>
</dependency>

<!-- Jersey (JAX-RS) -->
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
</dependency>
<dependency>
    <groupId>com.sun.jersey.contribs</groupId>
    <artifactId>jersey-spring</artifactId>
</dependency>
<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>jsr311-api</artifactId>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-test-framework</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.sun.grizzly</groupId>
    <artifactId>grizzly-servlet-webserver</artifactId>
</dependency>

(...)

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>     
</plugin>

org.mortbay.jetty
码头
org.mortbay.jetty
码头
org.mortbay.jetty
码头管理
泽西岛
泽西服务器
com.sun.jersey.contribs
泽西之春
javax.ws.rs
jsr311 api
泽西岛
jersey测试框架
测试
灰熊
grizzly servlet Web服务器
(...)
org.mortbay.jetty
maven jetty插件

希望这些片段为您指明了正确的方向

您可能想看看Jetty、Jersey、Jackson、Logback/Log4j/JUL/CJL和JDBI之间的开箱即用的集成,所有这些都很好地使用了Yammer度量。

谢谢,这或多或少就是我想要的——尽管我将一些.xml内容抽象到Java代码中——让我只需要很少的一件事!您还需要web.xml中的ContextLoaderListener和web.inf中的applicationContext.xml,为什么您在其中依赖grizzly?@stainear这是一个很好的问题。两个选项中的任何一个:1)我在添加此依赖项时发现它是有效的,因为某种原因我忘记了2)我复制粘贴的依赖项,并且没有费心检查每个依赖项。如果您发现它没有灰熊也能正常工作,请告诉我们。谢谢@pk11您介意将您从web.xml中提取的内容共享到java中吗?我很想看到,因为目前我的服务器没有加载jersey资源,除了web.xml没有正确加载之外,我找不到原因。我宁愿使用java来实现这一点,因为它更易于移植。
<!-- Jetty -->
<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty</artifactId>
</dependency>
<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-util</artifactId>
</dependency>
<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-management</artifactId>
</dependency>

<!-- Jersey (JAX-RS) -->
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-server</artifactId>
</dependency>
<dependency>
    <groupId>com.sun.jersey.contribs</groupId>
    <artifactId>jersey-spring</artifactId>
</dependency>
<dependency>
    <groupId>javax.ws.rs</groupId>
    <artifactId>jsr311-api</artifactId>
</dependency>
<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-test-framework</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>com.sun.grizzly</groupId>
    <artifactId>grizzly-servlet-webserver</artifactId>
</dependency>

(...)

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>maven-jetty-plugin</artifactId>     
</plugin>