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)
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.”
thanks @amackenzie@swenhelge
the “can not found topic error” has be fixed after configure JNDI registry and solace can receive message from ogg. and keep gg.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 far
Apr 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)
thanks @amackenzie@swenhelge
the “can not found topic error” has be fixed after configure JNDI registry and solace can receive message from ogg. and keep gg.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 far
Apr 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)
thanks @amackenzie@swenhelge
the “can not found topic error” has be fixed after configure JNDI registry and solace can receive message from ogg. and keep gg.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 far
Apr 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)
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.