Servicemix 4、DOSGi和Zookeeper

Servicemix 4、DOSGi和Zookeeper,osgi,apache-zookeeper,jbossfuse,apache-servicemix,dosgi,Osgi,Apache Zookeeper,Jbossfuse,Apache Servicemix,Dosgi,这是从和交叉发布的 我不能让多斯基在引信里工作。我正在尝试将CXF的DOSGi 1.1-SNAPSHOT与Zookeeper discovery一起安装到FUSE 4.1.0.2上。我也在使用ZooKeepr3.2.1 Felix 2.0.0上的所有功能都非常完美。我只是按照页面上的说明进行操作,然后安装捆绑包。对于DOSGi,我只使用用于DSW和Zookepr发现的。然后,当我在一台机器上使用示例服务impl启动示例包时,我会在zookeeper中看到节点创建。然后在另一台机器上启动示例客户机

这是从和交叉发布的

我不能让多斯基在引信里工作。我正在尝试将CXF的DOSGi 1.1-SNAPSHOT与Zookeeper discovery一起安装到FUSE 4.1.0.2上。我也在使用ZooKeepr3.2.1

Felix 2.0.0上的所有功能都非常完美。我只是按照页面上的说明进行操作,然后安装捆绑包。对于DOSGi,我只使用用于DSW和Zookepr发现的。然后,当我在一台机器上使用示例服务impl启动示例包时,我会在zookeeper中看到节点创建。然后在另一台机器上启动示例客户机,并在服务机器上看到输出。效果很好。我确实有一个关于xml错误被忽略的警告,因为找不到某些XSD,但它似乎不会影响任何东西。哦,我还必须先安装OSGi概要包

当我移动到Fuse时,我没有这样的运气。OSGi概要包附带fuse,因此无需安装。我应该能够安装dosgi ri单包和dosgi ri discovery单包,但这不起作用。dosgi ri singlebundle与servicemix有各种重叠的bundle。我得到一个关于端口8081的错误?或者不管osgi.http.service参数是什么,都已在使用中。显然,dosgi ri singlebundle附带pax webservice,它读取的属性与servicemix附带的servicemix http服务捆绑包相同。这就是我切换到的时候,并解压缩它采取的部分,我想要的。我从dosgi ri多捆绑包中取出dsw捆绑包并安装它。因为jdom依赖性,所以运气不好。然后,我安装了ri multibundle中的jdom,它可以正常工作。然后回到dsw,然后安装,所以我想我有进展了。是时候返回并安装ri discovery singlebundle了。当我开始时,我得到一个pax日志服务classcastexception,它说它不能被转换到osgi日志服务或其他什么。但这只是一个日志错误,在底部它表示找不到的传输类。好吧,日志记录搞砸了,我错过了一些交通课程。很明显,这是因为没有安装足够的ri multibundle,因为它在felix上工作。那么,还有什么是必要的呢。检查时,cxf最小捆绑包缺少导致最后一个错误的类。所以我安装了它。尝试启动发现包,但最终出现了某种corbabroker异常。世界跆拳道联盟。谁在这一切中使用corba?然后我返回并撤销所有这些,并尝试使用ri和ri discovery的singlebundle发行版,但只是关闭servicemix http服务。这导致servicemix崩溃,我无法重新启动它,因为cxf jbi组件最终会产生不满意的依赖关系。古怪的我将忽略这一点,因为我无论如何都不会使用它们,并尝试开始我的示例。无法启动示例,因为上面说jetty无法启动,因为端口已在使用。没有意义,因为我已经关闭了servicemix http服务。然后我重新启动jetty。作品大概我的服务得到注册,我可以使用firefox浏览到wsdl,但没有在zookeeper中注册。尝试关闭ri发现捆绑包并重新启动它,但我得到一个nullpointerexception。由于上述错误之一,ri发现实际上从未启动。然后,我开始尝试拆开ri discovery单包并拉出内部组件。这并没有起作用,因为这显然是必要的,尽管里面有一些我们可以不用的自由裁量权

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

我认为,我的下一步将是再次尝试使用ri多捆绑包,只使用dsw和jdom,再加上ri发现单捆绑包。然后,我将尝试一些cxf fuse捆绑包或一些cxf rt捆绑包来解决soap传输问题

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


我已经能够让cxf将分布式服务示例公开为soap Web服务,方法是使用前面提到的最小cxf包,移除原始cxf包的一部分并重新启动jetty服务,然后启动示例服务。。。或者安装cxf最小buundle,然后启动我的服务,然后立即卸载cxf最小bundle,然后重新启动jetty。。。我想这是命令。这两种方法都不能从干净的启动开始工作,而必须重新启动服务作为让DOSGi工作的过程是很糟糕的。我甚至不知道为什么先安装然后卸载会有什么作用——它不应该留下任何工件。

首先,看看CXF DOSGi mega捆绑包,我认为这只是为了在一个裸露的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控制台,我列出了所有捆绑包,并看到上述所有捆绑包都在