`

ServiceMix中部署:OSGi Bundle和Feature

 
阅读更多

部署单个Bundle:

1. Hot Deployment

    Copy JAR文件至ServiceMix安装目录下的deploy 目录下即可。

    Linux下命令:cp ProjectDir/target/foo-1.0-SNAPSHOT.jar InstallDir/deploy

2. 手动部署

    (1) osgi:install , 例如:osgi:install -s file:ProjectDir/target/foo-1.0-SNAPSHOT.jar

    (2) osgi:list ,查看已经安装的Bundle。

    (3) osgi:uninstall 181 , Uninstall Bundle 181.

    (4) osgi:resolve 181 , 解析Bundle181的依赖是否满足。

    (5) osgi:start 181 182 183 , 启动三个Bundle.

    (6) osgi:stop 181 182 183 , 停止三个Bundle.

    (7) osgi:restart 181 182 183 , 重启三个Bundle.

3. 设置Bundle Start Level

    Bundle的Start Level是一个正数,Bundle 的启动级别越低Bundle越优先启动。

    (1) osgi:bundel-level 60 182 ,设置Bundle181,182的启动级别为60。

    (2) osgi:start-level ,查看系统的Start Level,默认为100; 可通过osgi:start-level 200,设置为200.

 

部署多个Bundle:

因为许多开源的框架或工具是有多个Bundle组成的,为方便将相关的Bundle作为一个unit进行部署,

FuseESB提供了一个新的部署单元:Feature, 可以在一次部署中部署多个Bundle.

1. 创建一个Feature, 按照下面5步进行

    (1) 创建一个Custom feature repository

          创建目录:C:\ServiceMix-Features,在该目录下创建文件:features.xml:

          <?xml version="1.0" encoding="UTF-8"?>
          <features name="CustomFeatureRepository" >
          </features>

          其中name="CustomFeatureRepository"为自定义的,默认为repo-0,与Maven Repository

          及OBR相比,Features Repository不提供Bundle的存储,他只提供存储Bundle引用的集合。

    (2) 添加一个Feature至Custom feature repository

          <?xml version="1.0" encoding="UTF-8"?>
          <features>
               <feature name="example-camel-bundle" version="1.0.0">
                    <bundle>

                         file:C:/Projects/camel-bundle/target/camel-bundle-1.0-SNAPSHOT.jar

                    </bundle>
               </feature>

         </features>

         验证是否安装成功:features:refreshUrl, features:list

         features:list | grep example-camel-bundle

    (3) 添加Local repository URL to the feature service

          features:addUrl C:/ServiceMix-Features/features.xml

          features:listUrl

    (4) 添加依赖Feature to the feature

          如果体格features依赖其他的features,可以添加features元素作为源features的子元素。当部署

          拥有依赖的feature时,依赖机制将检查依赖的feature是否已经安装至容器,如果没有,依赖机制

          将自动安装丢失的依赖。

          <features>
              <feature name="example-camel-bundle">
                  <bundle>

                      file:C:/Projects/camel-bundle/target/camel-bundle-1.0-SNAPSHOT.jar

                  </bundle>
                  <feature version="4.4.1-fuse-00-08">camel-core</feature>
                  <feature version="4.4.1-fuse-00-08">camel-springosgi</feature>
                  <feature version="4.4.1-fuse-00-08">servicemixcamel</feature>

              </feature>
         </features>

    (5) 添加OSGi configuration to the feature

         如果应用程序使用了OSGi Configuration Admin Service,那么可以给feature添加config元素进行

         配置,例如下面的例子指定了prefix属性有一个值MyTransform:

         <?xml version="1.0" encoding="UTF-8"?>
         <features>
              <feature name="example-camel-bundle">
                   <config name="org.fusesource.fuseesb.example" >
                        prefix=MyTransform
                   </config>
             </feature>
         </features>

         下面的列子演示使用上面的配置:

         <beans xmlns="http://www.springframework.org/schema/beans"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:ctx="http://www.springframework.org/schema/context"
               xmlns:osgi="http://camel.apache.org/schema/osgi"
               xmlns:osgix="http://www.springframework.org/schema/osgicompendium"
               ...>
               ...
               <bean id="myTransform" class="org.fusesource.fuseesb.example.MyTransform">
                     <property name="prefix" value="${prefix}"/>
               </bean>
               <osgix:cm-properties id="preProps" persistentid="org.fusesource.fuseesb.example">
                     <prop key="prefix">DefaultValue</prop>
               </osgix:cm-properties>
               <ctx:property-placeholder properties-ref="preProps" />
         </beans>

         上述配置中的${prefix}的值为:MyTransform.

2. 部署一个Feature

    (1) 安装

          首先执行:features:refreshUrl , 强制FuseESB内核重新读取所有的feature repository;

          其次执行 :features:install example-camel-bundle

    (2) 卸载

          卸载feature:features:uninstall example-camel-bundle

          卸载feature repository: features:removerepository CustomFeatureRepository

    (3) 热部署

         Copy Feature repository至ServiceMix安装目录下的deploy目录,热部署时推荐重新定义一个简化的

         feature repository:

         <?xml version="1.0" encoding="UTF-8"?>
         <features name="CustomDescriptor">
             <repository>C:/ServiceMix-Features/features.xml</repository>
             <feature name="hot-example-camel-bundle">
                  <feature>example-camel-bundle</feature>
             </feature>
         </features>

     (4) 添加一个Feature至boot configuration

          如果期望提供Apache Karaf的Copy 部署在多个主机上,那么可以添加一个feature至boot

          configuration, 当Karaf第一次启动时将决定哪些是已经安装的features的集合。可修改安装

          目录etc下的org.apache.karaf.features.cfg文件,在该文件中:

          featuresRepositories指定在启动时要加载的feature repository;

          featuresBoot指定在启动时要安装的feature.

分享到:
评论

相关推荐

    Apache ServiceMix Specs :: JAXP API 1.3

    Apache ServiceMix Specs :: JAXP API 1.3

    OSGI in Action

    OSGI技术的核心是Bundle,即模块化组件,它可以实现应用的动态热部署、更新和卸载,而无需重启整个系统。OSGI规范定义了一个标准化的运行时环境,使开发者能够创建模块化的Java应用程序和服务。 OSGI in Action是一...

    servicemix 7安装使用及camel-cxf代理webservice

    在实际使用中,需要编写Camel的XML或者Java DSL配置,定义路由规则,然后部署到ServiceMix中。此外,对于CXF的配置,可能涉及到服务端点(Endpoint)、服务接口和服务实现的定义,以及WSDL的生成和发布。 总的来说...

    org.apache.servicemix.bundles.spring-jdbc-3.2.8.RELEASE_2.zip

    Apache ServiceMix 是一个基于 OSGi 的企业级服务混合体,它整合了多个开源组件,如 Spring、CXF、Camel 等,提供了一个灵活的平台来构建和部署分布式应用程序。Spring JDBC 是 Spring 框架的一部分,专门用于简化 ...

    servicemix 3安装及cxf-bc组件代理webservice服务

    将生成的Java类和Spring配置文件打包成一个OSGi Bundle,然后通过Servicemix的管理界面或命令行工具将其部署到Servicemix中。 5. **测试服务代理**: 一旦部署完成,你可以通过Servicemix的NMRI( Naming and ...

    org.apache.servicemix.bundles.spring-jdbc-4.0.2.RELEASE_1.zip

    Apache ServiceMix 是一个全面的企业级服务导向架构(SOA)平台,它基于Java语言和OSGi规范。这个压缩包“org.apache.servicemix.bundles.spring-jdbc-4.0.2.RELEASE_1.zip”包含的是Apache ServiceMix集成的Spring ...

    servicemix-bundles:Apache ServiceMix捆绑包的镜像

    ServiceMix利用OSGi的这种特性,使得服务的部署、管理和升级变得更加简单和灵活。 Java是ServiceMix的基础语言,它支持各种Java EE规范,如JMS(Java消息服务)、JAX-RS(Java API for RESTful Web Services)等。...

    蓝眼睛ServiceMix教程

    根据给定的信息,“蓝眼睛ServiceMix教程”主要围绕ServiceMix这一技术进行介绍,涉及其安装配置、基础概念以及如何在企业环境中应用等方面。下面将基于这些内容,详细展开相关知识点。 ### ServiceMix简介 ...

    ServiceMIx_ESB:Apache服务组合-Java

    8,创建一个名为testfile.xml的蓝图文件并放入servicmix的deploy文件夹中,这将在servicemix目录中创建camel / input文件夹 9.将文件从deploy文件夹复制到camel / input文件夹。 该文件将自动移动到输出文件夹 10. ...

    servicemix

    Apache ServiceMix是基于Java Business Integration(JBI)规范的企业服务总线(ESB)实现,它提供了构建和部署服务组合的强大平台,支持多种协议和服务类型,如SOAP、JMS、HTTP等。ServiceMix的设计原则之一是其...

    快速入门指南 中文版 ServiceMix4

    ServiceMix是一个灵活且强大的ESB,允许开发者构建和部署分布式系统,通过统一的接口连接各种不同的业务组件。快速入门指南的目标是引导新用户完成从安装到初步使用的全过程。 2. **安装** - **系统要求**:确保...

    servicemix代理web service

    3. **CXF与Servicemix的结合**:CXF是一个流行的开放源码服务框架,用于构建和部署Web服务。在Servicemix中,CXF被用作SOAP服务的基础,它能生成Web服务客户端和服务器端的代码,支持WSDL第一和第二类服务。`cxf-...

    servicemix5:Apache ServiceMix 5的镜像

    ServiceMix允许用户将各种服务打包成OSGi bundle,然后部署到ServiceMix容器中。这些服务可以是自定义的Java代码、Web服务、EJB或其他支持的组件。运行时,ServiceMix会管理这些服务的生命周期,确保它们的正确启动...

    servicemix-documentation:Apache ServiceMix文档的镜像

    创建3个表示形式: 包含文档webapp的战争文件pdf文件(位于target/sitegen/manual.pdf ) 使用相同模板(位于target/sitegen )生成的静态网站将文档发布到网站如果您是Apache ServiceMix提交者,则可以使用以下命令

    ws-demo.zip

    3. **部署到ServiceMix**:使用ServiceMix提供的部署工具或命令行界面,将编译后的服务组件部署到ServiceMix容器中。这通常涉及到创建一个或多个karaf特征(features)或者bundle来包装你的服务。 4. **配置路由**:...

    ServiceMix Bundle Camel ActiveMQ环境搭建入门实例Demo

    1.Servicemix环境安装和配置 2.Eclipse开发环境安装搭建 3.用Bundle对应用组件模块化 4.Camel的应用和例子 Bundle之间的消息传递, Errorhandling 负载均衡 。。。。。。 5.Camel利用ActiveMQ来实现对消息的机制...

    serviceMix小例子

    这些路由可以通过ServiceMix的管理工具部署,或者作为bundle(OSGi模块)上传。 5. **测试和调试**: - 一旦路由部署,可以通过发送请求到定义的输入端点来测试路由是否正常工作。ServiceMix提供了日志记录和跟踪...

    Maven管理ServiceMix工程

    通过执行特定的Maven目标,如`mvn servicemix:install`,可以将项目安装到ServiceMix中。 **8. 源码分析** 文章链接中的"CodeFirst"可能是指一种开发模式,即代码优先,意味着开发者先编写业务代码,然后由Maven...

    serviceMix大合集

    在提供的“serviceMix大合集”中,你可能会找到关于如何设置和配置ServiceMix、如何创建和部署服务、如何利用Camel和CXF组件进行集成、以及如何管理和监控ServiceMix实例的详细文档。这些资料对于学习和使用...

Global site tag (gtag.js) - Google Analytics