james的这个版本--james-server 3.0-M2,使用了JMS来控制服务器的邮件队列。
james使用了ActiveMQ来作为它的JMS服务器。
ActiveMQ介绍:
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
1. 多种语言和协议编写客户端。语言: Java, C, C++, C#, Ruby, Perl, Python, PHP。应用协议: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
2. 完全支持JMS1.1和J2EE 1.4规范 (持久化,XA消息,事务)
3. 对Spring的支持,ActiveMQ可以很容易内嵌到使用Spring的系统里面去,而且也支持Spring2.0的特性
4. 通过了常见J2EE服务器(如 Geronimo,JBoss 4, GlassFish,WebLogic)的测试,其中通过JCA 1.5 resource adaptors的配置,可以让ActiveMQ可以自动的部署到任何兼容J2EE 1.4 商业服务器上
5. 支持多种传送协议:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
6. 支持通过JDBC和journal提供高速的消息持久化
7. 从设计上保证了高性能的集群,客户端-服务器,点对点
8. 支持Ajax
9. 支持与Axis的整合
10. 可以很容易得调用内嵌JMS provider,进行测试
正题来了:
1.引入activemq的xsd
ActiveMQ4.1 开始 响应spring 2.0号召,支持了引入xml schema namespace的简单配置语法,简化了配置的语句。
在applicationcontext.xml(spring的配置文件)中引入activemq的xml scheam 配置文件),如下:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:amq="http://activemq.apache.org/schema/core"
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.1.xsd">
2.配置ActiveMQ 的 broker
<amq:broker useJmx="true" persistent="true" brokerName="james" dataDirectory="filesystem=file://var/store/activemq/brokers" useShutdownHook="false" schedulerSupport="false" id="broker">
<amq:destinationPolicy>
<amq:policyMap>
<amq:policyEntries>
<amq:policyEntry queue=">" prioritizedMessages="true"/>
</amq:policyEntries>
</amq:policyMap>
</amq:destinationPolicy>
<amq:managementContext>
<amq:managementContext createConnector="false"/>
</amq:managementContext>
<amq:persistenceAdapter>
<amq:amqPersistenceAdapter/>
</amq:persistenceAdapter>
<amq:transportConnectors>
<amq:transportConnector uri="tcp://localhost:0" />
</amq:transportConnectors>
</amq:broker>
什么是Broker呢?可以把JMS Brokers 看成是服务器端。这个服务器可以独立运行.也可以随着其他容器以内嵌方式运行。
james使用了把ActiveMQ嵌入到它自己服务的方式,所以当james启动,加载spring的配置文件,ActiveMQ也会随之启动。
3.配置ActiveMQ的连接方式
<amq:connectionFactory id="amqConnectionFactory" brokerURL="vm://james?create=false">
<property name="blobTransferPolicy" ref="blobTransferPolicy"/>
</amq:connectionFactory>
上面配置的broker是jvm embedded 所以url为:vm://james?create=false
注:
连接ActiveMQ的方式
ActiveMQConnectionFactory 提供了多种连接到Broker的方式
常见的有
vm://host:port //vm
tcp://host:port //tcp
ssl://host:port //SSL
stomp://host:port //stomp协议可以跨语言,目前有很多种stomp client 库(java,c#,c/c++,ruby,python...);
4.配置JMS的ConnectionFactory
<bean id="jmsConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
<property name="targetConnectionFactory" ref="amqConnectionFactory"/>
<property name="sessionCacheSize" value="10"/>
<property name="cacheConsumers" value="false"/>
<property name="cacheProducers" value="true"/>
</bean>
CachingConnectionFactory继承自SingleConnectionFactory,增加了对Session和MessageProducer缓存的功能。
5.配置JMS事务
<bean id="jmsTransactionManager" class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
</bean>
这样可以把JMS作为一个事务资源无缝地集成到Spring的事务管理机制中去。
6.邮件队列Factory
<bean id="mailQueueFactory" class="org.apache.james.queue.activemq.ActiveMQMailQueueFactory" depends-on="broker"/>
depends-on="broker"
mailQueueFactory这个bean需要broker先实例化。
另:我的小站:
NB分享:
http://www.nbshare.com
分享到:
相关推荐
在 Laravel 开发中,JMS Format Laravel 是一个专门为 Laravel 5.x 框架设计的服务提供程序和外观,它允许开发者使用 JMS(James Melton and Stefan Priebsch)消息格式库来处理序列化和反序列化任务。JMS 库是一个...
描述中提到的"james3.0邮件服务器不联网无法启动问题"可能涉及到James服务器在没有网络连接的情况下,由于依赖某些特定的库或者组件,导致初始化失败。ActiveMQ的这个核心库可能是用来替代或补充James中的某个组件,...
在JMS中,消息传递是通过消息生产者和消费者之间建立的非直接连接进行的。而Destiny则是架起了一座桥梁,它将这些JMS概念如工厂、目标(队列和主题)以及消息,映射到HTTP资源和集合上,使得通过HTTP请求就能实现...
Java EE(Java Platform, Enterprise Edition)起源于1990年代,由Sun Microsystems的James Gosling领导的团队开发,最初命名为Oak,旨在为家用电器编程。随着技术的发展,Java在1995年正式发布,随后经历了多个版本...
nents has never been easier, because you don’t have to implement JMS message listeners or FTP clients, deal with converting data between protocols, or mess with the raw details of ...
Apache Camel的首次提交发生在2007年,由James Strachan贡献,初始版本为Camel routing library。随后在2008年,Willem Ning Jiang提交了更新代码,该提交包含了将Camel CXF示例与标准化的端点URI更新。 随后文档中...
- **历史背景**:1993年,James Gosling等人在Sun Microsystems开发了一种称为Oak的编程语言,后更名为Java。1995年,随着互联网的兴起,Java作为一种跨平台、安全且易于移植的编程语言得到了快速发展。同年,Sun ...
Java发展历程可以追溯到1991年,当时Sun公司的James Gosling领导的绿色计划(Green Project)着手开发一种能在各种消费电子设备上运行的分布式系统。最初,项目组使用C++进行开发,但由于C++的局限性,Gosling决定...
其创始人詹姆斯·戈士林(James Gosling)引领了这一项目。随着互联网的崛起,Java在1995年获得了Netscape和Microsoft两大公司的支持,分别在其浏览器中集成Java支持,这标志着Java在互联网和多媒体领域的广泛应用。...
6. **JMS (Java Message Service)**:JMS是一个API,用于在分布式环境中发送和接收消息。它可以实现异步通信,提高系统的可扩展性和可靠性。 7. **JTA (Java Transaction API)**:JTA提供了分布式事务处理的能力,...
《Mule in Action》这本书是关于Mule ESB(企业服务总线)的权威指南,由David Chappell和James Strachan等作者撰写。Mule ESB是一种开源的集成平台,它允许开发者轻松地连接各种系统、服务和应用程序,实现数据的...
Java的诞生得益于James Gosling及其团队的努力,最初作为Sun公司的产品,后来随着Oracle公司对Sun的收购,Java成为了Oracle的产品线。 Java有三个主要的版本体系: 1. **Java SE (Java Standard Edition)**,原...
- ActiveMQ:一个符合JMS 1.1标准的开源消息中间件,支持多种编程语言。 - Ant:Java编写的自动化构建工具,用于编译、测试和部署软件。 - Commons:一系列实用的Java类库,包括数据库连接池、文件上传、bean工具等...
在Java学习的旅程中,首先你需要了解的是Java的历史和发展背景,它由James Gosling于1995年在Sun Microsystems公司创建,如今已经成为全球最广泛使用的编程语言之一,尤其在企业级应用开发领域占据重要地位。...
Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个页面的情况下更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。最早由 Adaptive Path 的 Jesse James Garrett 提出。...
Java 技术自1991年由SUN Microsystems的James Gosling等人开发以来,经历了从默默无闻到广泛流行的转变。随着Internet的迅速崛起和WWW的广泛应用,Java逐渐成为网络编程的首选语言,获得了各大科技公司的青睐,如...
本书的作者团队包括 James McGovern、Rahim Adatia、Yakov Fain、Jason Gordon、Ethan Henry、Walter Hurst、Ashish Jain、Mark Little、Vaidyanathan Nagarajan、Harshad Oak 和 LeeAnne Phillips,这些作者都是在 ...
1. **Java消息服务**:这部分内容可能涉及Java消息服务(JMS),包括如何使用JMS进行消息传递,以及如何集成Apache ActiveMQ等消息中间件。 2. **Java事务**:事务管理是企业级应用的关键部分,这部分内容可能探讨...