2016-03-28 5 views
1

Это веб-сервис, развернутый на Apache Karaf с использованием camel-cxf. Я могу видеть список услуг cxf в URL-адресе localhost: 8181/cxf, который имеет некоторые службы отдыха и мыла, развернутые на нем.Настройка списка услуг cxf в karaf

Проблема заключается в том, что она возвращает список услуг, когда любой запрос приходит с ключевым словом «услуги». Например, url http://localhost:8181/abcd/services возвращает страницу списка услуг cxf вместо обработки фактического запроса.

Я узнал от http://cxf.apache.org/docs/jaxrs-services-description.html, что его из-за значения по умолчанию для сервиса-списка CXFServet являются сервисами.

Вот мой вопрос. Если я хочу переопределить это, я должен установить это свойство в etc/org.apache.cxf.osgi.cfg. Этот файл cfg отсутствует в папке etc в моем карафе. Какие шаги следует предпринять, если я создаю этот файл свойств вручную? Какие функции мне нужно установить? Или создать этот cfg достаточно?

Цените свою помощь!

+0

Как настроен ваш сервис camel-cxf? У вас есть blueprint.xml? – fiw

+0

У меня есть camel-context.xml –

+0

Можете ли вы опубликовать санированную версию вашего camel-context.xml? – fiw

ответ

0

Я вижу несколько моментов здесь -

  • рамки CXF устанавливается по умолчанию в karaf под контекстным путем /cxf.
  • /cxf/services можно рассматривать как внутреннее приложение CXF, которое отображает список служб, развернутых в CXF. Я не думаю, что вы можете настроить имя «services» здесь (и почему вы это измените?)
  • «url-pattern in web.xml», о котором вы говорите (если я правильно понимаю) определяет путь контекста вашего сервлета/приложения. Вы можете указать это верблюд, как это:

    < CXF: rsServer ID = адрес "secureRsServer" = "https://0.0.0.0:8182/my/path/" ServiceClass = "....">

(для сервера RS, вероятно, такого же для WS-сервера).

1

Не должно быть никаких дополнительных требований к установке, просто создайте новый файл etc/org.apache.cxf.osgi.cfg.

Есть три настройки вы можете быть заинтересованы в:

org.apache.cxf.servlet.context = /mycxf 
org.apache.cxf.servlet.service-list-path = /myservices 
org.apache.cxf.servlet.hide-service-list-page = false 

Где URL по умолчанию для службы листинга CXF обычно как http://localhost:8181/cxf/services, с изменениями выше URL станет http://localhost:8181/mycxf/myservices

Если вы измените значение с false (значение по умолчанию) на значение true, тогда ваши услуги будут скрыты, и вместо этого вы получите страницу с сообщением Служба не найдена.

Поскольку это параметры инициализации, вам необходимо закрыть Karaf для внесения изменений.

+0

Я пробовал, но только первое свойство org.apache.cxf.servlet.context =/mycxf, похоже, работает. Но другие не вступают в силу. Я использую karaf версии 3.0.2. Любая идея, в чем проблема? –

+0

Существует ошибка со старыми версиями cxf-rt-transports-http, которые не подбирают эти параметры инициализации, которые могут быть вашей проблемой. См. Https://issues.apache.org/jira/browse/CXF-6547 – bgossit