Библиотека Java для веб-служб, которая хорошо интегрируется с Jetty и Guice?
Я обнаружил, что существует ряд библиотек Java для выполнения веб-служб (либо XML-RPC, либо SOAP), которые, по-видимому, хорошо интегрируются с EJB. Т. е.: контейнер, который обрабатывает генерацию динамического кода, необходимого для обработки сервлета веб-служб, несколько автоматически настраивается контейнером servlet / E.
Теперь мне интересно, знает ли кто-нибудь библиотеку Java, чтобы сделать то же самое с простой старой пристанью и Guice. Я действительно хочу найти хорошую библиотеку, которая требует минимальных строительных лесов для работы. ну, в простом старом контейнере сервлета (возможно, с guice).
2 ответа:
Вы можете использовать
Для этого необходимо создать классjetty
plusguice
plusjersey
в качестве платформы.Bootstrap
с помощью методаmain
. В основном методе configurejetty
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")); } }); } }
Далее вы должны создать свои службы rest и связать их в
RestServicesModule
.Например, вы можете создать
HelloWorld
сервис:А человек-это простое POJO.@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); } }
@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); } }
Apache CXF может быть тем, что вы ищете. Он может работать в стандартном веб-контейнере и позволяет создавать как SOAP-стиль, так и службы REST.