jersey和jax-rs RI2 - 缺少HttpServerFactory

时间:2013-07-17 11:44:32

标签: java jersey jax-rs grizzly

我有一个简单的项目来测试JAX-RS服务。昨天我下载了jersey-1.7.1并使用com.sun.jersey.api.container.httpserver.HttpServerFactory和com.sun.net.httpserver.HttpServer来创建一个http服务器来测试我在Eclipse中的服务(没有重载重量容器)

今天,我下载了最新的球衣罐(jaxrs-ri),但缺少HttpServerFactory。看起来他们在1.7.1 =>之间删除了这个类。 2.0但我在弃用的部分找不到它。我在API部分看到了grizzly2类(也许这就是我现在应该使用的)但是jaxrs-ri bundle中的jar都没有提供这些类。我下载了jersey-grizzly 1.12 jar,但它只有com / sun / jersey / server / impl / container / grizzly2 / GrizzlyContainer类,没有实现。

对善良的灵魂提出质疑

1 - 使用来自泽西下载页面的最新jaxrs-ri jar,如果不推荐使用1.7.1方式,建议使用命令行创建简单http服务器的方法。 什么罐子下载/包括,也许是一个简短的代码示例?

2 - 关于使用java创建简单REST服务的整个文档非常混乱。那么你如何找到正确的信息呢?

(真的,这不是一个玩笑。也许这需要一个单独的博客文章 - 只看一塌糊涂,更改API,没有关于弃用功能的信息,实现差异,例如CXF vs. jersey,API 1.x vs API 2.0,Glassfish容器v xy与Tomcat,y版本x与y版本x2,servlet 3.0将拥有此文件,您是否正在扩展应用程序!)

更新

使用JDKHttp服务器的工作示例

package test.jersey;

import java.net.URI;
import com.sun.net.httpserver.HttpServer;
import org.glassfish.jersey.jdkhttp.JdkHttpServerFactory ;
import org.glassfish.jersey.server.ResourceConfig;

public class ConsoleServerV2 {

    static final String BASE_URI = "http://localhost:9099/";

    public static void main(String[] args) throws Exception {
        HttpServer server = null ;

        ResourceConfig rc = new ResourceConfig(rest.Service.class);
        URI endpoint = new URI(BASE_URI);

        server = JdkHttpServerFactory.createHttpServer(endpoint,rc);
        System.out.println("console v2.0 : Press Enter to stop the server. ");
        System.in.read();
        server.stop(0);

    }
}

3 个答案:

答案 0 :(得分:9)

您可以使用jersey-container-jdk-http-2.0.jar中提供的JdkHttpServerFactory:

ResourceConfig rc = new ResourceConfig(HelloWorldResource.class);
HttpServer server = JdkHttpServerFactory.createHttpServer(baseUri, rc);

无需调用server.start()!

答案 1 :(得分:2)

答案 2 :(得分:0)

您也可以从这里获取捆绑包 http://mvnrepository.com/artifact/com.sun.jersey/jersey-server/1.2 只需将其添加到您的库文件夹,然后在项目中右键单击它并选择“添加为库”。