Oracle9i Application Developer's Guide - Advanced Queuing Release 1 (9.0.1) Part Number A88890-02 |
|
Internet Access to Advanced Queuing, 3 of 9
The Internet Data Access Presentation (IDAP) uses the Content-Type of text/xml
to specify the body of the request containing an XML-encoded method request. XML provides the presentation for IDAP request and response messages as follows:
IDAP structures a message request or response as follows:
The tag of this root element is IDAP:Envelope
. IDAP defines a global attribute IDAP:encodingStyle
that indicates serialization rules used instead of those described by the IDAP specification. This attribute may appear on any element and is scoped to that element and all child elements not themselves containing such an attribute. Omitting IDAP:encodingStyle
means that type specification has been followed (unless overridden by a parent element).
The IDAP envelope also contains namespace declarations and additional attributes, provided they are namespace-qualified. Additional namespace-qualified subelements can follow the body.
The tag of this first element under the root is IDAP:Header
. An IDAP header passes necessary information, such as the transaction ID, with the request. The header is encoded as a child of the IDAP:Envelope
XML element. Headers are identified by the name element and are namespace-qualified. A header entry is encoded as an embedded element.
The IDAP body, tagged IDAP:Body
, contains a first subelement whose name is the method name. This method request element contains elements for each input and output parameter. The element names are the parameter names. The body also contains IDAP: Fault
, indicating information about an error.
For performing AQ operations, the IDAP body must contain an AQ XML document. The AQ XML document has the namespace http://ns.oracle.com/AQ/schemas/access
A method invocation is performed by creating the request header and body and processing the returned response header and body. The request and response headers can consist of standard transport protocol-specific and extended headers.
In the case of SMTP (email), the method invocation can be done by the filter interface of the email server, which invokes a Java method with the email-message-body as argument. This results in remote invocation of the POST
method on the AQ servlet. The response is emailed directly to the recipient specified in the reply of the message. The response header can contain SMTP-protocol-related headers also.
The POST
method within the HTTP request header performs the IDAP method invocation. The request should include the header IDAPMethodName,
whose value indicates the method to be invoked on the target. The value consists of a URI followed by a "#", followed by a method name (which must not include the "#" character), as follows:
IDAPMethodName: http://ns.oracle.com/AQ/schemas/access#AQXmlSend
The URI used for the interface must match the implied or specified namespace qualification of the method name element in the IDAP:Body
part of the payload.
IDAP method invocation consists of a method request and optionally a method response. The IDAP method request and method response are an HTTP request and response, respectively, whose content is an XML document that consists of the root and mandatory body elements. This XML document is referred to as the IDAP payload in the rest of this chapter.
The IDAP payload is defined as follows:
IDAP:Body
element. This request can be one of the AQ XML client requests described in the next section.
At the receiving site, a request can have one of the following outcomes:
In (a), the HTTP infrastructure passes the headers and body to the IDAP infrastructure. In (b), the result is an HTTP response containing an HTTP error in the status field and no XML body. In (c), the result of the method request consists of a response or error. In (d), the result of the method is an error that prevented the dispatching infrastructure on the receiving side from successful completion. In (c) and (d), additional message headers may for extensibility again be present in the results of the request.
The results of the request are to be provided in the form of a request-response. The HTTP response must be of Content-Type text/xml
. An IDAP result indicates success and an error indicates failure. The method response will never contain both a result and an error.
The body of an IDAP message is an AQ XML document, which represents:
Note: AQ Internet Access is supported only for 8.1-style queues. 8.0-style queues cannot be accessed using IDAP. |
Client requests for enqueue--SEND
and PUBLISH
requests--use the following methods:
AQXmlSend
--to enqueue to a single-consumer queue
AQXmlPublish
--to enqueue to multiconsumer queues/topics
AQXmlSend
and AQXmlPublish
take the arguments and argument attributes shown in Table 17-1. Required arguments are shown in bold.
AQ supports messages of the following types:
All these types of queues can be accessed using IDAP. If the queue holds messages in RAW, Oracle object, or JMS format, XML payloads are transformed to the appropriate internal format during enqueue and stored in the queue. During dequeue, when messages are obtained from queues containing messages in any of the above formats, they are converted to XML before being sent to the client.
The message payload type depends on the type of the queue on which the operation is being performed. A discussion of the queue types follows:
The contents of RAW queues are raw bytes. The user must supply the hex representation of the message payload in the XML message. For example, <raw>023f4523</raw>
.
For ADT queues that are not JMS queues (that is, they are not type AQ$_JMS_*
), the type of the payload depends on the type specified while creating the queue table that holds the queue. The XML specified here must map to the SQL type of the payload for the queue table. See the Oracle9i Application Developer's Guide - XML for more details on mapping SQL types to XML.
Assume the queue is defined to be of type EMP_TYP
, which has the following structure:
create or replace type emp_typ as object ( empno NUMBER(4), ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2) deptno NUMBER(2));
The corresponding XML representation is:
<EMP_TYP> <EMPNO>1111</EMPNO> <ENAME>Mary</ENAME> <MGR>5000</MGR> <HIREDATE>1996-01-01 0:0:0</HIREDATE> <SAL>10000</SAL> <COMM>100.12</COMM> <DEPTNO>60</DEPTNO> </EMP_TYP>
For queues with JMS types (that is, those with payloads of type AQ$_JMS_*
), there are four different XML elements, depending on the JMS type. IDAP supports queues/topics with the following JMS types: TextMessage, MapMessage, BytesMessage and ObjectMessage. JMS queues with payload type StreamMessage are not supported through IDAP.
The JMS types and XML components are shown in Table 17-2. The distinct XML element for each JMS type is shown in its respective column. Required elements are shown in bold.
All JMS messages consist of the following common elements:
oracle_jms_properties
, which consists of
type
--type of the message
reply_to
--consists of an agent_name
, address
, and protocol
userid
--supplied by AQ; client cannot specify
appid
--application identifier
groupid
--group identifier
group_sequence
--sequence within the group identified by group_id
timestamp
--the time the message was sent, which cannot be specified during enqueue. It is automatically populated in a message that is dequeued.
recv_timestamp
--the time the message was received
user_properties
--in addition to the above predefined properties, users can also specify their own message properties as name-value pairs. The user_properties
consists of a list of property elements. Each property is a name-value pair consisting of the following:
name
--property name
int_value
--integer property value or
string_value
--string property value or
long_value
--long property value or
double_value
--double property value or
boolean_value
--boolean property value or
float_value
-- float property value or
short_value
--short property value or
byte_value
--byte property value or
The following examples show enqueue requests using the different message and queue types.
The queue QS.NEW_ORDER_QUE
has a payload of type ORDER_TYP
.
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlSend xmlns = "http://ns.oracle.com/AQ/schemas/access"> <producer_options> <destination>QS.NEW_ORDERS_QUE</destination> </producer_options> <message_set> <message_count>1</message_count> <message> <message_number>1</message_number> <message_header> <correlation>ORDER1</correlation> <sender_id> <agent_name>scott</agent_name> </sender_id> </message_header> <message_payload> <ORDER_TYP> <ORDERNO>100</ORDERNO> <STATUS>NEW</STATUS> <ORDERTYPE>URGENT</ORDERTYPE> <ORDERREGION>EAST</ORDERREGION> <CUSTOMER> <CUSTNO>1001233</CUSTNO> <CUSTID>MA1234555623212</CUSTID> <NAME>AMERICAN EXPRESS</NAME> <STREET>EXPRESS STREET</STREET> <CITY>REDWOOD CITY</CITY> <STATE>CA</STATE> <ZIP>94065</ZIP> <COUNTRY>USA</COUNTRY> </CUSTOMER> <PAYMENTMETHOD>CREDIT</PAYMENTMETHOD> <ITEMS> <ITEMS_ITEM> <QUANTITY>10</QUANTITY> <ITEM> <TITLE>Perl</TITLE> <AUTHORS>Randal</AUTHORS> <ISBN>ISBN20200</ISBN> <PRICE>19</PRICE> </ITEM> <SUBTOTAL>190</SUBTOTAL> </ITEMS_ITEM> <ITEMS_ITEM> <QUANTITY>20</QUANTITY> <ITEM> <TITLE>XML</TITLE> <AUTHORS>Micheal</AUTHORS> <ISBN>ISBN20212</ISBN> <PRICE>59</PRICE> </ITEM> <SUBTOTAL>590</SUBTOTAL> </ITEMS_ITEM> </ITEMS> <CCNUMBER>NUMBER01</CCNUMBER> <ORDER_DATE>2000-08-23 0:0:0</ORDER_DATE> </ORDER_TYP> </message_payload> </message> </message_set> </AQXmlSend> </Body> </Envelope>
The multiconsumer queue AQUSER.EMP_TOPIC
has a payload of type EMP_TYP
. EMP_TYP
has the following structure:
create or replace type emp_typ as object ( empno NUMBER(4), ename VARCHAR2(10), job VARCHAR2(9), mgr NUMBER(4), hiredate DATE, sal NUMBER(7,2), comm NUMBER(7,2) deptno NUMBER(2));
A PUBLISH
request has the following format:
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlPublish xmlns = "http://ns.oracle.com/AQ/schemas/access"> <producer_options> <destination>AQUSER.EMP_TOPIC</destination> </producer_options><message_set> <message_count>1</message_count> <message> <message_number>1</message_number> <message_header> <correlation>NEWEMP</correlation> <sender_id> <agent_name>scott</agent_name> </sender_id> </message_header> <message_payload> <EMP_TYP> <EMPNO>1111</EMPNO> <ENAME>Mary</ENAME> <MGR>5000</MGR> <HIREDATE>1996-01-01 0:0:0</HIREDATE> <SAL>10000</SAL> <COMM>100.12</COMM> <DEPTNO>60</DEPTNO> </EMP_TYP> </message_payload> </message> </message_set> </AQXmlPublish> </Body> </Envelope>
The JMS queue AQUSER.JMS_TEXTQ
has payload type JMS Text message (SYS.AQ$_JMS_TEXT_MESSAGE). The send request has the following format:
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlSend xmlns = "http://ns.oracle.com/AQ/schemas/access"> <producer_options> <destination>AQUSER.JMS_TEXTQ</destination> </producer_options> <message_set> <message_count>1</message_count> <message> <message_number>1</message_number> <message_header> <correlation>text_msg</correlation> <sender_id> <agent_name>john</agent_name> </sender_id> </message_header> <message_payload> <jms_text_message> <oracle_jms_properties> <appid>AQProduct</appid> <groupid>AQ</groupid> </oracle_jms_properties> <user_properties> <property> <name>Country</name> <string_value>USA</string_value> </property> <property> <name>State</name> <string_value>California</string_value> </property> </user_properties> <text_data>All things bright and beautiful</text_data> </jms_text_message> </message_payload> </message> </message_set> </AQXmlSend> </Body> </Envelope>
The JMS topic AQUSER.JMS_MAP_TOPIC
has payload type JMS Map message (SYS.AQ$_JMS_MAP_MESSAGE). The publish request has the following format:
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlPublish xmlns = "http://ns.oracle.com/AQ/schemas/access"> <producer_options> <destination>AQUSER.JMS_MAP_TOPIC</destination> </producer_options> <message_set> <message_count>1</message_count> <message> <message_number>1</message_number> <message_header> <correlation>toyota</correlation> <sender_id > <agent_name>john</agent_name> </sender_id> <recipient_list> <recipient> <agent_name>scott</agent_name> </recipient> <recipient> <agent_name>aquser</agent_name> </recipient> <recipient> <agent_name>jmsuser</agent_name> </recipient> </recipient_list> </message_header> <message_payload> <jms_map_message> <oracle_jms_properties> <reply_to> <agent_name>oracle</agent_name> </reply_to> <groupid>AQ</groupid> </oracle_jms_properties> <user_properties> <property> <name>Country</name> <string_value>USA</string_value> </property> <property> <name>State</name> <string_value>California</string_value> </property> </user_properties> <map_data> <item> <name>Car</name> <string_value>Toyota</string_value> </item> <item> <name>Color</name> <string_value>Blue</string_value> </item> <item> <name>Price</name> <int_value>20000</int_value> </item> </map_data> </jms_map_message> </message_payload> </message> </message_set> </AQXmlPublish> </Body> </Envelope>
The queue AQUSER.RAW_MSGQ
has a payload of type RAW. The SEND
request has the following format:
<?xml version="1.0"?> <Envelope xmlns = "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlSend xmlns = "http://ns.oracle.com/AQ/schemas/access"> <producer_options> <destination>AQUSER.RAW_MSGQ</destination> </producer_options> <message_set> <message_count>1</message_count> <message> <message_number>1</message_number> <message_header> <correlation>TKAXAS11</correlation> <sender_id> <agent_name>scott</agent_name> </sender_id> </message_header> <message_payload> <RAW>426C6F622064617461202D20626C6F622064617461202D20626C6F62206461746120426C6F6 22064617461202D20626C6F622064617461202D20626C6F62206461746120426</RAW> </message_payload> </message> </message_set> </AQXmlSend> </Body> </Envelope>
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlPublish xmlns = "http://ns.oracle.com/AQ/schemas/access"> <producer_options> <destination>AQUSER.EMP_TOPIC</destination> </producer_options> <message_set> <message_count>1</message_count> <message> <message_number>1</message_number> <message_header> <correlation>NEWEMP</correlation> <sender_id> <agent_name>scott</agent_name> </sender_id> </message_header> <message_payload> <EMP_TYP> <EMPNO>1111</EMPNO> <ENAME>Mary</ENAME> <MGR>5000</MGR> <HIREDATE>1996-01-01 0:0:0</HIREDATE> <SAL>10000</SAL> <COMM>100.12</COMM> <DEPTNO>60</DEPTNO> </EMP_TYP> </message_payload> </message> </message_set> <AQXmlCommit/> </AQXmlPublish> </Body> </Envelope>
Client requests for dequeue use the AQXmlReceive
method, which takes the arguments and argument attributes shown in Table 17-3. Required arguments are shown in bold.
The following examples show dequeue requests using different attributes of AQXmlReceive
.
Using the single-consumer queue QS.NEW_ORDERS_QUE
, the receive request has the following format:
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlReceive xmlns = "http://ns.oracle.com/AQ/schemas/access"> <consumer_options> <destination>QS.NEW_ORDERS_QUE</destination> <wait_time>0</wait_time> </consumer_options> </AQXmlReceive> </Body> </Envelope>
Using the multiconsumer queue AQUSER.EMP_TOPIC
with subscriber APP1
, the receive request has the following format:
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlReceive xmlns = "http://ns.oracle.com/AQ/schemas/access"> <consumer_options> <destination>AQUSER.EMP_TOPIC</destination> <consumer_name>APP1</consumer_name> <wait_time>0</wait_time> <navigation_mode>FIRST_MESSAGE</navigation_mode> </consumer_options> </AQXmlReceive> </Body> </Envelope>
Using the single consumer queue QS.NEW_ORDERS_QUE
, to receive messages with correlation ID NEW
, the receive request has the following format:
<Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlReceive xmlns = "http://ns.oracle.com/AQ/schemas/access"> <consumer_options> <destination>QS.NEW_ORDERS_QUE</destination> <wait_time>0</wait_time> <selector> <correlation>NEW</correlation> </selector> </consumer_options> </AQXmlReceive> </Body> </Envelope>
Using the multiconsumer queue AQUSER.EMP_TOPIC
with subscriber APP1
and condition deptno=60
, the receive request has the following format:
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlReceive xmlns = "http://ns.oracle.com/AQ/schemas/access"> <consumer_options> <destination>AQUSER.EMP_TOPIC</destination> <consumer_name>APP1</consumer_name> <wait_time>0</wait_time> <selector> <condition>tab.user_data.deptno=60</condition> </selector> </consumer_options> </AQXmlReceive> </Body> </Envelope>
In the dequeue request examples, if you include AQXmlCommit
at the end of the RECEIVE
request, the transaction is committed upon completion of the operation. In "Dequeue Request Example--Receiving Messages from a Multiconsumer Queue", the receive request can include the commit flag as follows:
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlReceive xmlns = "http://ns.oracle.com/AQ/schemas/access"> <consumer_options> <destination>QS.NEW_ORDERS_QUE</destination> <wait_time>0</wait_time> </consumer_options> <AQXmlCommit/> </AQXmlReceive> </Body> </Envelope>
Messages are dequeued in REMOVE
mode by default. To receive messages from QS.NEW_ORDERS_QUE
in BROWSE
mode, modify the receive request as follows:
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlReceive xmlns = "http://ns.oracle.com/AQ/schemas/access"> <consumer_options> <destination>QS.NEW_ORDERS_QUE</destination> <wait_time>0</wait_time> <dequeue_mode>BROWSE</dequeue_mode> </consumer_options> </AQXmlReceive> </Body> </Envelope>
Client requests for registration use the AQXmlRegister method, which takes the arguments and argument attributes shown in Table 17-4. Required arguments are shown in bold.
.
To notify an email address of messages enqueued for consumer APP1
in queue AQUSER.EMP_TOPIC
, the register request has the following format:
<?xml version="1.0"?> <Envelope xmlns= "http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlRegister xmlns = "http://ns.oracle.com/AQ/schemas/access"> <register_options> <destination>AQUSER.EMP_TOPIC</destination> <consumer_name>APP1</consumer_name> <notify_url>mailto:app1@hotmail.com</notify_url> </register_options> <AQXmlCommit/> </AQXmlRegister> </Body> </Envelope>
A request to commit all actions performed by the user in a session uses the AQXmlCommit
method.
A commit request has the following format.
<?xml version="1.0"?> <Envelope xmlns="http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlCommit xmlns="http://ns.oracle.com/AQ/schemas/access"/> </Body> </Envelope>
A request to roll back all actions performed by the user in a session uses the AQXmlRollback
method. Actions performed with IMMEDIATE
visibility are not rolled back.
A rollback request has the following format:
<?xml version="1.0"?> <Envelope xmlns="http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlRollback xmlns="http://ns.oracle.com/AQ/schemas/access"/> </Body> </Envelope>
The response to an enqueue request to a single-consumer queue uses the AQXmlSendResponse
method. The components of the response are shown in Table 17-5.
The result of a SEND
request to the single consumer queue QS.NEW_ORDERS_QUE
has the following format:
<?xml version = '1.0'?> <Envelope xmlns="http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlSendResponse xmlns="http://ns.oracle.com/AQ/schemas/access"> <status_response> <status_code>0</status_code> </status_response> <send_result> <destination>QS.NEW_ORDERS_QUE</destination> <message_id>12341234123412341234</message_id> </send_result> </AQXmlSendResponse> </Body> </Envelope>
The response to an enqueue request to a multiconsumer queue or topic uses the AQXmlPublishResponse
method. The components of the response are shown in Table 17-6.
The result of a SEND
request to the multiconsumer queue AQUSER.EMP_TOPIC
has the following format:
<?xml version = '1.0'?> <Envelope xmlns="http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlPublishResponse xmlns="http://ns.oracle.com/AQ/schemas/access"> <status_response> <status_code>0</status_code> </status_response> <publish_result> <destination>AQUSER.EMP_TOPIC</destination> <message_id>23434435435456546546546546</message_id> </publish_result> </AQXmlPublishResponse> </Body> </Envelope>
The response to a dequeue request uses the AQXmlReceiveResponse
method. The components of the response are shown in Table 17-7.
The result of a RECEIVE
request on the queue AQUSER.EMP_TOPIC
with a payload of type EMP_TYP
has the following format:
<?xml version = '1.0'?> <Envelope xmlns="http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlReceiveResponse xmlns="http://ns.oracle.com/AQ/schemas/access"> <status_response> <status_code>0</status_code> </status_response> <receive_result> <destination>AQUSER.EMP_TOPIC</destination> <message_set> <message_count>1</message_count> <message> <message_number>1</message_number> <message_header> <message_id>1234344545565667</message_id> <correlation>TKAXAP10</correlation> <priority>1</priority> <delivery_count>0</delivery_count> <sender_id> <agent_name>scott</agent_name> </sender_id> <message_state>0</message_state> </message_header> <message_payload> <EMP_TYP> <EMPNO>1111</EMPNO> <ENAME>Mary</ENAME> <MGR>5000</MGR> <HIREDATE>1996-01-01 0:0:0</HIREDATE> <SAL>10000</SAL> <COMM>100.12</COMM> <DEPTNO>60</DEPTNO> </EMP_TYP> </message_payload> </message> </message_set> </receive_result> </AQXmlReceiveResponse> </Body> </Envelope>
The result of a RECEIVE
request on a queue with a payload of type JMS Text message has the following format:
<?xml version = '1.0'?> <Envelope xmlns="http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlReceiveResponse xmlns="http://ns.oracle.com/AQ/schemas/access"> <status_response> <status_code>0</status_code> </status_response> <receive_result> <destination>AQUSER.JMS_TEXTQ</destination> <message_set> <message_count>1</message_count> <message> <message_number>1</message_number> <message_header> <message_id>12233435454656567</message_id> <correlation>TKAXAP01</correlation> <delay>0</delay> <priority>1</priority> <message_state>0</message_state> <sender_id> <agent_name>scott</agent_name> </sender_id> </message_header> <message_payload> <jms_text_message> <oracle_jms_properties> <reply_to> <agent_name>oracle</agent_name> <address>redwoodshores</address> <protocol>100</protocol> </reply_to> <userid>AQUSER</userid> <appid>AQProduct</appid> <groupid>AQ</groupid> <timestamp>01-12-2000</timestamp> <recv_timestamp>12-12-2000</recv_timestamp> </oracle_jms_properties> <user_properties> <property> <name>Country</name> <string_value>USA</string_value> </property> <property> <name>State</name> <string_value>California</string_value> </property> </user_properties> <text_data>All things bright and beautiful</text_data> </jms_text_message> </message_payload> </message> </message_set> </receive_result> </AQXmlReceiveResponse> </Body> </Envelope>
The response to a register request uses the AQXmlRegisterResponse
method, which consists of status_response
. (SeeTable 17-7 for a description of status_response
.)
The response to a commit request uses the AQXmlCommitResponse method, which consists of status_response
. (SeeTable 17-7 for a description of status_response
.)
The response to a commit request has the following format:
<?xml version = '1.0'?> <Envelope xmlns="http://ns.oracle.com/AQ/schemas/envelope"> <Body> <AQXmlCommitResponse xmlns="http://ns.oracle.com/AQ/schemas/access"> <status_response> <status_code>0</status_code> </status_response> </AQXmlCommitResponse> </Body> </Envelope>
The response to a rollback request uses the AQXmlRollbackResponse
method, which consists of status_response
. (SeeTable 17-7 for a description of status_response
.)
When an event for which a client has registered occurs, a notification is sent to the client at the URL specified in the REGISTER
request. AQXmlNotification
consists of:
In case of an error in any of the above requests, a FAULT
is generated. The FAULT
element consists of:
faultcode
- error code for fault
faultstring
- indicates a client error or a server error. A client error means that the request is not valid. Server error indicates that the AQ servlet has not been set up correctly
detail
, which consists of
A FAULT
message has the following format:
<?xml version = '1.0'?> <Envelope xmlns="http://ns.oracle.com/AQ/schemas/envelope"> <Body> <Fault xmlns="http://ns.oracle.com/AQ/schemas/envelope"> <faultcode>100</faultcode> <faultstring>Server Fault</faultstring> <detail> <status_response> <status_code>-1</status_code> <error_code>410</error_code> <error_message>JMS-410: XML SQL Excetpion ORA-24031: invalid value, OWNER_NAME should be non-NULL ORA-06512: at "SYS.DBMS_AQJMS", line 177 ORA-06512: at line 1 </error_message> </status_response> </detail> </Fault> </Body> </Envelope>
|
Copyright © 1996-2001, Oracle Corporation. All Rights Reserved. |
|