这是使用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就足够了?
感谢您的帮助!
答案 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
下的karaf中。 /cxf/services
可被视为CXF内部应用程序,显示在CXF中部署的服务列表。我不认为你可以配置名称" services
"在这里(你为什么要改变它?)web.xml中的" url-pattern"你说的(如果我理解正确的话)确定你的servlet /应用程序的上下文路径。你可以像这样指定骆驼:
< cxf:rsServer id =" secureRsServer"地址=" HTTPS://0.0.0.0:8182 /我/路径/" 服务类=" ....">
(对于RS Server,可能与WS服务器相同)。