2014-03-23 3 views
1

Я хочу создать простой сервис REST, и для этого я использую Jersey и Grizzly.Использование Джерси с Grizzly

Вот мой Класс обслуживания:

@Path("/service") 
class TestRESTService { 

    @GET 
    @Path("test") 
    @Produces(Array(MediaType.APPLICATION_JSON)) 
    public String test() { 
     return "{ \"TestField\" : \"TestValue\" }"; 
    } 

} 

И от того, что я понимаю, вот как я должен начать это:

ResourceConfig config = new ResourceConfig(); 
config.registerClasses(TestRESTService.class); 
URI serverUri = UriBuilder.fromUri("http://localhost/").port(19748).build(); 
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(serverUri, config); 
server.start(); 

Но это не работает. :( Я пытался послать запрос

http://localhost:19748/service/test 

с помощью почтальона плагин Google Chrome путем добавления «Принять»: «приложения/JSON» в качестве заголовка HTTP, но ничего не возвращено «песочные часы» просто спиннинг. . вокруг

не могли бы вы мне помочь

+0

Это не правильный код Java * Каждый * линия отсутствует закрытие ';' –

+0

Вы очень хороший наблюдатель, но это мне не помогает! Сервер запускается. Он выдает информацию INFO: [HttpServer] запущен. Причина, по которой это не является допустимым кодом Java, не имеет отношения к ... – ffddani

+1

Этот код не запустит сервер. Если вам нужна помощь, отправьте реальный код, который вы используете. –

ответ

2

Это один работает для меня:?..

private static String API_PACKAGE = "package where TestRESTService class"; 

public static final URI BASE_URI = UriBuilder 
     .fromUri("http://localhost/") 
     .port(8000) 
     .build(); 

private static HttpServer initServer() throws IOException { 
    System.out.println("Starting grizzly... " + BASE_URI); 

    HttpServer httpServer = GrizzlyServerFactory.createHttpServer(BASE_URI, new HttpHandler() { 
     @Override 
     public void service(Request rqst, Response rspns) throws Exception { 
      rspns.sendError(404); 
     } 
    }); 

    // Initialize and register Jersey Servlet 
    WebappContext context = new WebappContext("GrizzlyContext", "/"); 
    ServletRegistration registration = context.addServlet(
      ServletContainer.class.getName(), ServletContainer.class); 
    registration.setInitParameter(ServletContainer.RESOURCE_CONFIG_CLASS, 
      PackagesResourceConfig.class.getName()); 
    registration.setInitParameter(PackagesResourceConfig.PROPERTY_PACKAGES, API_PACKAGE); 
    registration.addMapping("/*"); 
    context.deploy(httpServer); 

    return httpServer; 
} 
Смежные вопросы