在没有蓝图xml的Karaf中提供RESTful服务

时间:2016-10-07 08:35:51

标签: java rest osgi karaf

我是Karaf的新手,因此正在寻找使用felix注释创建RESTful Web服务项目的资源,而不使用BundleActivator类(我的意思是需要由我编写的实际类,但是没关系如果某些编译器或maven插件为我做了同样的事情)和blueprint xml文件。到目前为止,我在第一部分(BundleActivator部分)取得了成功,现在编译后自动创建带有导入和导出语句的MANIFEST.MF,为每个组件类创建相关的XML文件,并将其打包成一个很好的jar包,它非常有用当我在Karaf容器上部署它时。但是没有用的是RESTful服务。捆绑包已正确部署,但REST URL未公开,因此我无法访问它们。

请帮助我完成这项工作。我不想写一个XML文件,每次添加或删除休息服务时都需要修改。

由于

2 个答案:

答案 0 :(得分:3)

如果您想完全避免蓝图,那么您应该使用cxf-dosgi。您只需使用jaxrs注释您的休息服务,并将其作为具有一些特殊属性的OSGi服务发布。

请参阅cxf-dosgi rest sample

该示例使用标准DS注释和maven包插件即时创建DS组件xml。

如果您希望在运行时使用蓝图,则可以使用blueprint-maven-plugin。 See this example

答案 1 :(得分:0)

我想出了一种不使用CXF功能的方法。也就是说,创建一个组件类,并在activate方法中获取ConfigurationAdmin的对象,并将所需的上下文路径放在jersy服务器进程上(使用jersey publisher jar)。使用这个mehtod,我可以在Karaf中部署任何rest / serlvet,而无需使用blueprint.xml文件。我希望这会有所帮助。