- 浏览: 554105 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (251)
- UML/RUP/软件工程 (0)
- DDD:领域驱动设计 (1)
- IaaS/Paas/SaaS (1)
- Hadoop/YARN (10)
- PBDP项目 (2)
- OSGi-基础 (7)
- OSGi-Aries (2)
- OSGi-SpringDM (32)
- Oracle/MySQL/SS (8)
- Felix/Equinox/Bnd (14)
- Virgo Server/Gemini (7)
- Weblogic/JBoss/Tomcat (10)
- ActiveMQ (14)
- Camel (1)
- Spring Roo/Eclipse (7)
- Java/JSP/JSF (10)
- Maven (19)
- ESB-Mule (1)
- ESB-ServiceMix (18)
- SOA/SCA/SDO (12)
- WebService/RESTful (17)
- JS/jQuery/ExtJS (4)
- Spring/JPA/MVC (15)
- SpringSecurity (5)
- BPM/jBPM (3)
- Hudson/SVN/CI (0)
- LinuxOS/虚拟化 (25)
- Office/OpenOffice (1)
- 项目管理 (5)
- POI/jFreeChart (1)
最新评论
-
panamera:
请问JMS Transport 发布的webservice 是 ...
CXF 提供的Service Transport-JMS Transpor -
jianyi296:
where is attachment.
CXF WebService Dynamic Client -
hj01kkk:
您好,我用jdbc-user-service为什么每次验证时都 ...
SpringSecurity笔记3-Authenticating Users:Authenticaton Strategy -
wufenglin1231:
你好,我在实现Mapping exceptions to re ...
RESTful 异常处理 -
xchd:
[echo] Project: common
[echo ...
Hive安装配置学习笔记
Fuse ESB Enterprise Container中Application之间Asynchronous Communication有两种方式:ActiveMQ和
NMR Channel.
1. JMS Broker
Fuse ESB Enterprise支持通过activemq feature部署JMS Broker, 在安装这个Feature之后,部署JMS Broker
只需要将 broker配置文件Copy至热部署目录下。
(1) The Default Broker
Fuse ESB Enterprise启动时安装一个默认的Broker Instance,监听的端口是:61616,配置文件位于:
etc/activemq-broker.xml,通过下面的命令查看安装ActiveMQ Broker:
features:list | grep activemq
osgi:list | grep activemq
Broker默认的数据目录:/data/activemq/default
(2) Hot Deploymnet
Copy ActiveMQ的配置文件至deploy目录,Fuse ESB Enterprise将自动创建一个数据目录位于:
InstallDir/activemq-data/BrokerName
ActiveMQ的配置文件有两中方式:
A. Spring configuration file
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.4.0.xsd"> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="simple-spring"> <transportConnectors> <transportConnector name="openwire" uri="tcp://localhost:61000" /> </transportConnectors> </broker> </beans>
B. Blueprint configuration file
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core-5.4.0.xsd http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> <broker xmlns="http://activemq.apache.org/schema/core" brokerName="simple-blueprint"> <transportConnectors> <transportConnector name="openwire" uri="tcp://localhost:61001" /> </transportConnectors> </broker> </blueprint>
(3) Manage Brokers from the Console
activemq:query, activemq:list
(4) JMS Endpoints in a Router Application:test-timer.xml
<?xml version="1.0"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:osgi="http://www.springframework.org/schema/osgi" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://www.springframework.org/schema/osgi-compendium http://www.springframework.org/schema/osgi-compendium/spring-osgi-compendium.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd"> <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent"> <property name="brokerURL" value="tcp://localhost:61610" /> </bean> <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="timer://MyTimer?fixedRate=true&period=4000" /> <setBody> <constant>Hello World!</constant> </setBody> <to uri="activemq:camel.timer" /> </route> <route> <from uri="activemq:camel.timer" /> <to uri="file:/home/fdc/temp/sandpit/timer" /> </route> </camelContext> </beans>
运行上述Broker步骤:
A. 确保Feature activemq-camel已安装:features:install camel-activemq
B. 确保activemq-broker Feature没安装:features:uninstall activemq-broker
C. Copy 上述test-timer.xml文件至deploy目录.
2. Inter-Bundle Communication with the NMR
(1) Fuse ESB Enterpris提供了一个非标准的asynchronous messaging,为:Normalized Message Router
(NMR),是JBI标准中定义的;NMR可用于在OSGi Container和JBI Container中进行asynchronous
communication.
A. Normalized messages in the JBI container
JBI 标准定义了normalized message,是基于WSDL1.1和2.0的,一个完整的normalized message有下面的
spect:
Contet: 严格的XML格式
Attachments:如果发送的是二进制的Content,可以添加附件;
Properties: 键值对;
Security Subject: 验证发送者。
B. Normalized messages in the OSGi container
Contet: 可以是任何的格式
Attachments:可发送的二进制的附件;
Properties: 键值对;
Security Subject: 验证发送者。
(2) The Apache Camel NMR Component
The Apache Camel NMR Component是NMR的一个适配器,使Camle Application发送消息给OSGi Container
中的Bundle或 JBI Container 中的Component。
安装NMR Feature: features:install nmr
实例化NMR Component: 在Bundle的Spring 配置文件中定义下面的Bean,并需要Import-Package:
org.apache.servicemix.camel.nmr, org.apache.servicemix.nmr.api
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:camel-osgi="http://camel.apache.org/schema/osgi" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://camel.apache.org/schema/spring http://camel.apache.org/camel/schema/spring/camel-spring.xsd http://camel.apache.org/schema/osgi http://camel.apache.org/schema/osgi/camel-osgi.xsd"> <bean id="nmr" class="org.apache.servicemix.camel.nmr.ServiceMixComponent"> <property name="nmr"> <osgi:reference interface="org.apache.servicemix.nmr.api.NMR" /> </property> </bean> </beans>
Spring XML Defining a Route with an NMR Endpoint:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:osgi="http://www.springframework.org/schema/osgi" xmlns:camel-osgi="http://camel.apache.org/schema/osgi" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/osgi http://www.springframework.org/schema/osgi/spring-osgi.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd http://camel.apache.org/schema/osgi http://camel.apache.org/schema/osgi/camel-osgi.xsd"> <import resource="classpath:org/apache/servicemix/camel/nmr/camel-nmr.xml" /> <camel-osgi:camelContext xmlns="http://camel.apache.org/schema/spring"> <!-- Route periodically sent events into the NMR --> <route> <from uri="timer://myTimer?fixedRate=true&period=2000" /> <to uri="nmr:ExampleRouter" /> </route> <!-- Route exchange from the NMR endpoint to a log endpoint --> <route> <from uri="nmr:ExampleRouter" /> <bean ref="myTransform" method="transform" /> <to uri="log:ExampleRouter" /> </route> </camel-osgi:camelContext> <bean id="myTransform" class="org.apache.servicemix.examples.camel.MyTransform"> <property name="prefix" value="MyTransform" /> </bean> </beans>
评论
有没有<from uri="nmr:a"><to uri="nmr:b"><to uri="nmr:c">类似的用法??
发表评论
-
使用Maven构建JBI组件
2012-08-29 18:06 12441. 配置POM文件 <pluginR ... -
JBI及相关组件理论
2012-08-28 12:42 11281. Java Business Integration(JB ... -
部署JBI组件至Fuse ESB Enterprise Runtime
2012-08-28 10:20 1363JBI Endpoint Cluster ... -
OSGi容器中Bundle之间Synchronous Communication
2012-07-14 11:25 1310OSGi Core定义了一个服务层,提供了一个Bund ... -
Fuse ESB Enterprise之OSGi Bunbdle部署模型
2012-07-12 09:49 17481. Building an OSGi Bundle ... -
Fuse ESB Enterprise之WAR部署模型
2012-07-12 09:48 13241. Build a WAR Modifying ... -
Fuse ESB Enterprise之FAB部署模型
2012-07-11 08:13 1682FAB Project是以pom.xml配置文件为主进行该JA ... -
FuseESB Enterprise 系统配置
2012-05-22 15:42 1757Fuse ESB Enterprise 使用Felix 实现的 ... -
FuseESB Enterprise Runtime 配置
2012-05-19 16:46 14090. FuseESB作为系统服务 (1) Ge ... -
FuseESB Enterprise Routing and Integration理论
2012-05-19 12:49 1084Fuse ESB Enterprise的内嵌的routing ... -
FuseESB Enterprise Messaging理论
2012-05-18 15:11 10381. The Embedded Messaging Servi ... -
ServiceMix中部署:WebService和OSGi Service
2012-02-04 22:47 1384部署Web Service 1. 2. 部署OSGi ... -
ServiceMix中部署:JAR和WAR
2012-02-04 14:34 1752部署JAR: 1. Transform a non-OSGi ... -
ServiceMix中部署:OSGi Bundle和Feature
2012-02-04 11:49 4296部署单个Bundle: 1. Hot Deployment ... -
Maven管理ServiceMix工程
2012-02-03 20:50 15341. 添加fusersource respository至se ... -
FuseESB Enterprise理论及架构思想
2012-01-31 12:01 1231官方对FuseESB的定义: Fuse ESB is an ... -
FuseESB Enterprise/ServiceMix安装配置
2012-01-31 10:45 2636ServiceMix安装配置: 1. 安装准备 a ...
相关推荐
标题中的“tomcat嵌入OSGI容器”是指在Apache Tomcat服务器中集成OSGI(Open Service Gateway Initiative)框架,使得Tomcat能够支持模块化的应用程序部署和管理。OSGI是一种Java平台上的服务导向架构,它允许动态地...
osgi多个bundle之间读取同一配置文件,需要单独添加一个用来读取配置文件的bundle
示例源码工程可能包含了如何在实际项目中实现这一轻量级集成的代码示例,包括如何配置Web容器以托管OSGi容器,如何编写和打包OSGi Bundle,以及如何在Web应用中使用OSGi服务等。 通过阅读和理解这个源码工程,...
3. 将OSGi bundle部署到容器:将`com.sample.web_1.0.0.jar`和`com.sample.web.zip`中的bundle导入到OSGi容器中,这通常通过容器的管理界面或命令行工具完成。 4. 部署Web应用:如果`bridge.war`是一个Web应用,...
在Web容器中部署OSGi应用,特别是像Tomcat这样的流行Servlet容器,可以提高应用的灵活性、可维护性和可扩展性。本文将详细介绍如何使用桥接技术(如Apache Felix的WebConsole或Pax Web)在Tomcat中部署OSGi程序。 ...
这通常涉及到设置IDEA的项目结构、添加Felix框架的依赖、配置运行配置等操作,使得开发者可以在IDEA中调试和测试OSGI bundle。 **总结** OSGI bundle提供了一种模块化的软件开发方式,使得Java应用程序可以按需...
在OSGI环境中,每个bundle都是一个独立的代码单元,具有自己的类路径,并且可以有自己的依赖关系。这篇博客“浅析OSGI的bundle依赖”可能探讨了如何管理和解决这些模块间的依赖问题。 首先,我们来看一下OSGI中的...
3. 配置Pax Web或类似的Servlet容器,以支持OSGI bundle中的Spring MVC应用。 4. 在Spring MVC中定义Controller,这些Controller作为OSGI服务运行。 5. 调整Web应用的部署描述符(如web.xml),确保它与OSGI环境兼容...
3. **Bundle作为组件**:每个Bundle可以被视为独立的组件,它们之间通过OSGi服务注册表进行交互,实现动态的依赖管理和服务发现。 4. **使用脚本管理组件**:引入脚本语言,如JavaScript或Groovy,可以更灵活地管理...
osgi发布http服务的各种bundle,各种jar包,全全全~非常好用的技术包 包括:org.eclipse.equinox.http_1.0.0.v20060601a.jar org.eclipse.equinox.ds_1.0.0.v20060601a.jar org.eclipse.equinox.servlet.api_1.0.0...
这是通过像Equinox的Servlet Bridge这样的技术实现的,它充当了一个桥梁,让OSGi Bundle可以在传统的Web容器中运行。但是,这种方法并不理想,因为它通常较为复杂,而且Web项目本身并没有模块化为OSGi Bundle,因此...
标题"基于EQUINOX的OSGI BUNDLE运行例子"指的是一个实际操作示例,展示了如何在EQUINOX OSGi环境中运行OSGi Bundle。EQUINOX提供了一个完整的运行时环境,使得开发者可以方便地管理和执行这些模块化的Bundle。 描述...
- **容器管理**:Spring OSGi容器负责Bundle的生命周期管理和服务发现。 - **依赖注入**:Spring的DI特性与OSGi服务相结合,简化了模块间的依赖管理。 - **热部署**:在运行时可以更新Bundle,无需重启系统。 - **...
总结来说,`OSGI bundle change listener`是OSGi框架中用于监控bundle状态变化的关键机制,它允许开发者对bundle的生命周期进行精细控制,实现动态的服务注册、依赖管理和系统自适应配置。结合像VisualVM这样的工具...
3. **系统测试**:在实际OSGi容器中运行所有bundle,验证整个系统的功能和稳定性。 五、OSGi实践 1. **插件系统**:利用OSGi创建可扩展的应用程序框架,如Eclipse IDE就是基于OSGi的插件系统。 2. **分布式系统**...
6. **部署Bundle**:将Servlet Bundle安装到OSGi容器中。这可以通过容器的命令行接口、图形用户界面或API完成。 7. **启动和访问Servlet**:启动Servlet Bundle后,可以通过HTTP服务暴露Servlet,以便通过HTTP请求...
**示例应用**:压缩包中的"osgi_example"可能包含了一个简单的OSGi Bundle示例,例如,创建一个HelloWorld服务,其他Bundle可以注册和使用这个服务。 总结来说,基于Eclipse的Equinox框架开发OSGi Bundle应用,可以...
启动一个Web Bundle时,OSGi容器会解析MANIFEST.MF中的信息,并将Web应用部署到Jetty服务器上。停止时,Web应用从服务器上卸载,但Bundle本身仍保留在系统中。 **Web Bundle的优势** 1. **动态性**:Web Bundle...
Spring DM允许在OSGi容器中管理Spring应用的bean和服务。 - **与Hibernate的集成**:在OSGi环境中使用Hibernate,需要处理类加载和依赖的问题。可以通过使用特定的OSGi友好的Hibernate版本或适配器,如Hibernate ...
Spring OSGi是Spring框架与OSGi(Open Service Gateway Initiative)规范相结合的一种技术,它允许在OSGi容器中运行和管理Spring应用。OSGi是一种模块化系统,为Java应用程序提供了动态部署、版本控制和依赖管理的...