{"id":1611,"date":"2010-05-26T10:27:24","date_gmt":"2010-05-26T15:27:24","guid":{"rendered":"http:\/\/jianmingli.com\/wp\/?p=1611"},"modified":"2011-02-16T11:13:32","modified_gmt":"2011-02-16T16:13:32","slug":"goldengate-jms-adatper-integrate-with-oc4j-jms-queue","status":"publish","type":"post","link":"https:\/\/jianmingli.com\/wp\/?p=1611","title":{"rendered":"GoldenGate JMS Adatper: Integrate with OC4J JMS Queue"},"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=\"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<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 &#8216;dirprm&#8217; directory.<br \/>\n* Use jms handler.<br \/>\n* Point to Oracle JMS property file (ojms.properties).<br \/>\n* Set classpath.<\/p>\n<pre lang=\"bash\">\r\n\r\ngg.handlerlist=jms\r\n\r\ngg.handler.jms.type=jms\r\ngg.handler.jms.format=xml\r\n\r\n# Oracle JMS property file\r\ngg.handler.jms.properties=\/dirprm\/ojms.properties\r\n\r\n# Setup classpath\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_JMS_Property_File_ojms.properties\"><h3>Oracle JMS Property File (ojms.properties)<\/h3><\/span>\n<p>* Create in &#8216;dirprm&#8217; directory.<\/p>\n<pre lang=\"bash\">\r\n#gg.jmshandler.persistent=false\r\n#gg.jmshandler.durabletopic=false\r\n\r\ngg.jmshandler.sessionmode=auto\r\n\r\n# Use queue\r\ngg.jmshandler.queueortopic=queue\r\ngg.jmshandler.destination=jms\/helloWorldQueue\r\ngg.jmshandler.connectionfactory=jms\/QueueConnectionFactory\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\r\n# Or use opmn:ormi for automatic port determination\r\n#java.naming.provider.url=opmn:ormi:\/\/localhost:home\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\r\n# Or use opmn:ormi for automatic port determination\r\n#java.naming.provider.url=opmn:ormi:\/\/localhost: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\"?>\r\n<!DOCTYPE application-client PUBLIC\r\n      \"-\/\/Sun Microsystems, Inc.\/\/DTD J2EE Application Client 1.2\/\/EN\"\r\n      \"http:\/\/java.sun.com\/dtd\/application-client_1_3.dtd\">\r\n<application-client>\r\n    <display-name>Hello World App<\/display-name>\r\n    <resource-ref>\r\n        <res-ref-name>jms\/QueueConnectionFactory<\/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>jms\/helloWorldQueue<\/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\"?>\r\n<!DOCTYPE orion-application-client PUBLIC\r\n\"-\/\/Evermind\/\/DTD J2EE Application-client runtime 1.2\/\/EN\"\r\n\"http:\/\/xmlns.oracle.com\/ias\/dtds\/orion-application-client.dtd\">\r\n<orion-application-client>\r\n<resource-ref-mapping \r\n  name=\"jms\/QueueConnectionFactory\"\r\n  location=\"jms\/QueueConnectionFactory\"\/>\r\n\r\n<resource-env-ref-mapping \r\n  name=\"jms\/helloWorldQueue\"\r\n  location=\"jms\/helloWorldQueue\"\/>\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. Add User Exit Data Pump (u_gt) * Create a new data pump extract process and point to trail files. ADD EXTRACT u_gt, EXTTRAILSOURCE .\/dirdat\/gt Edit Data &hellip; <a href=\"https:\/\/jianmingli.com\/wp\/?p=1611\">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-1611","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-pZ","_links":{"self":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1611","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=1611"}],"version-history":[{"count":8,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1611\/revisions"}],"predecessor-version":[{"id":1944,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/1611\/revisions\/1944"}],"wp:attachment":[{"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jianmingli.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}