Библиотека Java для веб-сервисов, которая хорошо интегрируется с Jetty и Guice? - PullRequest
2 голосов
/ 23 января 2012

Я обнаружил, что существует ряд библиотек Java для выполнения веб-сервисов (XML-RPC или SOAP), которые, похоже, хорошо интегрируются с EJB.IE: контейнер, который обрабатывает динамическую генерацию кода, необходимую для обработки сервлета веб-сервисов, несколько автоматически настраивается контейнером servlet / e.

Теперь мне интересно, знает ли кто-нибудь, что библиотека Java делает то же самое спросто старый Джетти и Гайс.Я действительно хочу найти хорошую библиотеку, которая требует минимальных строительных лесов, чтобы хорошо работать в простом старом контейнере сервлетов (возможно, с guice).

Ответы [ 2 ]

5 голосов
/ 24 января 2012

Вы можете использовать jetty плюс guice плюс jersey в качестве вашей платформы.

Для этого вам нужно создать класс Bootstrap с методом main.В основном методе configure jetty

Server server = new Server(port);
Context root = new Context(server, "/", Context.SESSIONS);
root.addEventListener(new GuiceServletConfig());
root.addFilter(GuiceFilter.class, "/*", 0);

GuiceConfiguration отвечает за jersey конфигурацию

public class GuiceConfiguration extends GuiceServletContextListener {
    @Override
    protected Injector getInjector() {
        return Guice.createInjector(new ServletModule() {
            @Override
            protected void configureServlets() {
                install(new RestServicesModule());    


                bind(MessageBodyReader.class).to(JacksonJsonProvider.class);
                bind(MessageBodyWriter.class).to(JacksonJsonProvider.class);

                serve("*").with(GuiceContainer.class, ImmutableMap.of("com.sun.jersey.config.feature.Trace",
                                "true"));
            }
        });
    }
}

Далее необходимо создать службы отдыха и связать их в RestServicesModule.

Например, вы можете создать HelloWorld сервис:

@Path("/hello")
public class HelloWorld {

    @GET
    @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    @Path("{name}")
    public Person showPerson(@PathParam("name") String name) {
        return new Person(name);
    }

}

А человек - это простой POJO.

@XmlRootElement
public static class Person {
    private String name;

    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Последний шаг - регистрацияслужба в RestServicesModule

class RestServicesModule extends AbstractModule {
    protected void configure() {
       bind(HelloWorld.class);
    }
}
2 голосов
/ 23 января 2012

Apache CXF может быть то, что вы ищете.Он может работать в стандартном веб-контейнере и позволяет создавать как стиль SOAP, так и службы REST.

...