[JAVA-2997] JNDI LOOK UP ISSUE Created: 28/Sep/18  Updated: 11/Sep/19  Resolved: 28/Sep/18

Status: Closed
Project: Java Driver
Component/s: None
Affects Version/s: 3.8.1
Fix Version/s: None

Type: Task Priority: Major - P3
Reporter: KIMCHOONGHWAN Assignee: Unassigned
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified
Environment:

tomcat8.5 / spring version 5.0.5.RELEASE



 Description   

error comment 

 j*ava.lang.IllegalArgumentException: The local resource link [mongodb/MyMongoClient"] that refers to global resource [mongodb/MyMongoClient"] was expected to return an instance of [com.mongodb.MongoClient] but returned an instance of [com.mongodb.MongoClient]java.lang.IllegalArgumentException: The local resource link [mongodb/MyMongoClient"] that refers to global resource [mongodb/MyMongoClient"] was expected to return an instance of [com.mongodb.MongoClient] but returned an instance of [com.mongodb.MongoClient] at* org.apache.naming.factory.ResourceLinkFactory.getObjectInstance(ResourceLinkFactory.java:163) at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321) at org.apache.naming.NamingContext.lookup(NamingContext.java:840) at org.apache.naming.NamingContext.lookup(NamingContext.java:173) at com.wjthinkbig.bookclub.ugc.config.MongoConfig.mongoDbFactory(MongoConfig.java:90) at com.wjthinkbig.bookclub.ugc.config.MongoConfig$$EnhancerBySpringCGLIB$$7b5e8cdc.CGLIB$mongoDbFactory$1(<generated>) at com.wjthinkbig.bookclub.ugc.config.MongoConfig$$EnhancerBySpringCGLIB$$7b5e8cdc$$FastClassBySpringCGLIB$$270bed08.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) at com.wjthinkbig.bookclub.ugc.config.MongoConfig$$EnhancerBySpringCGLIB$$7b5e8cdc.mongoDbFactory(<generated>) 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:154) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:582) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.resolveBeanReference(ConfigurationClassEnhancer.java:392) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:364) at com.wjthinkbig.bookclub.ugc.config.MongoConfig$$EnhancerBySpringCGLIB$$7b5e8cdc.mongoDbFactory(<generated>) at com.wjthinkbig.bookclub.ugc.config.MongoConfig.mongoTemplate(MongoConfig.java:129) at com.wjthinkbig.bookclub.ugc.config.MongoConfig$$EnhancerBySpringCGLIB$$7b5e8cdc.CGLIB$mongoTemplate$0(<generated>) at com.wjthinkbig.bookclub.ugc.config.MongoConfig$$EnhancerBySpringCGLIB$$7b5e8cdc$$FastClassBySpringCGLIB$$270bed08.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:361) at com.wjthinkbig.bookclub.ugc.config.MongoConfig$$EnhancerBySpringCGLIB$$7b5e8cdc.mongoTemplate(<generated>) 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:154) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:582) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1247) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1096) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1135) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:91) at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:372) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1341) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:572) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:409) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:291) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4743) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5207)

-------------------------------------------------------------------------

 MY JOB STEP 

 

step1.   tomcat lib folder add >>  mongo-java-driver-3.6.4.jar

-------------------------------------------------------------------------

step2.  tomcat server.xml  add tag 

        <GlobalNamingResources>            

               <Resource name="mongodb/MyMongoClient" auth="Container"           type="com.mongodb.MongoClient" closeMethod="close" factory="com.mongodb.client.jndi.MongoClientFactory" singleton="true" connectionString="mongodb://localhost"/>

     </GlobalNamingResources>            

{{}}

-------------------------------------------------------------------------{{}}

step3.  tomcat context.xml  add tag 

  <ResourceLink name="mongodb/MyMongoClient"" global="mongodb/MyMongoClient"" type="com.mongodb.MongoClient" /> 

 

-------------------------------------------------------------------------

step4. java source in 

  try { try

{  Context initContext = new InitialContext(); Context envContext = (Context)initContext.lookup("java:/comp/env"); Object obj123 = envContext.lookup("mongodb/MyMongoClient"); }

catch (Exception e)

{ e.printStackTrace(); }

----------------------

why mongoclient instance of cast error ? 

 

 

 

 



 Comments   
Comment by Jeffrey Yemin [ 28/Sep/18 ]

That is more of a Spring Data question than a driver question.  You may be able to get help at https://spring.io/questions.

 

Comment by KIMCHOONGHWAN [ 28/Sep/18 ]

Jeff Yemin!!  

1 more qas ! 

Jndi get MongoClient Class .   but i want MongoTemplate Class..

-----------------------------------------------------
@Bean
public MongoDbFactory mongoDbFactory() throws Exception {

MongoClient mongoClient = null;
try {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
Object obj123 = envContext.lookup("mongodb/MyMongoClient");


if ( obj123 instanceof com.mongodb.MongoClient ) {

          mongoClient = (com.mongodb.MongoClient) obj123;

 

       // QAS >> new SimpleMongoDbFactory (mongoClient, ??? ) 

       //  ??? is dbName ...    where is get ???

          return new  SimpleMongoDbFactory(mongoClient, daName);

{color:#de350b}}

}catch (Exception e)

{ System.out.println("###################################### EEEEEEEEEEEEEEEEEE"); e.printStackTrace(); }

return null;
}
-------------------------------

@Bean
public MongoTemplate mongoTemplate() throws Exception {
if ( MongoTemplate == null )

{ final MongoDbFactory _MongoDbFactory = mongoDbFactory(); final DbRefResolver _dbRefResolver = new DefaultDbRefResolver(_MongoDbFactory); final MongoMappingContext _MongoMappingContext = new MongoMappingContext(); final MappingMongoConverter _converter = new MappingMongoConverter(_dbRefResolver, _MongoMappingContext); _converter.setTypeMapper(new DefaultMongoTypeMapper(null)); MongoTemplate = new MongoTemplate(_MongoDbFactory, _converter); }

return MongoTemplate;
}

 

 

red Bold Qas Write!! 

 

Thank! 

 

 

Comment by KIMCHOONGHWAN [ 28/Sep/18 ]

thank~    driver lib is two way import~!!Unable to render embedded object: File (    webApplication pom depency scope setting "provided"  solved) not found.

 

 

Comment by Jeffrey Yemin [ 28/Sep/18 ]

This is almost certainly a class loader issue.  The only way two classes with the same name can be unequal is if they were loaded from different class loaders.

 

How is your application packaged?  If it's an .ear or .war file,  does that file contain the driver?  If so, try removing it so that the class is loaded from the server's lib directory.

Generated at Thu Feb 08 08:58:33 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.