嵌入式码头与泽西岛或resteasy

rin*_*nku 14 jetty jersey resteasy

我想使用嵌入式码头和JAX-RS(无论是resteasy还是jersey)制作RESTful服务.我正在尝试使用maven/eclipse设置创建.如果我尝试关注http://wikis.sun.com/pages/viewpage.action?pageId=21725365链接我无法解决来自ServletHolder sh = new ServletHolder(ServletContainer.class);

public class Main {

    @Path("/")
    public static class TestResource {

        @GET
        public String get() {
            return "GET";
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
        ServletHolder sh = new ServletHolder(ServletContainer.class);

        /*
         * For 0.8 and later the "com.sun.ws.rest" namespace has been renamed to
         * "com.sun.jersey". For 0.7 or early use the commented out code instead
         */
        // sh.setInitParameter("com.sun.ws.rest.config.property.resourceConfigClass",
        // "com.sun.ws.rest.api.core.PackagesResourceConfig");
        // sh.setInitParameter("com.sun.ws.rest.config.property.packages",
        // "jetty");
        sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass",
            "com.sun.jersey.api.core.PackagesResourceConfig");
        sh.setInitParameter("com.sun.jersey.config.property.packages",
            "edu.mit.senseable.livesingapore.platform.restws");
        // sh.setInitParameter("com.sun.jersey.config.property.packages",
        // "jetty");
        Server server = new Server(9999);

        ServletContextHandler context = new ServletContextHandler(server, "/",
            ServletContextHandler.SESSIONS);
        context.addServlet(sh, "/*");
        server.start();
        server.join();
        // Client c = Client.create();
        // WebResource r = c.resource("http://localhost:9999/");
        // System.out.println(r.get(String.class));
        //
        // server.stop();
    }
}
Run Code Online (Sandbox Code Playgroud)

即使这不起作用.任何人都可以建议我/教程/示例?

Pav*_*cek 18

呵呵,链接页面很古老 - 最后更新3年前.

你真的需要码头吗?Jersey与Grizzly(参见http://grizzly.java.net)进行了完美的测试整合,Grizzly 也充当了Glassfish传输层,可以像你的例子一样使用它.

请参阅Jersey工作区的helloworld示例,com.sun.jersey.samples.helloworld.Main类启动Grizzly并"部署"helloworld应用程序:http://repo1.maven.org/maven2/com/sun/jersey/samples/helloworld/ 1.9.1/helloworld-1.9.1-project.zip.

如果你真的需要基于码头的样品,我想我应该能够提供它(随时与我联系).

编辑:

好吧,如果你真的想要码头,你可以拥有它:)看起来很简单.我按照http://docs.codehaus.org/display/JETTY/Embedding+Jetty的说明进行操作,并启动了helloworld示例:

public static void main(String[] args) throws Exception {
    Server server = new Server(8080);
    Context root = new Context(server,"/",Context.SESSIONS);
    root.addServlet(new ServletHolder(new ServletContainer(new PackagesResourceConfig("com.sun.jersey.samples.helloworld"))), "/");
    server.start();
}
Run Code Online (Sandbox Code Playgroud)

http:// localhost:8080/helloworld是可访问的.我使用了Jetty 6.1.16.希望能帮助到你!

您可以在用户指南中找到有关在servlet环境中配置Jersey的更多信息,请参阅http://jersey.java.net/nonav/documentation/latest/

编辑:

依赖..但这有点难以指定,最近在球衣上改变了..所以..

前1.10:

<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty</artifactId>
    <version>6.1.16</version>
</dependency>
<dependency>
     <groupId>com.sun.jersey</groupId>
     <artifactId>jersey-server</artifactId>
     <version>${jersey.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

1.10后:

<dependency>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty</artifactId>
    <version>6.1.16</version>
</dependency>
<dependency>
     <groupId>com.sun.jersey</groupId>
     <artifactId>jersey-servlet</artifactId>
     <version>${jersey.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

你需要这个码头的maven repo:

<repositories>
    <repository>
        <id>codehaus-release-repo</id>
        <name>Codehaus Release Repo</name>
        <url>http://repository.codehaus.org</url>
    </repository>
</repositories>
Run Code Online (Sandbox Code Playgroud)


Jes*_* J. 10

这是一个基于Maven的HelloWorld示例的github仓库,在主分支上为Grizzly配置,在"jetty"分支上为Jetty配置:

https://github.com/jesperfj/jax-rs-heroku

尽管回购品名称不是Heroku特有的.通过运行Procfile中指定的命令启动服务器,例如

$ java -cp "target/dependency/*":target/classes Main
Run Code Online (Sandbox Code Playgroud)