Thursday, December 2, 2010

SAXParseException JMSQueue

If your queue is set up to receive JMSMessage type as ByteMessage and you are sending TextMessage, you may receive SAXParseException message. See the screenshot below.



I have been using HermesJMS application to view Tibco JMS queues during SOAP over JMS scripting. It allowed me to fix issues that I encountered during scripting.

You can download HermesJMS application and follow TibcoJMS blog by Serge on how to connect HermesJMS to TibcoJMS queue.

2 comments:

koder said...

Hello Harinder


i was able to test this successfully from the same subnet machine (the subnet The server which host the EMS / Queues are sitting in an another environment ) , how ever since our LG/Controllers are in different net work we had to get it working on a machine in that network , we had set up the script in that net wwork and fire wall is opened and telnet and ping does work well


If i use tcp://hostname:4222 it throws below error

Failed to set property name JMS_MESSAGE_TYPE value TextMessage due to the following exception : javax.naming.ServiceUnavailableException: Failed to query JNDI: Failed to connect to the server at tcp://hostname:4222 [Root exception is javax.jms.JMSException:
Failed to connect to the server at tcp://hostname:4222]

If i use a FQDN tcp://hostname.FQDN :4222 it passes through the above step
but i get
following exception : javax.jms.JMSException: Failed to connect to the server at tcp://hostname.FQDN :4222
javax.jms.JMSException: Failed to connect to the server at tcp://hostname.FQDN :4222

I also observed that regardless of what ever whether it is FQDN or hostname i set up in run time setings the JMS is taking the tcp://hostname:4222 and i assume it is due to the fact that it would have hard coded in connection factory settings

My question is is there a way to by pass that above said connection factory settings to force the JMS to use the FQDN ?

Thank You
Jyothis

koder said...

i was able to test this successfully from the same subnet machine (the subnet The server which host the EMS / Queues are sitting in an another environment ) , how ever since our LG/Controllers are in different net work we had to get it working on a machine in that network , we had set up the script in that net wwork and fire wall is opened and telnet and ping does work well


If i use tcp://hostname:4222 it throws below error

Failed to set property name JMS_MESSAGE_TYPE value TextMessage due to the following exception : javax.naming.ServiceUnavailableException: Failed to query JNDI: Failed to connect to the server at tcp://hostname:4222 [Root exception is javax.jms.JMSException:
Failed to connect to the server at tcp://hostname:4222]

If i use a FQDN tcp://hostname.FQDN :4222 it passes through the above step
but i get
following exception : javax.jms.JMSException: Failed to connect to the server at tcp://hostname.FQDN :4222
javax.jms.JMSException: Failed to connect to the server at tcp://hostname.FQDN :4222

I also observed that regardless of what ever whether it is FQDN or hostname i set up in run time setings the JMS is taking the tcp://hostname:4222 and i assume it is due to the fact that it would have hard coded in connection factory settings

My question is is there a way to by pass that above said connection factory settings to force the JMS to use the FQDN ?

Thank You
Jyothis