У меня есть приложение, которое предоставляет сервисы с использованием транспорта CXF Servlet и Jetty 6.1.Это приложение также должно использовать внешние сервисы.Все сервисы поддерживают спецификацию WS-Addressing (и WS-RM сверху).Чтобы использовать внешний сервис, я запускаю сгенерированный сервисный клиент из приложения.
Проблема в том, что когда я предоставляю разъединенную конечную точку для клиента (WS-RM нужна эта конечная точка для получения входящих сообщений через отдельное соединение http), CXF запускает другой экземпляр сервера Jetty (несмотря на то, чточто сервлетный транспорт (который предоставляет услуги) и клиент (который использует некоторые внешние услуги) совместно используют одну и ту же шину).Мне не нужны два экземпляра Jetty (не говоря уже о том, что они не могут работать на одном и том же порту HTTP).
Есть ли способ, которым я могу предоставить разъединенную конечную точку, используя существующий сервер Jetty и транспорт Servlet?
Пока что я включаю разъединенную конечную точку следующим образом:
Client client = ClientProxy.getClient(port);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
httpConduit.getClient().setDecoupledEndpoint(
"http://domain.com:port/services/dec_endpoints/TestDecEndpoint");
Если я предоставляю относительный путь ("/ dec_endpoints / TestDecEndpoint", так же как относительные пути используются с предоставлением услугчерез сервлетный транспорт), HTTP-канал не указывает полный путь в заголовках SOAP-сообщения, поэтому это тоже не работает (сервер просто не может отправить сообщение в /dec_endpoints/TestDecEndpoint).