Как вы отлаживаете публикацию конечной точки CXF? - PullRequest
3 голосов
/ 08 ноября 2011

Учитывая пример "cxf-osgi" из apache-servicemix-4.4.1-fuse-00-08 источника fuse, созданного с помощью maven 3.0.3, при его развертывании на apache karaf 2.2.4 и CXF 2.4.3 веб-сервис никогда не публикуется и никогда не виден сервлету CXF (http://localhost:8181/cxf/). В журнале karaf нет ошибок. Как можно отладить такое поведение?

Ответы [ 3 ]

3 голосов
/ 09 ноября 2011

Стоит включить уровень (уровни) журнала - вы можете сделать это навсегда в etc/org.ops4j.pax.logging.cfg или в консоли с log:set TRACE org.apache.cxf - IIRC покажет некоторую полезную информацию.

Также проверьте, чтона самом деле он публикуется на localhost / 127.0.0.1 - вполне может быть опубликован на другом интерфейсе, IP локальной сети, но не localhost.Попробуйте использовать 0.0.0.0 в качестве адреса, чтобы он связывался со всеми доступными интерфейсами.

Поскольку вы используете maven, вы можете загрузить исходный код CXF (легко в Eclipse) и подключить удаленный отладчик кэкземпляр Karaf, с некоторыми стратегически расположенными точками останова, вы сможете понять, что происходит.

2 голосов
/ 09 ноября 2011

Попробуйте перейти на Равноденствие вместо Феликса по умолчанию. В 2.4.3 есть ошибка, которая не очень хорошо работает с Феликсом. Кроме того, теперь доступен CXF 2.4.4, который также должен это исправить.

0 голосов
/ 28 января 2012

Взгляните на этот вопрос, который я подал на этой неделе: https://issues.apache.org/jira/browse/CXF-4058

Я обнаружил, что если мой beans.xml загружается до jar-пакета cxf, то конечные точки регистрируются в CXF, но не в службе http OSGi. Таким образом, все выглядит хорошо из журналов, но конечные точки никогда не доступны. Это условие гонки.

Я сделал два обходных пути: 1) в краткосрочной перспективе, просто переместите мои собственные jar-файлы позже в порядке загрузки (я использую функции Karaf), чтобы Spring и CXF были полностью загружены до того, как будет прочитан мой beans.xml, и 2) покинули Spring и накатить свой собственный код привязки, основанный на этом подходе: http://eclipsesource.com/blogs/2012/01/23/an-osgi-jax-rs-connector-part-1-publishing-rest-services/

Вчера я только что реализовал решение № 2, и я уже чрезвычайно доволен им. Это решило все мои проблемы с загрузчиком классов (до того, как мне пришлось вручную добавить много строк Import-Package, потому что BND не видит ссылки на beans.xml), и исправило условие моей загрузки.

...