[jboss-user] [JBoss Messaging] - Problem publishing message from one Jboss server to another

jhd do-not-reply at jboss.com
Tue Jul 8 11:47:17 EDT 2008


Environment:

Jboss 4.2.2
Jboss Messaging 1.4.0 SP3
Jdk 1.5.0_06
Windows XP

Two Jboss servers running on different hosts.  No clustering is used for Jboss or Jboss Messaging.  Server1 has a topic deployed, topic\securityReload.  Server two does not.

Use case:

A message may be published from either Server1 or Server2 to topic\securityReload.  If the message originates from Server1 message gets consumed successfully.  If the message originates from Server2 no exceptions are observed on either server but message never gets through.

I have a stand-alone Java client that is able to send/receive messages successfully to two different queues deployed on Server1.

Why would a JMS client running in another instance of Jboss AS have trouble publishing to a topic on a remote Jboss AS?

Configuration files follow:

twia-destinations-service.xml:

  | <server>
  |   <!-- Destination without a configured SecurityManager or without a 
  |        a SecurityConf will default to role guest with read=true, write=true,
  |        create=false.
  |   -->
  |   
  |    <mbean code="org.jboss.jms.server.destination.QueueService"
  |       name="jboss.messaging.destination:service=Queue,name=testQueue"
  |       xmbean-dd="xmdesc/Queue-xmbean.xml">
  |       <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
  |       <depends>jboss.messaging:service=PostOffice</depends>
  |       <attribute name="SecurityConfig">
  |          <security>
  |             <role name="guest" read="true" write="true"/>
  |             <role name="publisher" read="true" write="true" create="false"/>
  |             <role name="noacc" read="false" write="false" create="false"/>
  |          </security>
  |       </attribute>
  |    </mbean>
  | 
  |   <!-- reload destination is hosted on this server so this section is needed -->
  |    <mbean code="org.jboss.jms.server.destination.TopicService"
  |       name="jboss.messaging.destination:service=Topic,name=securityReload"
  |       xmbean-dd="xmdesc/Topic-xmbean.xml">
  |       <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
  |       <depends>jboss.messaging:service=PostOffice</depends>
  |    </mbean>
  |   
  |   
  |    <mbean code="org.jboss.jms.server.destination.QueueService"
  |       name="jboss.messaging.destination:service=Queue,name=claimBatch"
  |       xmbean-dd="xmdesc/Queue-xmbean.xml">
  |       <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
  |       <depends>jboss.messaging:service=PostOffice</depends>
  |    </mbean>
  | 
  |    <mbean code="org.jboss.jms.server.destination.QueueService"
  |       name="jboss.messaging.destination:service=Queue,name=taskActionExecute"
  |       xmbean-dd="xmdesc/Queue-xmbean.xml">
  |       <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
  |       <depends>jboss.messaging:service=PostOffice</depends>
  |    </mbean>
  | 
  |    <mbean code="org.jboss.jms.server.destination.QueueService"
  |       name="jboss.messaging.destination:service=Queue,name=requestReply"
  |       xmbean-dd="xmdesc/Queue-xmbean.xml">
  |       <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
  |       <depends>jboss.messaging:service=PostOffice</depends>
  |    </mbean>
  | 
  | </server>
  | 

