首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Servicemix4、DOSGi和Zookeeper

Servicemix4、DOSGi和Zookeeper
EN

Stack Overflow用户
提问于 2009-09-26 13:11:15
回答 1查看 2.6K关注 0票数 2

这是来自fusesource forumservicemmix forum的交叉发布。

我不能让DOSGi在FUSE中工作。我正在尝试将发现的DOSGi 1.1快照放到FUSE 4.1.0.2上。我也在使用Zookeepr 3.2.1。

一切都能在Felix 2.0.0上完美运行。我只需按照DOSGi Discovery页面上的说明进行操作,然后安装Discovery Demo包。对于DOSGi,我只使用用于DSW的cxf-dosgi-ri-singlebundle-distribution-1.1-SNAPSHOT.jar和用于zookeepr发现的cxf-dosgi-ri-discovery-singlebundle-distribution-1.1-SNAPSHOT.jar。然后,当我在一台机器上启动带有示例服务impl的示例包时,我看到了zookeeper中的节点创建。然后,我在另一台机器上启动示例客户机,并在服务机器上看到输出。效果很好。我有一个关于xml错误被忽略的警告,因为找不到一些XSD,但它似乎不会影响任何东西。哦,我还得先安装OSGi compendium包。

当我搬到Fuse时,我就没有这样的运气了。OSGi compendium捆绑包附带了fuse,因此无需安装它。我应该只需要安装dosgi-ri单捆绑包和dosgi-ri-discovery单捆绑包,但这不起作用。dosgi-ri单捆绑包有各种与servicemix重叠的捆绑包。我得到一个关于端口8081的错误?或者无论osgi.http.service参数是什么,已经在使用中。显然,dosgi ri singlebundle附带pax webservice,它读取与servicemix附带的servicemix http服务捆绑包相同的属性。这就是我切换到cxf-dosgi-ri-multibundle-distribution-1.1-SNAPSHOT.zip并解压缩它以获取我想要的部分的时候。我从dosgi ri多包中取出dsw包并安装它。由于依赖于jdom,所以不走运。然后我安装了ri multibundle中附带的jdom,它工作得很好。然后返回到dsw,这是安装的,所以我想我得到了一些东西。是时候回去安装ri-discovery单捆绑包了。当我开始的时候,我得到了一个pax日志服务classcastexception,告诉我它不能被转换成一个osgi日志服务或者别的什么。但这只是一个日志错误,在底部它说它找不到http://schemas.xmlsoap.org/soap/http的传输类。好了,日志记录搞砸了,我错过了一些传输类。很明显,这是因为ri多捆绑包没有安装足够的东西,因为它在felix上工作。所以这里还有什么是必要的。检查后的cxf-minimal-bundle具有导致最后一个错误的缺失类。所以我安装了它。尝试启动discovery捆绑包,但最终出现了某种corbabroker异常。他妈的。在这一切中谁在使用corba?然后,我返回并撤消所有这些操作,尝试使用ri和ri-discovery的单包发行版,但只需关闭servicemix http服务即可。这会使servicemix崩溃,我不能重启它,因为使用cxf jbi组件最终得到了一个未满足的依赖。很奇怪。我将忽略这一点,因为我无论如何都不会使用它们,并尝试开始我的示例。无法启动示例,因为它显示jetty无法启动,因为端口已在使用中。这没有什么意义,因为我已经关闭了servicemix http服务。然后我重新启动jetty。管用吗?也许吧。我的服务已注册,我可以使用firefox浏览wsdl,但在zookeeper中没有注册。尝试关闭ri-discovery捆绑包并重新启动它,但是我得到了一个nullpointerexception。显然,由于上述错误之一,ri发现实际上从未启动。然后,我开始尝试拆分ri-discovery单包,并拔出内部结构。这不起作用,因为显然这一切都是必要的,尽管里面有一些我们可以没有的库。

故事到此结束。不能让它工作。其他人能让它工作吗?我只想在SMX4中运行discovery示例。我很确定这只是一个捆绑冲突的问题。这不是OSGi应该解决的问题吗?这比仅仅告诉我您依赖什么jars并让我设置我的类路径更糟糕。至少到那时我才能让它运行起来。

我认为,我的下一步将是再次尝试使用ri-multibundle,只使用dsw和jdom,外加ri-discovery singlebundle。然后,我将尝试一些cxf-fuse包或一些cxf-rt包来解决soap传输问题。

编辑注释:我需要的不仅仅是显示处于活动状态的DOSGi包。在您尝试通过它们公开服务之前,它们实际上不会做太多事情。我确实需要看到多台机器向zookeeper实例注册服务,以及其他机器使用这些服务--就像正在运行的DOSGi发现示例一样。

通过使用最小的cxf包,我已经能够让cxf将分布式服务示例公开为soap webservice,方法是删除原始cxf包的一部分并重新启动jetty服务,然后启动示例服务……或者安装cxf minimal buundle,然后启动我的服务,然后立即卸载cxf minimal包,然后重新启动jetty……我想这就是命令。从干净的启动开始,这两种方法都不会起作用,而且必须重新启动服务才能使DOSGi正常工作,这是很糟糕的。我甚至不知道为什么先安装再卸载会有任何用处--它不应该留下任何工件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-29 10:46:50

第一点,看看捆绑包,我认为这只适用于在纯OSGi运行时中进行快速破解,这基本上是Equinox和Felix提供的最小环境。它不适用于更丰富的环境,如FUSE或Servicemix,因为您可能会在捆绑包和平台的服务上发生冲突,如您所见。

我能够让Servicemix 4.0干净地启动(这是在Windows上),然后我热部署:

  • com.springsource.org.jdom-1.0.0.jar
  • cxf-bundle-minimal-2.2.1.jar
  • cxf-dosgi-ri-discovery-local-1.0.jar
  • cxf.dosgi-ri-dws.cxf-1.0.jar

使用Servicemix控制台,我列出了所有包,并看到上面的所有包都处于Active状态(正如预期的那样)。我列出了服务,两个CXF DOSGi包正在导出服务,所以看起来工作正常。日志中未报告错误。

你对OSGi有多熟悉?Servicemix看起来相当庞大,同时学习OSGi、Servicemix和CXF/DOSGi并非易事(在我看来)。

提供的控制台对于OSGi来说不是很好,我建议为web interface安装Apache Felix控制台包。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1481177

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档