Веб-сервисы Apache CXF. Медленная инициализация сервера

1

Я разрабатываю веб-службы с Apache CXF 2.7.8. Я использую wsdl2java для генерации SEI и реализаций. Существуют сотни конечных точек веб-службы.

Я использую встроенный причал.

Когда сервер запущен, для инициализации каждой конечной точки требуется несколько часов.

Я публиковал конечные точки с помощью метода Endpoint.publish (адрес, реализация), но я обнаружил, что экземпляр JAXBContext создается для каждой службы. Я исправил это, используя единственный экземпляр JAXBContext для каждой службы, и это помогло.

Но все же, запуск сервера происходит очень медленно.

В журналах этот фрагмент повторяется сотни раз.

cl: AbstractObservable m: setMessageObserver [main] 20:50:48 DEBUG - Принять:/

cl: Заголовки m: logProtocolHeaders [main] 20:50:48 DEBUG - нет Trust Decider для Conduit '{ http://cxf.apache.org } TransportURIResolver.http-conduit'. Предполагается, что будет принято Доверительное Решение.

cl: HTTPConduit $ WrappedOutputStream m: makeTrustDecision [main] 20:50:48 DEBUG - Conduit '{ http://cxf.apache.org } TransportURIResolver.http-conduit' был настроен для простого http.

cl: HTTPConduit m: setTlsClientParameters [main] 20:50:48 DEBUG - нет Trust Decider для Conduit '{ http://cxf.apache.org } TransportURIResolver.http-conduit'

cl: HTTPConduit m: logConfig [main] 20:50:48 DEBUG - поставщик Auth не настроен для Conduit '{ http://cxf.apache.org } TransportURIResolver.http-conduit'

cl: HTTPConduit m: logConfig [main] 20:50:48 DEBUG - Conduit '{ http://cxf.apache.org } TransportURIResolver.http-conduit' настроен для простого http.

cl: HTTPConduit m: logConfig [main] 20:50:48 DEBUG - регистрация входящего наблюдателя: org.apache.cxf.transport.TransportURIResolver$1@1405d451

Может ли кто-нибудь объяснить, что это значит? И если есть какой-то способ настроить эти параметры глобально только один раз?

Спасибо.

Теги:
web-services
cxf

1 ответ

1

Это означает, что вы используете URL-адрес HTTP (или хуже: https) для чего-то, вероятно, местоположения WSDL. Таким образом, для каждого WSDL/schema/etc... он должен загружать их из удаленного места. Для более быстрого запуска поместите локальный wsdl и обратитесь к ним напрямую.

  • 0
    У меня есть мой wsdl на пути к классам. Каждая реализация ws аннотируется с помощью @WebService (..., wsdlLocation = "classpath: myWsdl.wsdl", ..). Несмотря на это, когда я получаю доступ к некоторым из открытых WS и требую wsdl (? Wsdl), я получаю другой wsdl от того, что находится на пути к классам (он предоставляет ту же информацию, но это не тот же файл, он выглядит по-другому). Что я должен сделать ? Я попытался использовать «local / MyWS» вместо « localhost: 8080 / MyWS », но снова в журнале говорится, что служба развернута на localhost: 8080 / MyWS . Спасибо :).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню