坑爹的Hornetq与jboss4集成

Hornetq 与 JBoss4集成

    博客分类:
  • JBOSS
 
1、下载Hornetq,URL:http://www.jboss.org/hornetq/downloads这里使用2.2.5.Final
2、解压Hornetq
3、指定需要安装Hornetq的JBOSS4目录
修改hornetq-2.2.5.Final\config\jboss-as-4\build.xml手动设置JBOSS_HOME,把
Xml代码  
  1. <property environment="ENV"/>  
   <property environment="ENV"/>

改为:
Xml代码  
  1. <property environment="ENV1"/>  
  2. <property name="ENV.JBOSS_HOME" value="E:/Server/jboss-4.2.2.GA"/>  
   <property environment="ENV1"/>
   <property name="ENV.JBOSS_HOME" value="E:/Server/jboss-4.2.2.GA"/>

4、修正Hornetq的错误配置
修改
Java代码  
  1. hornetq-2.2.5.Final\config\jboss-as-4\clustered\jms-ds.xml  
hornetq-2.2.5.Final\config\jboss-as-4\clustered\jms-ds.xml

中的配置,删除</mbean>前的那个多余的</attribute>标签。
修改
Java代码  
  1. hornetq-2.2.5.Final\config\jboss-as-4\clustered\ra.xml   
  2. hornetq-2.2.5.Final\config\jboss-as-4\non-clustered\ra.xml  
hornetq-2.2.5.Final\config\jboss-as-4\clustered\ra.xml
hornetq-2.2.5.Final\config\jboss-as-4\non-clustered\ra.xml

中的配置,因为这个配置写错了,把
Xml代码  
  1. <config-property>  
  2.   <description>The class that will locate the transactionmanager</description>  
  3.   <config-property-name>TransactionManagerLocatorMethod</config-property-name>  
  4.   <config-property-type>java.lang.String</config-property-type>  
  5.   <config-property-value>org.hornetq.integration.jboss.tm.JBoss4TransactionManagerLocator</config-property-value>  
  6. </config-property>  
      <config-property>
        <description>The class that will locate the transactionmanager</description>
        <config-property-name>TransactionManagerLocatorMethod</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
        <config-property-value>org.hornetq.integration.jboss.tm.JBoss4TransactionManagerLocator</config-property-value>
      </config-property>

改为:
Xml代码  
  1. <config-property>  
  2.   <description>The class that will locate the transactionmanager</description>  
  3.   <config-property-name>TransactionManagerLocatorClass</config-property-name>  
  4.   <config-property-type>java.lang.String</config-property-type>  
  5.   <config-property-value>org.hornetq.integration.jboss.tm.JBoss4TransactionManagerLocator</config-property-value>  
  6. </config-property>  
      <config-property>
        <description>The class that will locate the transactionmanager</description>
        <config-property-name>TransactionManagerLocatorClass</config-property-name>
        <config-property-type>java.lang.String</config-property-type>
        <config-property-value>org.hornetq.integration.jboss.tm.JBoss4TransactionManagerLocator</config-property-value>
      </config-property>

5、运行安装
运行hornetq-2.2.5.Final\config\jboss-as-4\build.bat,前提是要安装JDK和ANT,安装成功后会默认安装两个JBoss实例all-with-hornetq和default-with-hornetq,这两实例是基于原来all和default实例配置,直接复制原来实例配置然后再修改的。
6、添加启动脚本
到jboss-4.2.2.GA\server目录下,添加一个批处理文件,文件名为JBOSS实例的名称,下面的脚本会自动运行与bat文件名称相同的JBoss实例,如:default-with-hornetq.bat
内容如下:
Java代码  
  1. %~dp0..\bin\run.bat -c %~n0 -b 0.0.0.0  
%~dp0..\bin\run.bat -c %~n0 -b 0.0.0.0

7、运行错误处理
如果运行过程中出现以下错误,那说明你在复制JBOSS的实例的时候把data目录的hornetq数据也复制了,解决办法是删除data下面的所有数据。
Java代码  
  1. WARN  [org.hornetq.core.cluster.impl.DiscoveryGroupImpl]  There are more than one servers on the network broadcasting the same  node id. You will see this message exactly once (per node) if a node is  restarted, in which case it can be safely ignored. But if it is logged  continuously it means you really do have more than one node on the same  network active concurrently with the same node id. This could occur if  you have a backup node active at the same time as its live node. 
  2.  
  3.  

此博客转载于http://iffiffj.iteye.com/blog/1535412

 

另外,如果在客户端调用队列的过程中,报一下错误时,是由于你客户端用的hornetq和服务端的版本号不一致,这太坑爹了。

javax.jms.JMSException: Failed to create session factory
 at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:605)
 at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:119)
 at org.hornetq.jms.client.HornetQConnectionFactory.createConnection(HornetQConnectionFactory.java:114)
 at org.hornetq.jms.example.TestMain.testq(TestMain.java:53)
 at org.hornetq.jms.example.TestMain.main(TestMain.java:34)
Caused by: java.lang.NullPointerException
 at org.hornetq.core.client.impl.ServerLocatorImpl.removeFromConnecting(ServerLocatorImpl.java:687)
 at org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:756)
 at org.hornetq.jms.client.HornetQConnectionFactory.createConnectionInternal(HornetQConnectionFactory.java:601)
 ... 4 more

 

配置上的一个小注意事项

 如果机器本身有多个网卡,则一定要在发现组和广播组中指定使用的是那个网卡,否则hornetq集群不会生效,具体配置如下:

   <broadcast-groups>
      <broadcast-group name="bg-group1">
      <local-bind-address>192.168.1.106</local-bind-address>    //指定使用的网卡ip地址
         <group-address>231.7.7.7</group-address>
         <group-port>9876</group-port>
         <broadcast-period>5000</broadcast-period>
         <connector-ref>netty</connector-ref>
      </broadcast-group>
   </broadcast-groups>

   <discovery-groups>
      <discovery-group name="dg-group1">
      <local-bind-address>192.168.1.106</local-bind-address>  //指定使用的网卡ip地址
         <group-address>231.7.7.7</group-address>
         <group-port>9876</group-port>
         <refresh-timeout>10000</refresh-timeout>
      </discovery-group>
   </discovery-groups>

你可能感兴趣的:(session,jboss,factory,HornetQ)