Trying to run a JMS Send Receive test case that uses Oracle AQ without success. The DB connectivity is fine, validated by creating a DB test case and was able to connect and interact successfully.
Getting below error when activated the ITR. Compiled a java class and was able to enqueue/dequeue with any errors, but noticed that with this test case there is no where to include the queue table.
============================================================================
| null
============================================================================
| Step: JMS Send Receive
----------------------------------------------------------------------------
| Trapped Exception: null
| Trapped Message: java.lang.NullPointerException
----------------------------------------------------------------------------
STACK TRACE
java.lang.NullPointerException
at oracle.jms.AQjmsConsumer.<init>(AQjmsConsumer.java:401)
at oracle.jms.AQjmsConsumer.<init>(AQjmsConsumer.java:311)
at oracle.jms.AQjmsSession.createConsumer(AQjmsSession.java:7939)
at oracle.jms.AQjmsSession.createConsumer(AQjmsSession.java:7821)
at com.itko.lisa.messaging.asset.JmsConsumerAsset.createInstance(JmsConsumerAsset.java:247)
at com.itko.lisa.messaging.asset.JmsConsumerAsset.createInstance(JmsConsumerAsset.java:42)
at com.itko.lisa.asset.LocalAssetRuntime$InstanceEntry.open(LocalAssetRuntime.java:2336)
at com.itko.lisa.asset.LocalAssetRuntime$InstanceEntry.checkOut(LocalAssetRuntime.java:1555)
at com.itko.lisa.asset.LocalAssetRuntime$RuntimeEntry.checkOut(LocalAssetRuntime.java:819)
at com.itko.lisa.asset.LocalAssetRuntime.doOpenAsset(LocalAssetRuntime.java:166)
at com.itko.lisa.asset.LocalAssetRuntime.openAssetInScope(LocalAssetRuntime.java:123)
at com.itko.lisa.asset.LocalAssetRuntime.openAsset(LocalAssetRuntime.java:114)
at com.itko.lisa.messaging.jms.JmsReceiveOperation.executeSync(JmsReceiveOperation.java:465)
at com.itko.lisa.messaging.jms.JmsReceiveOperation.doExecute2(JmsReceiveOperation.java:255)
at com.itko.lisa.messaging.jms.JmsReceiveOperation.doExecute2(JmsReceiveOperation.java:80)
at com.itko.lisa.asset.operation.AbstractRetryableRuntimeOperation.doExecute(AbstractRetryableRuntimeOperation.java:30)
at com.itko.lisa.asset.operation.AbstractRuntimeOperation.execute(AbstractRuntimeOperation.java:167)
at com.itko.lisa.messaging.jms.JmsReceiveOperation.executePrepareOnly(JmsReceiveOperation.java:233)
at com.itko.lisa.messaging.builder.AbstractSendReceiveOperation.doExecute(AbstractSendReceiveOperation.java:147)
at com.itko.lisa.asset.operation.AbstractRuntimeOperation.execute(AbstractRuntimeOperation.java:167)
at com.itko.lisa.asset.operation.AbstractOperationStep.execute(AbstractOperationStep.java:176)
at com.itko.lisa.asset.operation.AbstractOperationStep.execute(AbstractOperationStep.java:125)
at com.itko.lisa.test.TestNode.executeNode(TestNode.java:984)
at com.itko.lisa.test.TestCase.execute(TestCase.java:1297)
at com.itko.lisa.test.TestCase.execute(TestCase.java:1198)
at com.itko.lisa.test.TestCase.executeNextNode(TestCase.java:1183)
at com.itko.lisa.editor.WalkThruPanel.prepAndExecNode(WalkThruPanel.java:1115)
at com.itko.lisa.editor.WalkThruPanel.access$900(WalkThruPanel.java:73)
at com.itko.lisa.editor.WalkThruPanel$10.doCallback(WalkThruPanel.java:1017)
at com.itko.util.swing.panels.ProcessingDialog$2.run(ProcessingDialog.java:195)
at java.lang.Thread.run(Thread.java:745)
============================================================================
All supported DevTest releases.
N/A
Required jar files for the Oracle AQ JMS:
Please check your lib shared directory and ensure the following jars are listed:
To correct the issue, they use sqlplus to create the queues directly. The queue_payload_type of RAW was the cause of the problem, resulting in the Internet search activity. We found DevTest works well with type SYS.AQ$_JMS_MESSAGE.
==============
Create DB user
==============
CREATE USER aq IDENTIFIED BY aq;
GRANT CONNECT, RESOURCE TO aq;
GRANT CREATE TYPE, CREATE PROCEDURE TO aq;
GRANT Aq_administrator_role TO aq;
GRANT EXECUTE ON dbms_aq TO aq;
GRANT EXECUTE ON DBMS_AQADM TO aq;
Create Queue table
==================
SQL> begin
2 dbms_aqadm.create_queue_table(
3 queue_table => 'QT1',
4 queue_payload_type => 'SYS.AQ$_JMS_MESSAGE');
5 end;
6 /
PL/SQL procedure successfully completed.
Create Transaction queues
=========================
SQL> begin
2 DBMS_AQADM.CREATE_QUEUE (
3 queue_name => 'TestToQT1',
4 queue_table => 'QT1');
5 DBMS_AQADM.CREATE_QUEUE (
6 queue_name => 'QTToTestAckCDO2',
7 queue_table => 'QT1');
8 end;
9 /
PL/SQL procedure successfully completed.
Start queues
=================
SQL> begin
2 DBMS_AQADM.start_queue(
3 queue_name => 'TestToQT');
4 DBMS_AQADM.start_queue(
5 queue_name => ' QTToTestAckCDO2');
6 end;
7 /
PL/SQL procedure successfully completed.
This setup works with both deprecated AQ step and JMS Send Receive step. The ultimate objective was to create a JMS VS, the service is now created and deployed.