jms-ds.xml:

  | <connection-factories>
  |  
  |   <!-- ==================================================================== -->
  |   <!-- JMS Stuff                                                            -->
  |   <!-- ==================================================================== -->
  | 
  |   <!-- The JMS provider loader -->
  |   <mbean code="org.jboss.jms.jndi.JMSProviderLoader"
  | 	 name="jboss.messaging:service=JMSProviderLoader,name=JMSProvider">
  |     <attribute name="ProviderName">DefaultJMSProvider</attribute>
  |     <attribute name="ProviderAdapterClass">
  |       org.jboss.jms.jndi.JNDIProviderAdapter
  |     </attribute>
  |     <!-- The combined connection factory -->
  |     <attribute name="FactoryRef">java:/XAConnectionFactory</attribute>
  |     <!-- The queue connection factory -->
  |     <attribute name="QueueFactoryRef">java:/XAConnectionFactory</attribute>
  |     <!-- The topic factory -->
  |     <attribute name="TopicFactoryRef">java:/XAConnectionFactory</attribute>
  |     <!-- Uncomment to use HAJNDI to access JMS
  |     <attribute name="Properties">
  |        java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
  |        java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
  |        java.naming.provider.url=localhost:1100
  |     </attribute>
  |     -->
  |   </mbean>
  | 
  |   <!-- The server session pool for Message Driven Beans -->
  |   <mbean code="org.jboss.jms.asf.ServerSessionPoolLoader"
  | 	 name="jboss.messaging:service=ServerSessionPoolMBean,name=StdJMSPool">
  |     <depends optional-attribute-name="XidFactory">jboss:service=XidFactory</depends>
  |     <attribute name="PoolName">StdJMSPool</attribute>
  |     <attribute name="PoolFactoryClass">
  |       org.jboss.jms.asf.StdServerSessionPoolFactory
  |     </attribute>
  |   </mbean>
  | 
  |   <!-- bug 2370 -->  
  |   <mbean code="org.jboss.jms.jndi.JMSProviderLoader" 
  |            name="jboss.messaging:service=JMSProviderLoader,name=RemoteMQProvider,server=localhost">
  |       <attribute name="ProviderName">QueuehostJMSProvider</attribute>
  |       <attribute name="ProviderAdapterClass">
  |       	org.jboss.jms.jndi.JNDIProviderAdapter
  |     	</attribute>
  |       <attribute name="QueueFactoryRef">ConnectionFactory</attribute>
  |       <attribute name="TopicFactoryRef">ConnectionFactory</attribute>
  |     	<attribute name="Properties">
  |       	java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
  |        	java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
  |        	java.naming.provider.url=jnp://remotehostname:1099
  |     </attribute>
  |   </mbean>
  |   
  |   <tx-connection-factory>
  |      <jndi-name>JmsXARemote</jndi-name>
  |      <xa-transaction/>
  |      <rar-name>jms-ra.rar</rar-name>
  |      <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
  |      <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>
  |      <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/QueuehostJMSProvider</config-property>
  |      <max-pool-size>20</max-pool-size>
  |      <security-domain-and-application />
  |   </tx-connection-factory>
  |   <!-- bug 2370 -->  
  |   
  |   
  |   <!-- JMS XA Resource adapter, use this to get transacted JMS in beans -->
  |   <tx-connection-factory>
  |     <jndi-name>JmsXA</jndi-name>
  |     <xa-transaction/>
  |     <rar-name>jms-ra.rar</rar-name>
  |     <connection-definition>org.jboss.resource.adapter.jms.JmsConnectionFactory</connection-definition>
  |     <config-property name="SessionDefaultType" type="java.lang.String">javax.jms.Topic</config-property>
  |     <config-property name="JmsProviderAdapterJNDI" type="java.lang.String">java:/DefaultJMSProvider</config-property>
  |     <max-pool-size>20</max-pool-size>
  |     <security-domain-and-application>JmsXARealm</security-domain-and-application>
  |   </tx-connection-factory>
  | 
  | </connection-factories>
  | 

