JMS Test using Oracle AQ is throwing errors in JMS Send Receive Step
search cancel

JMS Test using Oracle AQ is throwing errors in JMS Send Receive Step

book

Article ID: 135653

calendar_today

Updated On:

Products

CA Application Test Service Virtualization

Issue/Introduction

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)
============================================================================


 

Environment

All supported DevTest releases.

Cause

N/A

Resolution

Required jar files for the Oracle AQ JMS:

Please check your lib shared directory and ensure the following jars are listed: 

  • aqapi.jar 
  • runtime12.jar 
  • translator.jar 
  • ojdbc5_g.jar 

 After ensuring the required jar files were installed, the customer ran additional tests and found the issue was caused by a lot of Internet search traffic. 


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.

 Below are some examples from sqlplus:

==============

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.