как мне включить POJO-отображение в Джерси программно с помощью Grizzly2? - PullRequest
6 голосов
/ 29 февраля 2012

Следуя инструкциям здесь У меня есть этот код:

private static URI getBaseURI() {
    return UriBuilder.fromUri("http://localhost/").port(9998).build();
}

public static final URI BASE_URI = getBaseURI();

protected static HttpServer startServer() throws IOException {
    System.out.println("Starting grizzly...");
    final ResourceConfig rc = new PackagesResourceConfig("amplify.api.resources");
    return GrizzlyServerFactory.createHttpServer(BASE_URI, rc);
}

public static void main(final String[] args) throws IOException {
    final HttpServer httpServer = startServer();
    System.out.println(String.format("Jersey app started with WADL available at "
            + "%sapplication.wadl\nTry out %shelloworld\nHit enter to stop it...", BASE_URI, BASE_URI));
    System.in.read();
    httpServer.stop();
}

Далее я хочу включить поддержку JSON POJO, как описано здесь , но проблема в том, что я хочу сделать это программно, а не через файл web.xml (у меня нет web.xml файл!).

Как изменить приведенный выше код, чтобы включить функцию сопоставления JSON POJO?

Ответы [ 2 ]

10 голосов
/ 29 февраля 2012
protected static HttpServer startServer() throws IOException {
    System.out.println("Starting grizzly...");
    final ResourceConfig rc = new PackagesResourceConfig("amplify.api.resources");
    rc.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING, true);
    return GrizzlyServerFactory.createHttpServer(BASE_URI, rc);
}
2 голосов
/ 17 января 2013

Вам просто нужно добавить библиотеку jersey-json в ваш проект.

Если вы используете maven, просто добавьте эту зависимость:

<dependency>
    <groupId>com.sun.jersey</groupId>
    <artifactId>jersey-json</artifactId>
    <version>${jersey.version}</version>
</dependency>

Это работает для меня даже без добавления JSONConfiguration.FEATURE_POJO_MAPPING к функциям ResourceConfig.

...