🎄 Happy Holidays! 🥳
Most of Solace is closed December 24–January 1 so our employees can spend time with their families. We will re-open Thursday, January 2, 2024. Please expect slower response times during this period and open a support ticket for anything needing immediate assistance.
Happy Holidays!
Please note: most of Solace is closed December 25–January 2, and will re-open Tuesday, January 3, 2023.
ERROR : Data sync from oracle to solace with golden gate via jms handler
*Hi Experts,
I am new on solace and using oracle golden gate for bigdata JMS handler to sync message from oracle database to solace (docker)
I can receive message though the try me! module on topic topic/solace/q1
but after starting ogg replication process then met below can not found topic error
, please kindly help suggestion.*
my properties configuration
gg.handlerlist=oggjms #jndi setting java.naming.provider.url=smf://132.3.32.2:55555 java.naming.factory.initial=com.solacesystems.jndi.SolJNDIInitialContextFactory java.naming.security.principal=default@default java.naming.security.credentials=default #OGG JMS handler gg.handler.oggjms.type=jms gg.handler.oggjms.useJndi=true gg.handler.oggjms.destinationType=topic gg.handler.oggjms.destination=topic/solace/q1 gg.handler.oggjms.connectionFactory=/jms/cf/default gg.handler.oggjms.localTX=false gg.handler.oggjms.persistent=true gg.handler.oggjms.mode=op gg.handler.oggjms.format=json gg.log.level=debug gg.log=log4j gg.classpath=/home/opc/ogg4bd/soljmslib/*
error message
INFO: Channel Closed (smfclient 5) =ERROR 2021-04-20 08:35:51.000287 [main] - Problem sending JMS message via handler='oggjms javax.naming.NameNotFoundException: JNDI lookup of "topic/solace/q1" failed - not found at com.solacesystems.jndi.SolJNDIInitialContextFactory$SolJNDIInitialContextImpl.lookup(SolJNDIInitialContextFactory.java:241) ~[sol-jms-10.10.0.jar:?] at javax.naming.InitialContext.lookup(InitialContext.java:417) ~[?:1.8.0_192] at javax.naming.InitialContext.lookup(InitialContext.java:417) ~[?:1.8.0_192] at oracle.goldengate.messaging.JMSSender.getProducer(JMSSender.java:716) ~[ggjms-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.messaging.JMSSender.sendTextMessage(JMSSender.java:550) ~[ggjms-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.send(JMSNgFormattedHandler.java:931) [ggjms-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.deliver(JMSNgFormattedHandler.java:824) [ggjms-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.messaging.handler.JMSNgFormattedHandler$RetryDelivery.action(JMSNgFormattedHandler.java:816) [ggjms-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.util.retry.RetryAction.execute(RetryAction.java:49) [ggutil-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.deliverMessage(JMSNgFormattedHandler.java:786) [ggjms-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.operationAdded(JMSNgFormattedHandler.java:729) [ggjms-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.datasource.DsEventManager$4.send(DsEventManager.java:450) [ggdbutil-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.datasource.DsEventManager.distributeEvent(DsEventManager.java:115) [ggdbutil-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.datasource.DsEventManager.fireOperationAdded(DsEventManager.java:459) [ggdbutil-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.datasource.AbstractDataSource.fireOperationAdded(AbstractDataSource.java:482) [ggdbutil-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.datasource.UserExitDataSource.addOperationToTransactionAndFireEvent(UserExitDataSource.java:2329) [ggdbutil-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.datasource.UserExitDataSource.createOperation(UserExitDataSource.java:1636) [ggdbutil-19.1.0.0.5.007.jar:19.1.0.0.5.007] at oracle.goldengate.datasource.UserExitDataSource.createOperation(UserExitDataSource.java:1393) [ggdbutil-19.1.0.0.5.007.jar:19.1.0.0.5.007] =ERROR 2021-04-20 08:35:51.000288 [main] - JMSNgHandler faild with exception oracle.goldengate.util.GGException: Exception while attempting to deliver message: JNDI lookup of "topic/solace/q1" failed - not found Apr 20, 2021 8:35:51 AM com.solacesystems.jndi.SolJNDIInitialContextFactory list SEVERE: list is not supported java.lang.Exception at com.solacesystems.jndi.SolJNDIInitialContextFactory$SolJNDIInitialContextImpl.list(SolJNDIInitialContextFactory.java:394) at javax.naming.InitialContext.list(InitialContext.java:461) at javax.naming.InitialContext.list(InitialContext.java:461) at oracle.goldengate.messaging.JMSSender.printInitialContext(JMSSender.java:427) at oracle.goldengate.messaging.JMSSender.getInitialContext(JMSSender.java:285) at oracle.goldengate.messaging.JMSSender.initialize(JMSSender.java:407) at oracle.goldengate.messaging.JMSSender.getTextMessage(JMSSender.java:506)
Best Answer
-
You need to add your Topic to the JNDI registry as JMS doesn't know how to find the endpoint without looking it up.
The following should help:
https://docs.solace.com/Configuring-and-Managing/Managing-Solace-JNDI-Objects.htm#mc-main-content
0
Answers
-
You need to add your Topic to the JNDI registry as JMS doesn't know how to find the endpoint without looking it up.
The following should help:
https://docs.solace.com/Configuring-and-Managing/Managing-Solace-JNDI-Objects.htm#mc-main-content
0 -
There also seems to be an option to avoid JNDI lookups in the Oracle GG JMS adapter ... that may mean you can avoid setting up the JNDI entries -
gg.handler.name.useJndi
"Set to false, then JNDI is not used to configure the JMS client. Instead, factories and connections are explicitly constructed."
0 -
thanks @amackenzie @swenhelge
the "can not found topic error" has be fixed after configure JNDI registry and solace can receive message from ogg. and keepgg.handler.oggjms.useJndi=true
but another error "SEVERE: list is not supported" still there. what cause this issue and how to fix it . though this not impact push message so farApr 21, 2021 9:27:14 AM com.solacesystems.jndi.SolJNDIInitialContextFactory list SEVERE: list is not supported java.lang.Exception at com.solacesystems.jndi.SolJNDIInitialContextFactory$SolJNDIInitialContextImpl.list(SolJNDIInitialContextFactory.java:394) at javax.naming.InitialContext.list(InitialContext.java:461) at javax.naming.InitialContext.list(InitialContext.java:461) at oracle.goldengate.messaging.JMSSender.printInitialContext(JMSSender.java:427) at oracle.goldengate.messaging.JMSSender.getInitialContext(JMSSender.java:285) at oracle.goldengate.messaging.JMSSender.initialize(JMSSender.java:407) at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.initJmsSender(JMSNgFormattedHandler.java:945) at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.init(JMSNgFormattedHandler.java:651) at oracle.goldengate.datasource.AbstractDataSource.addDataSourceListener(AbstractDataSource.java:592) at oracle.goldengate.datasource.factory.DataSourceFactory.getDataSource(DataSourceFactory.java:161) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)
0 -
thanks @amackenzie @swenhelge
the "can not found topic error" has be fixed after configure JNDI registry and solace can receive message from ogg. and keepgg.handler.oggjms.useJndi=true
but another error "SEVERE: list is not supported" still there. what cause this issue and how to fix it . though this not impact push message so farApr 21, 2021 9:27:14 AM com.solacesystems.jndi.SolJNDIInitialContextFactory list SEVERE: list is not supported java.lang.Exception at com.solacesystems.jndi.SolJNDIInitialContextFactory$SolJNDIInitialContextImpl.list(SolJNDIInitialContextFactory.java:394) at javax.naming.InitialContext.list(InitialContext.java:461) at javax.naming.InitialContext.list(InitialContext.java:461) at oracle.goldengate.messaging.JMSSender.printInitialContext(JMSSender.java:427) at oracle.goldengate.messaging.JMSSender.getInitialContext(JMSSender.java:285) at oracle.goldengate.messaging.JMSSender.initialize(JMSSender.java:407) at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.initJmsSender(JMSNgFormattedHandler.java:945) at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.init(JMSNgFormattedHandler.java:651) at oracle.goldengate.datasource.AbstractDataSource.addDataSourceListener(AbstractDataSource.java:592) at oracle.goldengate.datasource.factory.DataSourceFactory.getDataSource(DataSourceFactory.java:161) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBea nFactory.java:1178) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.ja va:1072) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511 ) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1080) at oracle.goldengate.datasource.DataSourceLauncher.<init>(DataSourceLauncher.java:168) at oracle.goldengate.datasource.UserExitMain.main(UserExitMain.java:124)
0 -
thanks @amackenzie @swenhelge
the "can not found topic error" has be fixed after configure JNDI registry and solace can receive message from ogg. and keepgg.handler.oggjms.useJndi=true
but another error "SEVERE: list is not supported" still there. what cause this issue and how to fix it . though this not impact push message so farApr 21, 2021 9:27:14 AM com.solacesystems.jndi.SolJNDIInitialContextFactory list SEVERE: list is not supported java.lang.Exception at com.solacesystems.jndi.SolJNDIInitialContextFactory$SolJNDIInitialContextImpl.list(SolJNDIInitialContextFactory.java:394) at javax.naming.InitialContext.list(InitialContext.java:461) at javax.naming.InitialContext.list(InitialContext.java:461) at oracle.goldengate.messaging.JMSSender.printInitialContext(JMSSender.java:427) at oracle.goldengate.messaging.JMSSender.getInitialContext(JMSSender.java:285) at oracle.goldengate.messaging.JMSSender.initialize(JMSSender.java:407) at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.initJmsSender(JMSNgFormattedHandler.java:945) at oracle.goldengate.messaging.handler.JMSNgFormattedHandler.init(JMSNgFormattedHandler.java:651) at oracle.goldengate.datasource.AbstractDataSource.addDataSourceListener(AbstractDataSource.java:592) at oracle.goldengate.datasource.factory.DataSourceFactory.getDataSource(DataSourceFactory.java:161) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBea nFactory.java:1178) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.ja va:1072) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511 ) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1080) at oracle.goldengate.datasource.DataSourceLauncher.<init>(DataSourceLauncher.java:168) at oracle.goldengate.datasource.UserExitMain.main(UserExitMain.java:124)
0 -
Hi. I am looking into this exception but it looks to me like there is a JNDI API (list()) that we don't support and throw when we see it. The JNDI built into the Solace broker is tuned to the needs of using messaging on the brokers. Not all JNDI features may be implemented.
In looking at this method from the JNDI spec, I wonder why Oracle GG needs to list all classes from the registry anyway. The JMSSender.printInitialContext() seems to be the culprit. I am not sure why it would need a list of classes when you have already told it what Topic is being published to in the config.
I will update this thread when I get feedback from our dev team but it looks like it's working for you and this is only an issue for your logs.
0 -
Hi @amackenzie thanks for update.
I am referencing this oracle doc Using the Java Message Service Handler .BTW I also tried ActiveMQ with OGG JMS handler there is no such similar error.0