{"id":1613,"date":"2010-05-25T15:14:03","date_gmt":"2010-05-25T20:14:03","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=1613"},"modified":"2011-02-16T11:13:48","modified_gmt":"2011-02-16T16:13:48","slug":"goldengate-jms-adapter-oracle-aq-integration","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=1613","title":{"rendered":"GoldenGate JMS Adapter: Oracle AQ Integration"},"content":{"rendered":"<span id=\"Prepare_GoldenGate_Database_Extract_Process\"><h3>Prepare GoldenGate, Database, Extract Process<\/h3><\/span>\n<p>* See <a href=\"?p=1553\">this post<\/a> to setup GoldenGate and database.<\/p>\n<span id=\"Install_Java_Adapter\"><h3>Install Java Adapter<\/h3><\/span>\n<p>* See <a href=\"?p=1597\">this post<\/a> to setup GoldenGate Java Adapter.<\/p>\n<span id=\"Prepare_OC4J_AQ\"><h3>Prepare OC4J AQ<\/h3><\/span>\n<p>* See <a href=\"?p=1591\">this post<\/a> to setup OC4J AQ environment.<\/p>\n<span id=\"Add_User_Exit_Data_Pump_u_gt\"><h3>Add User Exit Data Pump (u_gt)<\/h3><\/span>\n<p>* Create a new data pump extract process and point to trail files. <\/p>\n<pre lang=\"bash\">\r\nADD EXTRACT u_gt, EXTTRAILSOURCE .\/dirdat\/gt<\/pre>\n<span id=\"Edit_Data_Pump_Parameter_File\"><h3>Edit Data Pump Parameter File<\/h3><\/span>\n<p>edit params u_gt<\/p>\n<pre lang=\"bash\">\r\nExtract u_gt\r\n\r\n# Point to property files\r\nSetEnv ( GGS_USEREXIT_CONF = \"dirprm\/cuserexit.properties\" )\r\nSetEnv ( GGS_JAVAUSEREXIT_CONF = \"dirprm\/javaue.properties\" )\r\n\r\nSourceDefs .\/dirdef\/gg_test.def\r\n\r\n# User exit process command\r\nCUserExit .\/JavaUserExit.dll CUSEREXIT PASSTHRU INCLUDEUPDATEBEFORES\r\n\r\nTable gg_src.*;\r\n<\/pre>\n<span id=\"cuserexit.properties_Same_as_ActiveMQ\"><h3>cuserexit.properties (Same as ActiveMQ)<\/h3><\/span>\n<p>* Copy &#8216;cuserexit.properties&#8217; from &#8216;javaue\\docs\\sample-dirprm&#8217; directory to &#8216;dirprm&#8217; directory.<br \/>\n* Edit &#8216;cuserexit.properties&#8217;<\/p>\n<pre lang=\"bash\">\r\ngoldengate.userexit.chkptprefix=JAVAUE_\r\ngoldengate.userexit.nochkpt=TRUE\r\ngoldengate.userexit.timestamp=utc\r\n\r\n# Setup logging\r\ngoldengate.log.modules=GENUSEREXIT,LOGMALLOC,JAVAWRITER\r\n#goldengate.log.level=INFO\r\ngoldengate.log.level=DEBUG\r\ngoldengate.log.level.LOGMALLOC=ERROR\r\ngoldengate.log.tostdout=false\r\ngoldengate.log.tofile=true\r\ngoldengate.log.logname=cuserexit\r\n\r\n# Setup javawriter\r\ngoldengate.userexit.writers=javawriter\r\njavawriter.stats.time=600\r\njavawriter.stats.numrecs=100\r\njavawriter.stats.display=TRUE\r\njavawriter.stats.full=TRUE\r\njavawriter.bootoptions=-Djava.class.path=javaue\/ggue.jar -Dlog4j.configuration=log4j.properties -Xmx512m -Xms256m\r\n<\/pre>\n<span id=\"javaue.properties\"><h3>javaue.properties<\/h3><\/span>\n<p>* Create in dirprm directory.<br \/>\n* Use jms handler.<br \/>\n* Point to Oracle AQ property file (oaq.properties).<br \/>\n* Set classpath.<\/p>\n<pre lang=\"bash\">\r\ngg.handlerlist=jms\r\n\r\ngg.handler.jms.type=jms\r\ngg.handler.jms.format=xml\r\n\r\n# Oracle AQ\r\ngg.handler.jms.properties=\/dirprm\/oaq.properties\r\ngg.classpath=.,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/lib\/dms.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/jdbc\/lib\/ojdbc14.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/j2ee\/home\/jazn.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/j2ee\/home\/oc4j.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/j2ee\/home\/oc4jclient.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/j2ee\/home\/lib\/adminclient.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/j2ee\/home\/lib\/bcel.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/j2ee\/home\/lib\/connector.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/j2ee\/home\/lib\/javax77.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/j2ee\/home\/lib\/jms.jar,C:\/prog\/oracle\/product\/10.1.3.1\/OracleAS_1\/j2ee\/home\/lib\/oc4j-internal.jar\r\n\r\n# (commented out) set to \"true\" to turn OFF sending jms messages\r\n# gg.handlerlist.nop=true\r\n<\/pre>\n<span id=\"Oracle_AQ_property_file_oaq.properties\"><h3>Oracle AQ property file (oaq.properties)<\/h3><\/span>\n<p>* Create in dirprm directory.<\/p>\n<pre lang=\"bash\">\r\ngg.jmshandler.sessionmode=auto\r\n\r\n# Use queue destination\r\ngg.jmshandler.queueortopic=queue\r\ngg.jmshandler.destination=MyAQJMSCtx\/MyQ\r\ngg.jmshandler.connectionfactory=MyAQJMSCtx\/MyQCF\r\n\r\n# java.naming properties should be placed in jndi.properties file\r\n#java.naming.factory.initial=com.evermind.server.ApplicationClientInitialContextFactory\r\n#java.naming.provider.url=ormi:\/\/localhost:12401\/MyAQJMSResourceAdatper\r\n# Or use opmn:ormi for automatic port determination\r\n#java.naming.provider.url=opmn:ormi:\/\/localhost\/MyAQJMSResourceAdatper:home\r\n\r\n#java.naming.security.principal=oc4jadmin\r\n#java.naming.security.credentials=welcome1\r\n<\/pre>\n<span id=\"jndi.properties\"><h3>jndi.properties<\/h3><\/span>\n<p>* Create in GoldenGate install root directory.<\/p>\n<pre lang=\"bash\">\r\njava.naming.factory.initial=com.evermind.server.ApplicationClientInitialContextFactory\r\njava.naming.provider.url=ormi:\/\/localhost:12401\/MyAQJMSResourceAdatper\r\n# Or use opmn:ormi for automatic port determination\r\n#java.naming.provider.url=opmn:ormi:\/\/localhost\/MyAQJMSResourceAdatper:home\r\njava.naming.security.principal=oc4jadmin\r\njava.naming.security.credentials=welcome1\r\n<\/pre>\n<span id=\"Prepare_META-INF_Files\"><h3>Prepare META-INF Files<\/h3><\/span>\n<p>* Contents of both application-client.xml and orion-application-client.xml seem can be dummied. Without them, GoldenGate will complain but Java Adapter will allow the process to continue.<br \/>\n* Create &#8216;META-INF&#8217; directory under GoldenGate install.<br \/>\n* Create &#8216;application-client.xml&#8217; in META-INF directory.<\/p>\n<pre lang=\"xml\">\r\n<?xml version = '1.0' encoding = 'windows-1252'?>\r\n<application-client xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" \r\nxsi:schemaLocation=\"http:\/\/java.sun.com\/xml\/ns\/j2ee http:\/\/java.sun.com\/xml\/ns\/j2ee\/application-client_1_4.xsd\" version=\"1.4\" xmlns=\"http:\/\/java.sun.com\/xml\/ns\/j2ee\">\r\n    <display-name>MyAQJMSClient-app-client<\/display-name>\r\n    <resource-ref>\r\n        <res-ref-name>MyAQJMSCtx\/MyQCF<\/res-ref-name>\r\n        <res-type>javax.jms.QueueConnectionFactory<\/res-type>\r\n        <res-auth>Container<\/res-auth>\r\n        <res-sharing-scope>Shareable<\/res-sharing-scope>\r\n    <\/resource-ref>\r\n    <resource-env-ref>\r\n        <resource-env-ref-name>MyAQJMSCtx\/MyQ<\/resource-env-ref-name>\r\n        <resource-env-ref-type>javax.jms.Queue<\/resource-env-ref-type>\r\n    <\/resource-env-ref>\r\n<\/application-client>\r\n<\/pre>\n<p>* Create an empty &#8216;orion-application-client.xml&#8217; in META-INF directory.<\/p>\n<pre lang=\"xml\">\r\n<?xml version = '1.0' encoding = 'windows-1252'?>\r\n<orion-application-client xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" \r\nxsi:noNamespaceSchemaLocation=\"http:\/\/xmlns.oracle.com\/oracleas\/schema\/orion-application-client-10_0.xsd\">\r\n    <resource-ref-mapping \r\n      name=\"MyAQJMSCtx\/MyQCF\"\r\n      location=\"MyAQJMSCtx\/MyQCF\"\/>\r\n    \r\n    <resource-env-ref-mapping \r\n      name=\"MyAQJMSCtx\/MyQ\"\r\n      location=\"MyAQJMSCtx\/MyQ\"\/>\r\n<\/orion-application-client>\r\n<\/pre>\n<span id=\"Start_Processes\"><h3>Start Processes<\/h3><\/span>\n<pre lang=\"bash\">\r\nC:\\>set JAVA_HOME=C:\\prog\\java\\jdk1.6.0_18\r\nC:\\>set PATH=%JAVA_HOME%\\bin;%PATH%\r\nC:\\>set PATH=%JAVA_HOME%\\jre\\bin\\server;%PATH%\r\nC:\\>ggsci\r\n\r\nGGSCI>start mgr\r\nGGSCI>start extract e_gt\r\nGGSCI>start extract u_gt\r\n<\/pre>\n<span id=\"References\"><h2>References<\/h2><\/span>\n<p><a href=\"?p=1597\">GoldenGate: Java Adatper<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prepare GoldenGate, Database, Extract Process * See this post to setup GoldenGate and database. Install Java Adapter * See this post to setup GoldenGate Java Adapter. Prepare OC4J AQ * See this post to setup OC4J AQ environment. Add User &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=1613\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[88],"tags":[],"class_list":["post-1613","post","type-post","status-publish","format-standard","hentry","category-goldengate"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8cRUO-q1","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1613","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1613"}],"version-history":[{"count":13,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1613\/revisions"}],"predecessor-version":[{"id":1945,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1613\/revisions\/1945"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1613"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1613"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1613"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}