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#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...