remoting-bisocket-service.xml:

  | <server>
  | 
  |    <!-- Standard bisocket connector - the bisocket transport only opens connection from client->server
  |         so can be used with firewalls where only outgoing connections are allowed.
  |         For examples of HTTP and SSL transports see docs/examples -->
  |    <mbean code="org.jboss.remoting.transport.Connector"
  |           name="jboss.messaging:service=Connector,transport=bisocket"
  |           display-name="Bisocket Transport Connector">
  |       <attribute name="Configuration">
  |          <config>
  |             <invoker transport="bisocket">
  |             
  |                <!-- There should be no reason to change these parameters - warning!
  |                     Changing them may stop JBoss Messaging working correctly -->            
  |                <attribute name="marshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
  |                <attribute name="unmarshaller" isParam="true">org.jboss.jms.wireformat.JMSWireFormat</attribute>
  |                <attribute name="dataType" isParam="true">jms</attribute>
  |                <attribute name="socket.check_connection" isParam="true">false</attribute>
  |                <attribute name="timeout" isParam="true">0</attribute>
  |                <attribute name="serverBindAddress">${jboss.bind.address}</attribute>
  |                <attribute name="serverBindPort">4457</attribute>
  |                <attribute name="clientSocketClass" isParam="true">org.jboss.jms.client.remoting.ClientSocketWrapper</attribute>
  |                <attribute name="serverSocketClass">org.jboss.jms.server.remoting.ServerSocketWrapper</attribute>
  |                <attribute name="numberOfCallRetries" isParam="true">1</attribute>
  |                <attribute name="pingFrequency" isParam="true">214748364</attribute>
  |                <attribute name="pingWindowFactor" isParam="true">10</attribute>
  |                <attribute name="onewayThreadPool">org.jboss.jms.server.remoting.DirectThreadPool</attribute>
  |                <!-- End immutable parameters -->
  |                
  |                <!-- Periodicity of client pings. Server window by default is twice this figure -->                               
  |                <attribute name="clientLeasePeriod" isParam="true">10000</attribute>
  | 
  |                <!-- Number of seconds to wait for a connection in the client pool to become free -->
  |                <attribute name="numberOfRetries" isParam="true">10</attribute>
  | 
  |                <!-- Max Number of connections in client pool. This should be significantly higher than
  |                     the max number of sessions/consumers you expect -->
  |                <attribute name="JBM_clientMaxPoolSize" isParam="true">200</attribute>
  |                
  |                <!-- Use these parameters to specify values for binding and connecting control connections to 
  |                     work with your firewall/NAT configuration
  |                <attribute name="secondaryBindPort">xyz</attribute>                           
  |                <attribute name="secondaryConnectPort">abc</attribute>               
  |                -->
  |                           
  |             </invoker>
  |             <handlers>
  |                <handler subsystem="JMS">org.jboss.jms.server.remoting.JMSServerInvocationHandler</handler>
  |             </handlers>
  |          </config>
  |       </attribute>
  |    </mbean>
  | 
  | </server>
  | 

from standardjboss.xml:

  |   <invoker-proxy-bindings>
  | 
  |    <!-- bug 2370 -->  
  |     <invoker-proxy-binding>
  |       <name>RemoteSecurityReloadInvoker</name>
  |       <invoker-mbean>default</invoker-mbean>
  |       <proxy-factory>org.jboss.ejb.plugins.jms.JMSContainerInvoker</proxy-factory>
  |       <proxy-factory-config>
  |         <JMSProviderAdapterJNDI>QueuehostJMSProvider</JMSProviderAdapterJNDI>
  |         <ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI>
  |         <CreateJBossMQDestination>false</CreateJBossMQDestination>
  |         <!-- WARN: Don't set this to zero until a bug in the pooled executor is fixed -->
  |         <MinimumSize>1</MinimumSize>
  |         <MaximumSize>3</MaximumSize>
  |         <KeepAliveMillis>30000</KeepAliveMillis>
  |         <MaxMessages>1</MaxMessages>
  |         <MDBConfig>
  |           <ReconnectIntervalSec>10</ReconnectIntervalSec>
  |           <DLQConfig>
  |             <DestinationQueue>queue/DLQ</DestinationQueue>
  |             <MaxTimesRedelivered>1</MaxTimesRedelivered>
  |             <TimeToLive>0</TimeToLive>
  |           </DLQConfig>
  |         </MDBConfig>
  |       </proxy-factory-config>
  |     </invoker-proxy-binding>
  |    <!-- bug 2370 -->  
  | 	
  | ...
  | 

from MDB deployment - jboss.xml:

  | 		<!-- bug 2370 -->  	
  | 		<message-driven>
  | 			<ejb-name>SecurityReloadMDB</ejb-name>
  | 			<destination-jndi-name>topic/securityReload</destination-jndi-name>
  | 			<configuration-name>Standard Message Driven Bean</configuration-name>
  | 			<invoker-bindings>		
  | 				<invoker>      
  | 			   	<invoker-proxy-binding-name>RemoteSecurityReloadInvoker</invoker-proxy-binding-name>
  | 				</invoker>		
  | 			</invoker-bindings>	         
  | 		</message-driven>
  | 		<!-- bug 2370 -->  
  | 

This seems like it should be a simple configuration problem but I haven't been able to track it down.


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4163091#4163091

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4163091



More information about the jboss-user mailing list