-
1. Re: JMSRouter Topic bug
tcunning Nov 14, 2011 12:58 PM (in response to jcadam14)Jason,
That looks like https://issues.jboss.org/browse/JBESB-3288
It looks like 4.8 is the minimal release with this fix, but in this sort of situation you're really better off if you go and back test the old releases to make sure they do what you want. You could start at 4.8 and then go to 4.9 or 4.10 if you have issues.
-
2. Re: JMSRouter Topic bug
jcadam14 Nov 14, 2011 1:06 PM (in response to tcunning)Yup that's the bug tracker post I found earlier. Thanks for the info! Hopefully I can get them to agree on 4.8 in a reasonable amount of time.
Thanks for the response!
Jason
-
3. Re: JMSRouter Topic bug
jcadam14 Dec 7, 2011 12:27 PM (in response to tcunning)So I got my hands on 4.9, but I'm still seeing the following exception on startup of the ESB:
Caused by: java.lang.ClassCastException: org.hornetq.jms.client.HornetQTopic cannot be cast to javax.jms.Queue
at org.jboss.soa.esb.actions.routing.JMSRouter.createQueueSetup(JMSRouter.java:490)Here is my jboss-esb.xml definition:
<?xml version = "1.0" encoding = "UTF-8"?>
<jbossesb
xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd"
parameterReloadSecs="5"><providers>
<jms-provider name="Provider1" connection-factory="ConnectionFactory"
jndi-URL="jnp://machineXXX:1099" jndi-context-factory="org.jnp.interfaces.NamingContextFactory"><jms-bus busid="dasValidationIn">
<jms-message-filter dest-type="TOPIC"
dest-name="/topic/samm.schedule.response" />
</jms-bus>
</jms-provider>
<jms-provider name="Provider2" connection-factory="ConnectionFactory"
jndi-URL="jnp://machineXXX:1099" jndi-context-factory="org.jnp.interfaces.NamingContextFactory"><jms-bus busid="mmValidationIn">
<jms-message-filter dest-type="TOPIC"
dest-name="/topic/ValidateSchedule" />
</jms-bus>
<jms-bus busid="mmScheduleIn">
<jms-message-filter dest-type="TOPIC"
dest-name="/topic/ScheduleDistribution" />
</jms-bus>
</jms-provider>
<!-- Internal JMS Topics -->
<jms-provider name="InVmJBossMQ" connection-factory="ConnectionFactory">
<jms-bus busid="nativeValidationIn">
<jms-message-filter dest-type="TOPIC"
dest-name="/topic/nativeValidationIn" />
</jms-bus>
<jms-bus busid="nativeValidationRouterIn">
<jms-message-filter dest-type="TOPIC"
dest-name="/topic/nativeValidationRouterIn" />
</jms-bus>
<jms-bus busid="nativeScheduleIn">
<jms-message-filter dest-type="TOPIC"
dest-name="/topic/nativeScheduleIn" />
</jms-bus>
<jms-bus busid="internalScheduleIn">
<jms-message-filter dest-type="TOPIC"
dest-name="/topic/internalScheduleIn" />
</jms-bus>
<jms-bus busid="dasValidationOut">
<jms-message-filter dest-type="TOPIC"
dest-name="/topic/dasValidationOut" />
</jms-bus>
<jms-bus busid="dasScheduleOut">
<jms-message-filter dest-type="TOPIC"
dest-name="/topic/dasSceduleOut" />
</jms-bus>
</jms-provider>
</providers><!--
Router services defined. These check the type of schedule being
received, using XPath, to determine where the schedule should go.
There is one router service defined for validation the schedule, and a
separate one for publishing good schedules.
--><services>
<!-- Routes a test schedule to the correct subsystem for validation -->
<service category="ValidationRouter" name="ScheduleValidationRouter"
description="Content Based Schedule Validation Router">
<listeners>
<jms-listener name="NativeRouterListener" busidref="nativeValidationRouterIn" />
</listeners>
<actions mep="OneWay">
<action name="ContentBasedRouter" class="org.jboss.soa.esb.actions.ContentBasedRouter">
<property name="cbrAlias" value="XPath" />
<property name="destinations">
<route-to service-category="DASValidation" service-name="DASValidationService"
expression="/schedule[@type='DAS']" />
</property>
</action></actions>
</service>
<service category="InternalValidation" name="InternalScheduleValidator"
description="Internal Schedule Validation Service">
<listeners>
<jms-listener name="JMS-Gateway" busidref="mmValidationIn"
is-gateway="true" />
<jms-listener name="NativeListener" busidref="nativeValidationIn" />
</listeners>
<actions mep="OneWay">
<action name="InternalValidator" class="com.rsc.esb.actions.ValidatorAction"
process="validateSchedule" />
<action name="routeAction" class="org.jboss.soa.esb.actions.StaticRouter">
<property name="destinations">
<route-to service-category="InternalValidationResponse"
service-name="InternalValidationResponseService" />
</property>
</action>
</actions>
</service>
<!-- Routes good schedules to the appropriate subsystem. -->
<service category="ScheduleRouter" name="ScheduleRouter"
description="Content Based Schedule Router">
<listeners>
<jms-listener name="NativeScheduleListener" busidref="nativeScheduleIn" />
</listeners>
<actions mep="OneWay">
<action name="ContentBasedRouter" class="org.jboss.soa.esb.actions.ContentBasedRouter">
<property name="cbrAlias" value="XPath" />
<property name="destinations">
<route-to service-category="DASSchedules" service-name="DASScheduleService"
expression="/schedule[@type='DAS']" />
</property>
</action>
</actions>
</service>
<!-- Listens for MM schedules to "distribute". This will just write the schedule
to a file.
-->
<service category="InternalDistribution" name="InternalScheduleDistribution"
description="Internal Schedule Distribution Service">
<listeners>
<jms-listener name="JMS-Gateway" busidref="mmScheduleIn"
is-gateway="true" />
<jms-listener name="InternalScheduleListener" busidref="internalScheduleIn" />
</listeners>
<actions mep="OneWay">
<action name="writeMessage" class="com.rsc.esb.actions.WriterAction"
process="writeMessage">
<property name="folder" value="distribution" />
</action>
</actions>
</service>
<service category="DASValidation" name="DASValidationService"
description="DAS Validation Router">
<listeners>
<jms-listener name="DASValidationRouterListener"
busidref="dasValidationOut" />
</listeners>
<actions mep="OneWay">
<action name="writeMessage" class="com.rsc.esb.actions.WriterAction"
process="writeMessage">
<property name="folder" value="validation" />
</action>
<action name="routeToCLG" class="org.jboss.soa.esb.actions.routing.JMSRouter">
<property name="jndi-context-factory" value="org.jnp.interfaces.NamingContextFactory" />
<property name="jndi-URL" value="jnp://machineXXX:1099" />
<property name="jndi-pkg-prefix" value="org.jboss.naming:org.jnp.interfaces" />
<property name="connection-factory" value="ConnectionFactory" />
<property name="jndiName" value="/topic/samm.schedule.validation" />
<property name="unwrap" value="true" />
<property name="security-principal" value="guest" />
<property name="security-credential" value="guest" />
</action>
</actions>
</service><!--
Service for receiving validation response from the validator test tool
to be sent back to MM
-->
<service category="InternalValidationResponse" name="InternalValidationResponseService"
description="Responses from Internal Validation Services">
<listeners>
<jms-listener name="InternalListener" busidref="internalScheduleIn" />
</listeners>
<actions mep="OneWay">
<action name="writeMessage" class="com.rsc.esb.actions.WriterAction"
process="writeMessage">
<property name="folder" value="validation" />
</action>
<action name="routeToMM" class="org.jboss.soa.esb.actions.routing.JMSRouter">
<property name="jndi-context-factory" value="org.jnp.interfaces.NamingContextFactory" />
<property name="jndi-URL" value="jnp://machineXXX:1099" />
<property name="jndi-pkg-prefix" value="org.jboss.naming:org.jnp.interfaces" />
<property name="connection-factory" value="ConnectionFactory" />
<property name="jndiName" value="/topic/ValidateSchedule" />
<property name="unwrap" value="true" />
<property name="security-principal" value="guest" />
<property name="security-credential" value="guest" />
</action>
</actions>
</service>
<!-- Receives validation response messages from subsystems and writes the response
to a file.
-->
<service category="ValidationResponse" name="ValidationResponseService"
description="Responses from Validation Services">
<listeners>
<jms-listener name="JMS-Gateway" busidref="dasValidationIn"
is-gateway="true" />
<jms-listener name="NativeListener" busidref="nativeScheduleIn" />
</listeners>
<actions mep="OneWay">
<action name="writeMessage" class="com.rsc.esb.actions.WriterAction"
process="writeMessage">
<property name="folder" value="validation" />
</action>
</actions>
</service>
<service category="DASSchedule" name="DASScheduleService"
description="DAS Schedule Router">
<listeners>
<jms-listener name="DASScheduleRouterListener"
busidref="dasScheduleOut" />
</listeners>
<actions mep="OneWay">
<action name="writeMessage" class="com.rsc.esb.actions.WriterAction"
process="writeMessage">
<property name="folder" value="distribution" />
</action>
<action name="routeToCLG" class="org.jboss.soa.esb.actions.routing.JMSRouter">
<property name="jndi-context-factory" value="org.jnp.interfaces.NamingContextFactory" />
<property name="jndi-URL" value="jnp://machineXXX:1099" />
<property name="jndi-pkg-prefix" value="org.jboss.naming:org.jnp.interfaces" />
<property name="connection-factory" value="ConnectionFactory" />
<property name="jndiName" value="/topic/samm.schedule.distribution" />
<property name="unwrap" value="true" />
<property name="security-principal" value="guest" />
<property name="security-credential" value="guest" />
</action>
</actions>
</service>
</services>
</jbossesb>I've removed a few pieces that weren't applicable or company private, but you get the idea. If I change any of the remote host topics to queues, the server boots fine. So it looks like despite using version 4.9, it's still trying to cast things to Queues.
This is installed a fresh version of the ESB, so I wouldn't think there's any jar collision or anything like that. It just seems to act like the previous version, as if nothing was fixed.
Is there another package I need to download that maybe we missed? We just grabbed what was defined as the latest 4.9.
Thanks for any help you can provide.
Jason
-
4. Re: JMSRouter Topic bug
tcunning Dec 7, 2011 12:59 PM (in response to jcadam14)Can you double check your installation and make sure everything is fresh and that your deployment.properties is pointing where you think it should be pointing? Are you using an old app server that maybe has 4.8 bits on it?
Here's what I'm seeing as line 489 in JMSRouter.java :
jmsDestination = (Destination) oCtx.lookup(destinationName);