Five Stars

how to use an Oracle AQ defined in the Weblogic Foreign Server Destination in the tJmsInput

I am trying to use the queue (Oracle AQ) defined in the Weblogic Foreign Server (as one of the destination) in the tJMSInput component. But I get the following error. It doesn't like the JMSModule!Queue format. Could anyone help me how to specify the AQ in tJMSInput? Thanks

 

tJmsInput.GIF

"Starting job TestJob at 15:23 09/10/2017.

[statistics] connecting to socket on port 3665
[statistics] connected
Exception in component tJMSInput_1
weblogic.jms.common.JMSException: [JMSExceptions:045101]The destination name passed to the createTopic or createQueue "TestModule!TestAQ" is invalid. If the destination name does not contain a "/" character, then it must be the name of a distributed destination that is available in the cluster to which the client is attached. If it does contain a "/" character, then the string before the "/" must be the name of a JMS server or a ".". The string after the "/" is the name of a the desired destination. If the "./" version of the string is used then any destination with the given name on the local WebLogic Server instance will be returned.
at weblogic.jms.dispatcher.DispatcherAdapter.convertToJMSExceptionAndThrow(DispatcherAdapter.java:110)
at weblogic.jms.dispatcher.DispatcherAdapter.dispatchSyncNoTran(DispatcherAdapter.java:61)
at weblogic.jms.client.JMSSession.createDestination(JMSSession.java:3192)
at weblogic.jms.client.JMSSession.createQueue(JMSSession.java:2577)
[statistics] disconnected
at weblogic.jms.client.WLSessionImpl.createQueue(WLSessionImpl.java:938)
at sw_processpvproductstostep.testjob_0_1.TestJob.tJMSInput_1Process(TestJob.java:521)
at sw_processpvproductstostep.testjob_0_1.TestJob.runJobInTOS(TestJob.java:887)
at sw_processpvproductstostep.testjob_0_1.TestJob.main(TestJob.java:655)
Caused by: weblogic.jms.common.JMSException: [JMSExceptions:045101]The destination name passed to the createTopic or createQueue "TestModule!TestAQ" is invalid. If the destination name does not contain a "/" character, then it must be the name of a distributed destination that is available in the cluster to which the client is attached. If it does contain a "/" character, then the string before the "/" must be the name of a JMS server or a ".". The string after the "/" is the name of a the desired destination. If the "./" version of the string is used then any destination with the given name on the local WebLogic Server instance will be returned.
at weblogic.jms.frontend.FEManager.destinationCreate(FEManager.java:207)
at weblogic.jms.frontend.FEManager.invoke(FEManager.java:572)
at weblogic.messaging.dispatcher.Request.wrappedFiniteStateMachine(Request.java:972)
at weblogic.messaging.dispatcher.DispatcherServerRef.invoke(DispatcherServerRef.java:276)
at weblogic.messaging.dispatcher.DispatcherServerRef.handleRequest(DispatcherServerRef.java:141)
at weblogic.messaging.dispatcher.DispatcherServerRef.access$000(DispatcherServerRef.java:34)
at weblogic.messaging.dispatcher.DispatcherServerRef$2.run(DispatcherServerRef.java:111)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:311)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:263)
Picked up JAVA_TOOL_OPTIONS: -Djava.vendor="New Oracle"
Job TestJob ended at 15:23 09/10/2017. [exit code=1]"

2 REPLIES
Moderator

Re: how to use an Oracle AQ defined in the Weblogic Foreign Server Destination in the tJmsInput

Hello,

The Message From field is case-sensitive. Could you please recheck your TestModule!TestAQ to see if it is valid?

Best regards

Sabrina

 

--
Don't forget to give kudos when a reply is helpful and click Accept the solution when you think you're good with it.
Employee

Re: how to use an Oracle AQ defined in the Weblogic Foreign Server Destination in the tJmsInput

Hi,

Normal  standard is to get the queueconnectionfactory by lookup (something like initialcontext.lookup passing queue name as argument). But here the Talend component call's different, and invokes createQueue() method to do the same.

So you could do the following to get handle on JMS destination

1. In a Non clustered environment, the format of the string to use is:

<jmsservername>/<jmsmodulename>!<destinationname>


2. In a clustered environment use: <jmsmodulename>!<destinationname>