Oracle Application SEerver Containers For J2EE - JMS - Frequently Asked Questions
FAQ  Oracle Application Server Logo
Java Message Service
November 2003
 

 

This FAQ addresses frequently asked questions relating to Java Message Service aspects of Oracle Application Server Containers for J2EE 10g (9.0.4) and contains the following questions:


Oracle offers two JMS providers;  OJMS (AQ/JMS) and OC4J/JMS.  Which one should I be using?

OJMS and OracleAS JMS are both J2EE 1.3 compliant JMS providers from Oracle.  OJMS has been integrated into OracleAS 10g using the JCA adapter while at the same time leveraging Advanced Queuing in the Oracle Database for persistence and recoverability.  If database recoverability guarantees, SQL queriability, transparent application failover, message transformation, propagation are required then Oracle recommends using OJMS as the JMS provider. 

OracleAS JMS is a lightweight, in-memory/file based queuing system that provides a complete J2EE 1.3 JMS implementation. It is suited for applications that do not require Oracle specific JMS extensions or the recoverability guarantees that OJMS provides.

The following table summarizes a feature comparison between OJMS and OracleAS JMS:

OJMS vs OracleAS JMS


OJMS
OracleAS JMS
JMS API version
1.02 b
1.02 b
J2EE 1.3 Certified
Yes
Yes
Persistent Message Storage
Yes, in Oracle database
Yes, in File system
In-Memory Message Storage
No
Yes
Exception Queue Handling
Yes, 1 Exception Queue per Queue table
1 system wide Exception Queue
Transport (used by remote clients)
JDBC, HTTP
Proprietary socket based
Message Types supported
Standard JMS types, Oracle ADTs, XML type, RAW
Standard JMS types
Message Transformations
Yes
No
Auditing and Alerts
Yes
No
Language Support
Java, PL/SQL, OCI
Java
Admininstration
Command Line, GUI, Manual
Command Line, Manual
Dynamic Creation of Queues and Topics Yes, Programatic, GUI, Manual No, changes take effect only on server restart
Access Control
Authentication and Authorization
Authentication
Message Propogation
Yes, native to another Oracle database
To 3rd party JMS systems using Messaging Gateway
No
High Availability
Robust, using RAC database
Server restart using OPMN
Distributed Transactions
Emulated XA used when using emulated datasources
Full 2pc support when using non-emulated datasources
2pc support only when using OracleAS JMS resources
2pc not supported when both OracleAS JMS and non-OracleAS JMS resources are participating in the same transaction
Recoverability
2pc recovery when using non-emulated datasources
and Oracle DB as Transaction Coordinator
2pc recovery only if all resources used in transaction are OracleAS JMS resources.
1pc recovery only otherwise.
DMS Instrumentation
No
Yes
 

Can a delay be set on the time a JMS message is delivered?  In other words,  can a certain amount of time be set between when a message is published and when it is available to subscribers?

Yes, a time delay is supported as an Oracle specific JMS extension to OJMS. You can set the delay on a given OJMS JMS message instance using the "void setDelay(int delay)" method which sets the JMS_OracleDelay message property. Message delay is not supported by OracleAS JMS.

Is a distributed two-phase commit (2PC) required when combining JMS and Database operations within a Message Driver Bean (MDB)?

No, as long as the business logic inside the MDB uses the same Data Source and username/password, all DS.getConnection calls return the same physical connection.  Therefore, at commit time only one resource is enlisted with JTA so one-phase commit is performed.   

Can multiple JMS message types be enqueued to the same OJMS/AQ queue?  In other words, can a JMSText and a JMSByte message reside on the same queue?

Yes, when using the AQ$_JMS_MESSAGE data type when creating an AQ queue.  This type of queue can then hold any of the five JMS message types.  

Do OJMS and OracleAS JMS support XA?

OracleAS JMS implements the optional (per the JMS specification) javax.jms.XA* interfaces and thus supports standard JMS based XA.

OJMS libraries that ship with OracleAS 10g do not implement the optional javax.jms.XA* interfaces. This support will be available in OracleAS 10gR3. However one can accomplish similar XA compliant behavior by extracting the jdbc connection that underlies a given JMS session and then use the jdbc XA interfaces to perform XA operations.

 Also be aware that full CMT and BMT support is provided when using both OJMS as well as OracelAS JMS in conjunction with OC4J.

Do OJMS and OracleAS JMS support DMS?

OracleAS JMS provides a whole range of DMS metrics during it's normal course of operation.  See the Oracle Application Server Performance Guide for a detailed description of metrics.

OJMS that ships with the 10g Database does not provide detailed DMS metrics. Complete DMS support for OJMS is slated for 10g R3.


 
Copyright © 2002, Oracle Corporation. All rights reserved.  Contact Us | Legal Notices and Terms of Use | Privacy Statement
E-mail this page
Printer View Printer View
Oracle Is The Information Company About Oracle | Oracle RSS Feeds | Careers | Contact Us | Site Maps | Legal Notices | Terms of Use | Privacy