|AQ propagation over internet [message #126447]
||Mon, 04 July 2005 11:03
Registered: July 2005
I'm trying to create a simple Oracle-to-Oracle data replication service over the Internet using AQ. Right now I'm developing various pieces on one Oracle instance (188.8.131.52.0 Enterprise) residing on our intranet. The AQXmlServlet is running on a different machine (Tomcat 4.1 on XP Pro sp2), also on intranet.
The sender and the receiver are in their respective schema -- fmis_aq0 and fmis_aq1. The message payload is a custom type containing two numbers, two strings and two Spatial type objects (sdo_geometry). I'll post the scripts if someone is interested.
When I test the setup over an ordinary dblink, it works as expected. i.e. the data is moved from the source queue to the destination queue and triggers a PL/SQL procedure which saves the data in the receiving table.
However, when I try to use an HTTP-based dblink, I always get errors complaining about premature end of message in the response. more specifically the error message looks like this:
ORA-29266: end-of-body reached
ORA-06512: at "SYS.DBMS_PRVTAQIP", line 2750
ORA-06512: at line 1
Upon closer inspection I found that the source queque sends something like this to the servlet:
(Note that the two Spatial objects are set to null for testing)
And the destination queue returns an empty response. In addition, the beforeAQOperation gets called but the afterAQOperation does not.
After that the source queue sends an AQXmlRollback which triggers both beforeAQOperation and afterAQOperation.
I've searched through the Oracle documents, AskTom and of course this forum and found no reference to AQXmlPush. If someone knows about this problem or has a working example, please respond.
Many thanks in advance.