Oracle® Application Server Release Notes 10g Release 2 (10.1.2) for HP-UX PA-RISC (64-bit) B25187-09 |
|
Previous |
Next |
This chapter describes issues associated with Oracle Application Server Adapters. It includes the following topics:
Section 13.1, "Oracle Application Server Adapter for Files/FTP Issues and Workarounds"
Section 13.2, "Oracle Application Server Adapter for Java Message Service Issues and Workarounds"
Section 13.3, "Oracle Application Server Adapter for Advanced Queuing Issues and Workarounds"
Section 13.4, "Oracle Application Server Adapter for Database Issues and Workarounds"
Section 13.6, "Oracle Application Server Adapter for Oracle Applications Issues and Workarounds"
This section describes the following issues and workarounds related to Oracle Application Server Adapter for Files (file adapter) and Oracle Application Server Adapter for FTP (FTP adapter):
When you use correlation sets with file adapter by using the empty BPEL project template, the property aliases get created in the partnerlink WSDL files. However, if you edit the adapter partnerlink, then the property aliases are removed from the WSDL file. This can cause some compilation issues for the BPEL project.
To overcome this issue, you need to manually edit the partnerlinks wsdl files by using the source view.
If you do multiple batching file adapter invokes from the same BPEL process, then your data is not correctly batched.
If you must have multiple batching file adapter invokes from the same BPEL process, then perform the second (and subsequent) invoke through another shell BPEL process. This invokes the file adapter. That is, change your second partner link in the original BPEL process to point to a small BPEL process instead of the file adapter service. This BPEL process can perform the file adapter invoke for you without issues.
This section describes the following issues and workarounds:
Section 13.2.1, "JMS Adapter in an XA scenario against AQ-JMS (OJMS)"
Section 13.2.2, "ESB Cannot Run JMS Adapter (OEMS JMS provider) in Non-Managed Mode"
Section 13.2.3, "Regression Stress - Dequeue Fails with AQJMSException in AQ-JMS Advanced Scenario"
Section 13.2.5, "Enabling Native Correlation in JMS Adapter"
You must use separate Resource Providers for inbound and outbound AQ-JMS adapters:
You must set a new partnerlink property (BPEL) or endpoint property (ESB) called "cacheConnections
" to false
. If this is not specified, then the default value is true
(which is the default in both 10.1.2 and 10.1.3).
You should use separate OJMS resource providers (defined in J2EE_HOME/config/application.xml
) for inbound and outbound JMS destinations (queues or topics) participating in the same global transaction.
JMS Adapter cannot use connection information from WSDL to run in non-managed mode. It reports missing connection factory.
Even in non-managed mode, some adapters have pre-requisites, such as server configuration. For instance, the JMS Adapter requires a resource provider to be configured inapplication.xml
and potentially data-sources.xml
(if the resource provider refers to a data source). If these pre-requisites exist ahead of time, then non-managed mode would also work for ESB. The same issue exactly pertains to BPEL as well. Note that this is applicable only for OEMS JMS provider.
Under heavy system load, that is, when the load for inbound and outbound for AQ JMS adapters is high, dequeue fails with an AQjmsException
exception.
To address this issue, use the following workaround:
Create two separate physical connection pools (that is, use two separate (AQ) JMS resource providers). Each JMS
WSDL
(Enqueue and Dequeue) then points to a different JCA
JNDI
connection factory, which in turn would point to two separate JMS connection factories, each using one of the two resource providers, as shown in the following examples:
Enqueue WSDL
<jca:address location="eis/aqjms1" />
Dequeue WSDL
<jca:address location="eis/aqjms2" />
JmsAdapter/oc4j-ra.xml
<connector-factory location="eis/aqjms1" ... <config-property name="connectionFactoryLocation" value="java:comp/resource/aqjms1/QueueConnectionFactories/qcf"/> ... <connector-factory location="eis/aqjms2" ... <config-property name="connectionFactoryLocation" value="java:comp/resource/aqjms2/QueueConnectionFactories/qcf"/> ...
J2EE/home/config/application.xml
<resource-provider class="oracle.jms.OjmsContext" name="aqjms1"> <description>OJMS Context using thin JDBC</description> <property name="url"value="jdbc:oracle:thin:scott/tiger@localhost:1521:ORCL" /> <resource-provider class="oracle.jms.OjmsContext" name="aqjms2"> <description>OJMS Context using thin JDBC</description> <property name="url" value="jdbc:oracle:thin:scott/tiger@localhost:1521:ORCL" />
Note: Even when the scenario works fine under regression stress, you will still see theAQJMSException in the log. You can use this workaround to avoid this exception. |
When using topics with OJMS (AQ based JMS), AQ- JMS topic hangs, and does not dequeue even though there are messages at topic.
The JMS adapter subscriber (inbound) WSDL should use a JCA connection factory (for example, eis/OJms/myConnectionFactory1
) which uses an OJMS resource provider (for example, resprov1
). This resource provider is based on a URL (for example, jdbc:oracle:thin:@host:1521:orcl
).
The following list exemplifies the workaround mentioned in the preceding paragraph:
MyJmsSubsriber.wsdl
...
<service name="JmsSubscribe">
<port name="jmsSubscribe_pt" binding="tns:jmsSubscribe_binding">
<jca:address location="eis/OJms/myConnectionFactory1"/>
...
J2EE_HOME/application-deployments/default/JmsAdapter/oc4j-ra.xml
<connector-factory location="eis/OJms/myConnectionFactory1" connector-name="Jms Adapter"> <config-property name="connectionFactoryLocation" value="java:comp/resource/resprov1/QueueConnectionFactories/myQCF"/>
J2EE_HOME/config/application.xml
<orion-application ... ... <resource-provider class="oracle.jms.OjmsContext" name="resprov1"> <property name="url" value="jdbc:oracle:thin:@host:1521:orcl" /> <property name="username" value="scott" /> <property name="password" value="tiger" /> </resource-provider>
The following types of correlation schemas are available for JMS adapter message correlation within Oracle BPEL Process Manager:
One of the choices available for JMS Adapter message correlation within BPEL process is native adapter correlation when a BPEL invoke is followed by BPEL receive.
Note: Native adapter correlation is applicable only to AQ, JMS and MQ Series adapters. |
The messaging adapters, such as JMS have support for native correlation and perform automatic correlation between an outbound (BPEL invoke) message and an inbound (BPEL receive) message mimicking a request-response scenario. The correlation ID of the incoming message has to be set to the Message ID of the outgoing JMS message. This needs to be implemented in the JMS application that is sending the reply on the other end. The underlying Adapter Framework (AF) stores a hashmap table whose entries map the Message Id of the outgoing JMS message with that of the native BPEL correlation ID. However, adapter native correlations can be used only in certain specific cases involving an invoke followed by a receive pointing to the same PartnerLink
activity. You need to use the BPEL correlation sets for all other cases.
The following correlation sets are available:
Based on JMS and AQ headers (available to JMS and AQ adapters only)
Based on payload (available to all adapters)
Correlation sets are a BPEL mechanism that provides for the correlation of asynchronous messages based on message body contents. Correlation sets needs to be defined when the interactions are not simple invoke-receive activities.
This section describes the following issue and workaround:
When the number of messages is large (more than 100K) in an AQ queue, dequeuing in the AQ adapter can be very slow. The problem is a performance issue with the 10.x.x version of the database. However, the previous versions of the database work fine.
When you encounter this issue, run one of the following commands to generate statistics for the queue or topic table:
dbms_stats.gather_table_stats('JMSUSER', 'QTAB')
or
dbms_stats.gather_schema_stats('JMSUSER')
where QTAB
is the Queue/Topic table and JMSUSER
is the user/schema. Note that statistics should be refreshed every time a large number of rows are updated, inserted, or deleted.
This section describes the following issues and workarounds:
Section 13.4.1, "DB Adapter Wizard Shows Empty (Blank) Page After Creating DB Connection"
Section 13.4.2, "Faulted DB Adapter Instances Do Not Appear in BPEL Console"
Section 13.4.3, "Database Adapter Throws an Exception for SYS.XMLTYPE"
Section 13.4.4, "NCLOB Data Read by the Outbound Database Adapter Contains Invalid Characters"
Section 13.4.5, "Date/Time Format Values Not Displayed as Expected"
Section 13.4.6, "SELECT Query Does Not Work for Multiple AND Conditions for DEPT:EMP Table"
Section 13.4.7, "XML WSDL XSD Files Remain After the Partner Link Is Deleted"
Section 13.4.8, "XML File Stored as a CLOB Is Returned as a String, Not as an XML Node"
After migration of 10.1.2.0.2 122.DBAdapter/InsertWithCatch
, if you open the project, and double-click the DB adapter partnerlink, then you will get a message stating that your UI connection is missing. After you create the UI connection, and click the Next button, you will get a blank page. This happens when you open in Oracle JDeveloper 10.1.3.1.
The issue here is that the Next button should be disabled, which in this case, is not. The workaround is to ensure that a connection exists and is selected, and not to click the Next button otherwise.
Faulted DB adapter instances do not appear in BPEL console because the BPEL auditing is tied to the JTA transaction, that is, auditing can only occur if the JTA transaction commits.
The faulted instance does not appear if a XA/JTA DB adapter invoke fails, and the JTA transaction cannot (must not) be committed. This problem also occurs with server timeouts, where the JTA transaction is marked rollback only
. However, in 10.1.3.1 DB adapter is configured for JTA out-of-the-box so this problem is now apparent all the time.
Report of success or failure has to be tied to JTA, but you cannot report failure and rollback the transaction at the same time. If the instance is successful you must audit through JTA, but if unsuccessful you theoretically cannot (you are writing as part of a transaction which can never commit.)
OracleAS TopLink does not support SYS.XMLTYPE
.
When you configure two processes to perform the following tasks, invalid characters appear when the data is read from the inbound Database adapter:
A file adapter reads a Word document (in opaque format) and sends it in the database outbound direction. The data is inserted into the table.
The database inbound direction reads the same data and sends it to the outbound file adapter, which writes to a document.
The workaround is to use a CLOB
instead of NCLOB
.
When you use datatypes such as DATE
, TIMESTAMP
, TIMESTAMP WITH TIME ZONE
, and TIMESTAMP WITH LOCAL TIMEZONE
, for which they are providing specific values, you do not see the expected formats. This is because the Database adapter maps these database types to the XML type dateTime
. For both incoming values in the instance XML and for outgoing values in the generated XML, dateTime
is used. This is consistent with the ISO 8601 standard.
Consider the following SELECT
query:
select dept.*,emp.* from departments dept,employees emp where dept.department_id='50' and emp.manager_id=dept.MANAGER_ID;
which can be worded as follows:
Find department 50
where any employee in that department has the same manager_id
as the department itself.
Note that the above SQL command returns only those departments and employees that match the query. To get this same result with the adapter, you must choose Employee
as the root table. If you chose Department
as the root table, then the adapter logically reads the employees in a separate relationship query:
select dept.* from departments dept,employees emp where dept.department_id='50' and emp.manager_id=dept.MANAGER_ID; select emp2.* from departments dept, employees emp, employees emp2 where dept.department_id='50' and emp.manager_id=dept.MANAGER_ID and emp2.department_id = dept.department_id;
The adapter returns the matching departments, plus all the employees for each matching department, even those whose mangager_id != dept.MANAGER_ID
.
Remember this simple rule: The SQL syntax only determines which rows from the root table get returned. The detail rows that are returned depend only on which root and master rows were returned. The above SQL syntax was difficult to express in the adapter because it returned columns from two tables that were both part of the WHERE
clause. Selecting Employees
as the root table instead of Department
worked, but not vice versa.
After deleting a Database adapter partner link from the Diagram View of JDeveloper BPEL Designer, the toplink_mappings.xml
file, the XSD, and the WSDL file remain in the Applications Navigator, even after refreshing. This is a known issue.
When an XML file (stored as a CLOB
) is read and assigned to a variable whose type conforms to the schema, then the Database adapter returns the contents of the CLOB
as a string and not as an XML document/node. This is the expected behavior because XMLType
is not supported.
Querying on multiple views when using the Database adapter is not supported because you cannot create relationships between views. No option for doing so is provided in JDeveloper BPEL Designer. In addition, you cannot query on views and tables within a single query.
Entering the following type of SQL query:
sqlquery : 'select count(*) from user_objects' rowset : false() row : false() datasource : 'jdbc:oracle:thin:system/welcome1@localhost:1521:ORCL'
Results in the following exception error:
oracle.xml.sql.OracleXMLSQLException: Character ')' is not allowed in an XML tag name.
If you use function calls inside a SQL query string such as count(*)
, sum(price)
, or avr(price)
, include a pseudo-alias name. For example:
sqlquery : 'select count(*) as pseudo_alias_name_XXX from user_objects'
or
sqlquery : 'select sum(price) as total_price from user_objects
This section describes the following issues and workarounds:
You must apply patch 5594751 before using the Oracle Application Server Adapter for MQSeries. The patch is available at the following location:
https://www.metalink.oracle.com/
This section describes the following issues and workarounds:
Issue: While configuring Oracle Application Server Adapter for Oracle Applications to create business event outbound messages, users must specify the schema file location and select the schema element that defines the messages for the event payload using the Adapter Configuration Wizard in Oracle JDeveloper. However, if users are not sure about the event payload data type or the schema details, then users may not have the correct WDSL file generated corresponding to a selected business event.
Resolution: To resolve this issue, Oracle Application Server Adapter for Oracle Applications provides an updated schema selection page allowing you to select the business event payload schema from one of the following options through the Wizard:
No Schema
Any Schema
Specify Schema
When you select either the "No Schema" or "Any Schema" option, there is no need to further specify the schema information for your business event service. The associated WSDL file corresponding to your specified business event service will be generated. If you select the "Specify Schema" option, then you must specify the location of schema file and then select the schema element that defines the payload of outbound business event.
For more information, refer to Oracle Application Server Adapter for Oracle Applications User's Guide (B28351-03) for details.
This section describes documentation errata. It includes the following topic:
Section 13.7.1, "Incorrect Values of the hostOSType and Indextype Parameters"
Section 13.7.4, "Implication of Dequeue Condition in AQ Adapters"
Section 13.7.5, "XMLType Is Supported in the 10.1.3.1 Release"
Section 6.4.2 "Modify the oc4j-ra.xml File" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide contains incorrect values of the hostOSType
and Indextype
parameters.
The value of hostOSType
should be specified as z/os
or Z/OS
and Indextype of the MQSeries queues should be set to MQIT_GROUP_ID
.
Section 6.3.8 "Message Segmentation" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide contains incorrect property name. The property name in this section should be SegmentIfReqd
. For example:
SegmentIfReqd="true"
Section 3.2.1.3 "Adding a Partner Link" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide has missing information about using Data Source. While creating a server connection while defining an AQ adapter service, you can use Data Source when oc4j-ra.xml is not configured with the correct JNDI location for connector factory. Consider the following code snippet from the adapter service WSDL:
<jca:address location="eis/AQ/aqSample" UIConnectionName="aqSample" />
If the adapter service is configured as shown in the preceding example and oc4j-ra.xml does not have an entry for "eis/AQ/aqSample", then the data source value specified by "Data Source" will be used. Additionally, the data source should be defined in the data-sources.xml file as well.
Section 3.1.1.2 "Dequeue and Enqueue Features" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide has missing information about the implication of Dequeue condition.
Dequeue condition is an Advanced Queuing product feature that AQ adapter uses. A dequeue condition is specified as part of the AQDequeueOption
object, which is internally used by the Dequeue AQ API. If a dequeue condition is specified and no messages meet the specified condition, then no dequeue will happen.
A dequeue condition element is a Boolean expression using syntax similar to the WHERE clause of a SQL query. This Boolean expression can include conditions on message properties, user object payload data properties, and PL/SQL or SQL functions. Message properties include priority
, corrid
, and other columns in the queue table.
Section 3.1.1 "AQ Adapter Features" of Oracle Application Server Adapters for Files, FTP, Databases, and Enterprise Messaging User's Guide contains incorrect information about XMLType not being supported by AQ adapters. XMLType is supported by AQ adapters from release 10.1.3 onwards.