在karaf中配置cxf服务列表

时间:2016-03-28 17:55:08

标签: java spring apache-camel cxf apache-karaf

这是使用camel-cxf在Apache Karaf上部署的Web服务。我能够在URL localhost:8181 / cxf中看到cxf服务列表,其中部署了一些rest和soap服务。

问题是,只要有任何请求附带关键字“services”,它就会返回服务列表。例如,url http://localhost:8181/abcd/services返回cxf服务列表页面,而不是处理实际请求。

我从http://cxf.apache.org/docs/jaxrs-services-description.html得知,这是因为CXFServet的service-list-path的默认值是服务。

这是我的问题。如果我想覆盖它,我应该在etc / org.apache.cxf.osgi.cfg中设置此属性。我的karaf中的etc文件夹下没有此cfg文件。如果我手动创建此属性文件,将采取哪些步骤?我需要安装哪些功能?或者创建这个cfg就足够了?

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

不应该有额外的安装要求,只需创建一个新文件 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

如果CXF服务列表的默认网址通常为http://localhost:8181/cxf/services,则网址上方的更改将变为http://localhost:8181/mycxf/myservices

如果您从false(默认值)更改为true,那么您的服务将被隐藏,而您将获得一个页面,指出未找到任何服务。

因为这些是初始化设置,您需要关闭Karaf才能应用更改。

答案 1 :(得分:0)

我在这里看到了几点 -

  • CXF框架默认安装在上下文路径/cxf下的karaf中。
  • /cxf/services可被视为CXF内部应用程序,显示在CXF中部署的服务列表。我不认为你可以配置名称" services"在这里(你为什么要改变它?)
  • web.xml中的" url-pattern"你说的(如果我理解正确的话)确定你的servlet /应用程序的上下文路径。你可以像这样指定骆驼:

    < cxf:rsServer id =" secureRsServer"地址=" HTTPS://0.0.0.0:8182 /我/路径/"                       服务类=" ....">

(对于RS Server,可能与WS服务器相同)。