Публикация веб-сервиса JAX-WS с Guice в приложении сервлета

В настоящее время мы переносим существующее приложение JBoss EJB на чисто сервлетное решение, которое должно работать на Jetty (мыв настоящее время используется версия 6, но версия в основном не имеет значения) и использует Guice для внедрения зависимостей и AOP. Несмотря на огромную сложность, мыдо сих пор было довольно успешно. Уровень персистентности и большинство наших сервисов запущены и работают, включая сервисы JAX-RS REST.

Однако, когда мы начали портировать наши существующие сервисы SOAP JAX-WS, мы столкнулись с трудностями. Мы уже потратили около одного дня на поиск в Интернете, и многие люди сталкивались с такими же проблемами много лет назад. Тем не менее, никто не предлагает хорошего решения.

Подробнее о нашей архитектуре

Мы'используяGuiceServletContextListener создать наш глобальный инжектор, который настроен со всеми модулями. Крайне важно, чтобы у нас был только один Инжектор, потому что нам нужно поддерживать синглтоны.

Насколько нам известно, конкретная реализация JAX-WS не имеет значения. Мы'В настоящее время мы экспериментируем с Metro, но мы могли бы также использовать Apache-CXF.

Подходы оценены до сих пор

Этот стековый пост предлагает создать службу вручную, а затем опубликовать ее через Endpoint.publish (...). Однако это неприемлемое решение, поскольку он не использует контейнер Jetty, а запускает собственный HTTP-сервер.

final Module module = new HelloModule();
final Injector injector = Guice.createInjector(module);
final HelloService helloService = injector.getInstance(HelloService.class);
Endpoint.publish("http://localhost:8080/helloService", helloService);

Тот же пост также предлагает использоватьJAX-WS Guice интеграция что в целом звучит как хороший подход. Однако это решение создает свой собственный Injector и поэтому несовместимо с нашим подходом на основе GuiceServletContextListener. Мы нашлиэта тема где обсуждается точно такая же проблема, но, похоже, ни у кого нет решения.

Мы также смотрели наGuice-CXF что должно облегчить интеграцию Apache-CXF в приложения Guice, но, насколько мы понимаем описание, пока это работает только для служб JAX-RS REST.

Чтобы не тратить больше времени на это и пытаться заново изобрести колесо, мы разместили этот вопрос здесь в надежде, что кто-то еще прошел через этот ад и может дать нам несколько советов или, возможно, даже несколько рабочих примеров. Любая помощь очень ценится.

Ответы на вопрос(1)

Ваш ответ на вопрос