我开始使用ServiceMix和Camel,我已经通过了很多例子。
OSGi的示例似乎可以通过热部署或通过控制台部署在ServiceMix中,但我不知道如何部署不是OSGI的项目。可以吗?
例如,我正在查看Camel 2.10.0中名为camel-example-cxf-proxy的示例项目。我做了一些改动,现在我想在ServiceMix中加载它。如果我复制/粘贴到部署目录,它会被加载,但是当我尝试通过osgi运行它时:启动id失败。
但是如果我作为一个独立的IDE从IDE运行它运行得很好,我可以通过SoapUI发送和接收请求。
当我完成这些示例时,我想在eclipse中创建自己的项目,并在IDE和ServiceMix中进行测试。我还不太了解OSGi的优势。所以我不太习惯在我的项目中使用OSGi。
我的主要问题是:我可以在servicemix中部署非OSGi非JBI兼容项目吗?像camel-example-cxf-proxy之类的东西。如果是,我该怎么办?如果不是,我怎么能OSGi-fy camel-example-cxf-proxy?
谢谢:)
答案 0 :(得分:5)
Apache ServiceMix,它使用Apache Karaf作为其内核,支持可插拔部署单元。虽然OSGi是主要单位。
您可以部署JBI工件(例如,JBI用作Apache ServiceMix 3.x的部署单元)。因此,我们将其作为在SMX 4.x中运行JBI的迁移路径。
也可以部署普通的WAR文件。例如,您可以在deploy目录中删除.war文件。如果从shell部署,则需要在部署程序前加上war,因此它知道使用war部署者。
这里有一些关于各种可插拔部署者的文档 http://fusesource.com/docs/esbent/7.0/esb_deploy_osgi/UrlHandlers.html
例如,使用Maven安装Apache Wicket WAR示例,您可以从shell执行:
osgi:install war:mvn:org.apache.wicket/wicket-examples/1.4.7/war?Web-ContextPath=wicket
关于部署者的Apache文档主要记录在Apache Karaf中 http://karaf.apache.org/manual/2.2.9/users-guide/deployer.html
现在部署OSGi应用程序可能会有点痛苦。这就是FuseSource创建FAB以使其更容易的原因。我在博客上写了一些内容,其中引用了视频和更多内容:http://www.davsclaus.com/2012/08/osgi-deployment-made-easy-with-fab.html
使用FAB,您可以直接部署常规Maven项目,而不会有任何OSGi痛苦。
答案 1 :(得分:3)
如果您的项目是maven项目,您可以尝试:
mvn install
然后启动servicemix,并在servicemix命令行中:
install mvn:groupId/artifactId/version
这将提示包ID。然后,juste启动捆绑包:
start <bundle_id>
您可以使用命令“list”
检查捆绑包的状态答案 2 :(得分:1)
项目必须是要在servicemix / karaf中安装的捆绑包。因此,使驼峰项目在OSGi中工作的步骤如下。
使用pom中的maven bundle插件并将其配置为在必要时导入/导出必要的包。
确保您的驼峰上下文以OSGi可以启动的方式定义。这可以是捆绑的激活器,也可以是正确位置的弹簧配置,也可以是正确位置的蓝图配置。
有关详细信息,请参阅我的两个karaf教程: