2013-07-17 19 views
10

我有一個簡單的項目來測試JAX-RS服務。昨天我下載了jersey-1.7.1,並使用com.sun.jersey.api.container.httpserver.HttpServerFactory和com.sun.net.httpserver.HttpServer創建了一個http服務器,以便在eclipse中測試我的服務(無重複重量容器)球衣和jax-rs RI2 - 缺少HttpServerFactory

今天,我下載了最新的澤西罐(jaxrs-ri)和HttpServerFactory丟失。看起來他們刪除了1.7.1 => 2.0之間的類,但我無法在不推薦的部分找到它。我在API部分看到了grizzly2類(也許這就是我現在應該使用的),但沒有一個jaxrs-ri包中的jar提供了這些類。我下載了jersey-grizzly 1.12 jar,但它只有com/sun/jersey/server/impl/container/grizzly2/GrizzlyContainer類,並且沒有實現。

所以問題好心人

1 - 從球衣下載頁面最新JAXRS裏罐子,什麼是推薦的方式來創建一個簡單的HTTP服務器的命令行測試是否1.7.1方式有已被棄用。 什麼罐子下載/包括,也許是一個短代碼示例?

2 - 關於使用java創建一個簡單的REST服務的整個文檔是一團糟。那麼你如何找到正確的信息呢? (真的,這不是一個笑話,也許這需要一個單獨的博客文章 - 看看亂七八糟,改變的API,沒有關於棄用功能的信息,實現差異,例如CXF vs. jersey,API 1.x VS API 2.0,Glassfish的容器v中XY對Tomcat中,Y的對Y的版本X2 x版本,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); 

    } 
} 

回答

9

你可以使用JdkHttpServerFactory,這是可以在jersey-container-jdk-http-2.0.jar

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

不需要調用server.start()!

+0

謝謝。可能這是阻力最小的路徑。我用一個工作示例更新了這個問題。 – rjha94

+0

我正在嘗試此操作,並在運行時遇到NoClassDefFoundError:com/google/common/base/Function。 – ash

+0

在此處找到它,http://mirrors.ibiblio.org/pub/mirrors/maven2/com/google/collections/google-collections/0.9/google-collections-0.9。罐子,但這似乎是一個兔子洞......另一個缺失的依賴。呸。 – ash

2
+0

嗨@alexey,我會試試看。你是否有代碼示例來測試運用灰熊嵌入式服務器的球衣? – rjha94

+0

當然,Jersey工作區中有很多樣本,例如helloworld:https://github.com/jersey/jersey/tree/master/examples/helloworld – alexey

+0

對不起,但還有一個問題,爲什麼grizzyly-http-servlet-server ,servlet是必要的嗎?我能否簡單地使用http服務器? – rjha94