- 浏览: 1589783 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (289)
- java 语法基础 (51)
- spring (8)
- mvc struct /Ant --build.xml (8)
- SOA (0)
- oracle 9i/10g (23)
- sql server 2000-2005 (3)
- 数据库基础知识 (6)
- 设计模式与软件架构 (10)
- Hibernate 持久化 (9)
- J2SE/J2EE/J2ME/AJAX 技术 (8)
- JSF 技术 (3)
- JAVA 图形化 (0)
- JMS (40)
- Eclipse 3.2 IDE 开发技巧 (13)
- 项目处理方法集合 (2)
- html/jsp/javascript (2)
- Unix/Linux (9)
- j2me/ARM/windriver/嵌入式 (4)
- 电信科学 (8)
- jsp (1)
- c/c++ (1)
- LZW压缩算法(java) (2)
- Android (77)
- 版本管理git/svn (2)
最新评论
-
huihai:
有demo吗?
NamingStrategy实现动态表名映射 -
cangbaotu:
推荐给大家一些有用的爬虫源码:https://github.c ...
网络爬虫(源代码参考) -
tuspark:
除了.classpath文件以外,.project文件也应该了 ...
Eclipse .classpath文件浅谈 -
tuspark:
造成eclipse自动关闭的原因有很多,这里有很多介绍:ecl ...
eclipse 自动关闭 解决方案 -
DEMONU:
网上都是这些,这种文章。。。
ActiveMQ中的消息持久性
为ActiveMQ服务器添加简单验证机制
关键字: Java, JMS
ActiveMQ现在无疑成为JMS领域开源产品的龙头,基于开源框架的J2EE开发者大多用它来进行异步数据的传递工作。
比较搞的是截至ActiveMQ4.1.1版本的缺省配置仍然没有做任何的安全性配置,也就是说如果没有在软硬件防火墙层面上做限制的话,任何客户端都可以连接上JMS提供者发送和接收消息!估计大部分开发者用的都是缺省设置吧,呵呵。
当然,ActiveMQ的开发者还不至于弱智到这种程度,连最起码的权限验证都不支持。在org.apache.activemq.security包下面是提供了两种可选验证机制的:用户名/密码Map和JAAS。
无疑,基于JAAS的验证是J2EE规范之一,能实现最大的灵活性配置,不过一般情况下异步发个邮件什么的应用没有必要搞这么复杂。这里关注的是最简单的用户名/密码验证方法,就像JDBC数据源一样。
ActiveMQ服务broker是在activemq.xml中配置的,其本质上也是一个spring bean配置文件。4.0版本以后支持xbean配置方式,典型的配置文件如下:
- <broker brokerName="localhost" useJmx="true">
- <persistenceAdapter>
- <journaledJDBC journalLogFiles="5" dataDirectory="${webapp.root.cn.com.reachway}/WEB-INF/activemq-data"
- dataSource="#derby-ds" />
- </persistenceAdapter>
- <transportConnectors>
- <transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default" />
- </transportConnectors>
- <networkConnectors>
- <networkConnector name="default-nc" uri="multicast://default" />
- </networkConnectors>
- </broker>
broker实质上就是一个org.apache.activemq.broker.BrokerService实例,可以扩展之以提供简单验证,如下:
- public class ConfigurableAuthenticationBroker extends XBeanBrokerService {
- private String userName = "jms";
- private String password = "password";
- public String getUserName() {
- return userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- protected Broker addInterceptors(Broker broker) throws Exception {
- broker = super.addInterceptors(broker);
- Map userPasswordMap = new HashMap();
- userPasswordMap.put(userName, password);
- broker = new SimpleAuthenticationBroker(broker, userPasswordMap, new HashMap());
- return broker;
- }
- }
由于这里采用xbean方式配置,所以扩展的是XBeanBrokerService类。
相应的activemq.xml中的broker配置改为:
- <c:ConfigurableAuthenticationBroker brokerName="localhost" useJmx="true" userName="jms" password="password"
- xmlns:c="java://cn.com.xxx.framework.common.jms">
- <persistenceAdapter>
- <journaledJDBC journalLogFiles="5" dataDirectory="${webapp.root.cn.com.xxx}/WEB-INF/activemq-data"
- dataSource="#derby-ds" />
- </persistenceAdapter>
- <transportConnectors>
- <transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default" />
- </transportConnectors>
- <networkConnectors>
- <networkConnector name="default-nc" uri="multicast://default" />
- </networkConnectors>
- </c:ConfigurableAuthenticationBroker>
可以看到在bean c:ConfigurableAuthenticationBroker的属性中多了userName和password,于是可配置性便有了。如果想要配置更多的用户可以改成map型了,道理都是一样的。
相应的,JMS客户端在连接时就需要加上用户名和密码属性了,否则就会返回错误:
- javax.jms.JMSException: User name or password is invalid.
- at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:46)
- at org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1181)
- at org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1263)
若是采用的spring管理的JMS资源适配器方式,给适配器bean加上用户名、密码属性即可:
- <!---->
- <bean id="jmsResourceAdapter" class="org.apache.activemq.ra.ActiveMQResourceAdapter">
- <property name="serverUrl" value="tcp://localhost:61616" />
- <property name="userName" value="jms" />
- <property name="password" value="password" />
- </bean>
其实很简单,但也够用了。回头有空再研究下JAAS方式吧:)
发表评论
-
基于jms使用ActiveMQ实现异步日志功能.消息持久到oracle 10g 数据库
2008-09-18 15:05 9935package askyaya.entity;import j ... -
activemq 重新连接的机制
2008-09-18 14:39 23221最近一个项目要用到ActiveMq,并且需要最大程度的保证消息 ... -
ActiveMQ stop inactivity read check
2008-09-17 16:01 10658You can do the following to fix ... -
WSAD环境下JMS异步通信全攻略 (3)
2008-09-11 14:18 32263.5 消息驱动的Bean 在前文讨论JMS消息接收处理逻 ... -
WSAD环境下JMS异步通信全攻略 (2)
2008-09-11 13:58 3774三、JMS P2P编程 在JMS P2P通信方式中,发送程 ... -
WSAD环境下JMS异步通信全攻略 (1)
2008-09-11 13:57 4714一、JMS基本概念 1.1 P2P通信 1.2 Pub ... -
topicpublisher (jms)
2008-09-10 18:55 2921目的地类型JNDI名字连接工厂类型Topic/Queuejav ... -
ProducerTool /MessageBroker /getConnectionFactoryF
2008-09-10 18:12 2477lib: jms1.1.jar activemq-all-5. ... -
activemq例子代码 发送BytesMessage消息
2008-09-10 13:55 18382import javax.jms.Connection; im ... -
ActiveMQ in Action(7)
2008-09-10 13:44 3949ActiveMQ in Action(7) 关键字 ... -
ActiveMQ in Action(6)
2008-09-10 13:43 3733ActiveMQ in Action(6) 关键字: acti ... -
ActiveMQ in Action(5)
2008-09-10 13:42 3926ActiveMQ in Action(5) 关键字: acti ... -
ActiveMQ in Action(4)
2008-09-10 13:40 3476ActiveMQ in Action(4) 关键字: acti ... -
ActiveMQ in Action(3)
2008-09-10 13:39 3676ActiveMQ in Action(3) 关键字: acti ... -
ActiveMQ in Action(2)
2008-09-10 13:38 4208ActiveMQ in Action(2) 关键字: acti ... -
ActiveMQ in Action(1)
2008-09-10 13:37 5830ActiveMQ in Action(1) 关键字: acti ... -
Sender/receiver 消息
2008-09-09 20:28 2124Sender:import java.io.BufferedR ... -
activema.xml 配置
2008-09-09 17:44 3815/***作者:andyao,email:andyaoy@gma ... -
JMX 与系统管理
2008-09-08 10:52 1862Java SE 6 新特性: JMX 与系统管理 ... -
ActiveMQ中的消息持久性
2008-09-05 12:24 3391ActiveMQ中的消息持久性 ActiveMQ很 ...
相关推荐
总的来说,为ActiveMQ添加验证机制是保障系统安全的重要步骤。无论是通过修改配置文件还是自定义Java类,都能有效地控制对消息队列的访问,防止未经授权的访问和数据泄露。在实际生产环境中,确保ActiveMQ的安全配置...
6. **安全性和认证**:如果ActiveMQ服务器配置了SSL/TLS加密或需要用户名/密码认证,客户端也需要相应地设置安全连接和身份验证。 7. **调试和测试**:在实际部署前,要进行充分的单元测试和集成测试,确保MQTT...
同时,配置文件还定义了用户名bpf.mq.userName和密码bpf.mq.password,这些参数用于客户端连接到ActiveMQ服务器。 在实际应用中,ActiveMQ的配置可能需要根据具体的业务需求进行调整,例如设置消息持久化、网络连接...
7. **安全考虑**:为了保护数据安全,可以配置ActiveMQ服务器使用SSL/TLS加密连接,并对客户端进行身份验证。 通过以上步骤,安卓应用就可以利用ActiveMQ实现实时消息推送,比如实时聊天、通知推送等功能。在实际...
2. **添加依赖**:在 Spring 应用的 Maven 或 Gradle 配置中,添加 ActiveMQ 和 Spring JMS 相关的依赖。例如,在 Maven 的 `pom.xml` 文件中: ```xml <groupId>org.apache.activemq <artifactId>activemq-...
6. **安全性**:确保ActiveMQ服务器和jfianl之间的通信是安全的,可能需要配置SSL/TLS加密,以及对访问ActiveMQ的用户进行身份验证和授权。 7. **测试和监控**:整合完成后,需要进行详尽的测试,确保消息的正确...
5. **测试通信**: 编写简单的发送和接收消息的测试用例,确保消息能够正确地在ActiveMQ服务器和你的应用程序之间传递。 在2018年12月30日的测试中,我们验证了以下关键功能: 1. **连接稳定性**: 持续不断地发送和...
5. 启动ActiveMQ服务器,测试消息的发送和接收,验证持久化是否正常工作。 总之,理解并正确配置ActiveMQ的消息持久化所需Jar包,是确保系统稳定性和数据安全的关键。通过以上讲解,你应该能够更好地掌握如何在项目...
5. **持久化机制**:ActiveMQ提供了强大的消息持久化功能,即使在服务器故障后也能恢复未处理的消息。 6. **管理工具**:ActiveMQ提供了一个基于Web的管理控制台,可以方便地监控和管理消息代理。 7. **性能优化**...
- 将解压后的目录路径添加到系统的PATH环境变量中,这样可以全局访问ActiveMQ的可执行文件。这通常在`~/.bashrc`或`~/.bash_profile`文件中完成。 4. **启动ActiveMQ**: - 进入解压后的目录,如`cd activemq-...
在安全性方面,ActiveMQ 5.14.5加强了身份验证和授权功能,支持标准的JAAS(Java Authentication and Authorization Service)框架,可以配置多种身份验证机制,如简单的用户名/密码、Kerberos或LDAP。权限管理允许...
本主题主要探讨如何将ActiveMQ配置为使用MySQL 8作为其持久化存储方式,以及在这个过程中所需的Jar包。 1. **ActiveMQ与持久化**: - ActiveMQ允许用户选择不同的持久化机制,包括文件系统(KahaDB)和关系数据库...
9. **安全性**:设置用户权限、SSL/TLS加密以及身份验证机制,保护消息传输的安全。 10. **监控和日志**:理解和利用ActiveMQ的监控工具和日志记录,以便于排查问题和优化系统性能。 在实际应用中,你需要将这些...
Apache ActiveMQ是世界上最流行的开源消息代理和集成模式服务器,它基于Java Message Service (JMS) 规范。这个“apache-activemq-5.15.15二进制包,安装包”包含了运行和配置ActiveMQ所需的所有组件,方便用户在...
6. **安全性**:ActiveMQ 提供了用户认证和授权机制,可以通过简单的配置实现基于角色的访问控制。 7. **管理工具**:ActiveMQ 提供了一个Web管理控制台,方便管理员监控和管理消息代理的状态,以及进行配置更改。 ...
通过IP地址授权,我们可以限制只有特定网络地址的客户端才能连接到ActiveMQ服务器,从而保护系统免受未经授权的访问。而特征码授权则可以基于预定义的代码或密钥来验证用户身份,增加了另一层安全防护。 ActiveMQ的...
10. **可扩展性**:通过插件机制,可以轻松地扩展其功能,例如添加新的协议或消息格式支持。 在解压“apache-activemq-5.6.0-bin.tar.gz”后,你会得到一个名为“apache-activemq-5.6.0”的目录,其中包含以下关键...
7. **安全性**:在整合过程中,需要考虑数据的安全性,包括对消息的加密传输、权限控制以及防止恶意文件上传的验证机制。ActiveMQ提供了SSL/TLS支持,可以保护消息在传输过程中的安全。 通过上述步骤,我们可以构建...
1. **配置ActiveMQ**:首先,我们需要在项目中引入ActiveMQ的依赖,并配置ActiveMQ服务器。这通常包括设置服务器端口、数据存储路径以及是否启用持久化等选项。 2. **配置Spring**:Spring的XML配置文件中,我们...
要使用这个压缩包,用户首先需要解压,然后根据配置文件(如conf/activemq.xml)进行必要的定制,最后启动ActiveMQ服务器。如果需要,可以通过修改配置文件实现集群部署、添加安全策略、调整性能参数等高级设置。 ...