Spring配置JNDI(WebLogic92)NameNotFoundException: Unable to resolve解决

来源:互联网 发布:贵人大数据区块链骗局 编辑:程序博客网 时间:2024/06/06 14:04
请参见: 
Struts2.2+Spring3.1+Hibernate3.6整合(登录示例) 
http://liuzidong.iteye.com/blog/935493 
在这个示例作了修改! 
参考资料 
1 spring通过weblogic配置的jndi实现数据库操作 
http://mariosissy.blogbus.com/logs/48042786.html 
2 Spring - Weblogic - Hibernate datasource problem 
http://forum.springsource.org/showthread.php?t=37872 
一 环境:XP+Myeclipse6.6+WebLogic92+JDK1.5 
二 具体步骤如下: 
jdbc.properties:注意事项:配置的端口:7002是WEBLOGIC服务器创建域是设置的端口 
Java代码  收藏代码
  1. ## JNDI Datasource  
  2. Context.INITIAL_CONTEXT_FACTORY=weblogic.jndi.WLInitialContextFactory  
  3. Context.PROVIDER_URL=t3://127.0.0.1:7002  
  4. JNDI=s2sh  
  5. RESOURCEREF=true  
  6. #如果你不想使用 'java:comp/env/'前缀的话请设置下面的值为true, 默认值为false  
  7. #JNDI=java:comp/env/s2sh  
  8. #RESOURCEREF=false  

bean.xml中配置: 
Xml代码  收藏代码
  1. <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">     
  2.         <property name="jndiName">  
  3.             <value>${JNDI}</value>  
  4.         </property>    
  5.         <property name="resourceRef">  
  6.             <value>${RESOURCEREF}</value>  
  7.         </property>         
  8.         <property name="jndiEnvironment">   
  9.          <props>   
  10.             <prop key="java.naming.provider.url">${Context.PROVIDER_URL}</prop>   
  11.             <prop key="java.naming.factory.initial">${Context.INITIAL_CONTEXT_FACTORY}</prop>            
  12.          </props>      
  13.        </property>    
  14. </bean>  

web.xml 
Xml代码  收藏代码
  1. <resource-ref>   
  2.       <description>s2sh</description>   
  3.       <res-ref-name>s2sh</res-ref-name>   
  4.       <res-type>javax.sql.DataSource</res-type>   
  5.       <res-auth>Container</res-auth>   
  6. </resource-ref>   

位置:WEB-INF/weblogic.xml 
Xml代码  收藏代码
  1. <?xml version='1.0' encoding='utf-8'?>   
  2. <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">   
  3.     <container-descriptor>  
  4.         <prefer-web-inf-classes>true</prefer-web-inf-classes>         
  5.     </container-descriptor>  
  6.     <context-root>/</context-root>  
  7.     <resource-description>      
  8.         <res-ref-name>s2sh</res-ref-name>      
  9.         <jndi-name>s2sh</jndi-name>  
  10.   </resource-description>   
  11. </weblogic-web-app>  

注意其中的配置很重要!: 
<resource-description>    
    <res-ref-name>s2sh</res-ref-name>    
    <jndi-name>s2sh</jndi-name> 
  </resource-description>
 
不配置会出现错误: 

<2011-3-15 下午01时54分31秒 CST> <Warning> <HTTP> <BEA-101162> <User defined listener org.springframework.web.context.ContextLoaderListener failed: 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': Injection of resource dependencies failed; nested exception is 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in URL 

[file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 

'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL 

[file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'dataSource' while setting bean property 

'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in URL 

[file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is 

javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc' [Root exception is javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc']; 

remaining name 'oracle'. 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': Injection of resource dependencies failed; nested exception is 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in URL 

[file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 

'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL 

[file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'dataSource' while setting bean property 

'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in URL 

[file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is 

javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc' [Root exception is javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc']; 

remaining name 'oracle' 
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:300)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
Truncated. see log file for complete stacktrace 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in URL 

[file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 

'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL 

[file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'dataSource' while setting bean property 

'dataSource'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in URL 

[file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is 

javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc' [Root exception is javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc']; 

remaining name 'oracle' 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
Truncated. see log file for complete stacktrace 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in URL [file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB 

-INF/classes/applicationContext.xml]: Cannot resolve reference to bean 'dataSource' while setting bean property 'dataSource'; nested exception is 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in URL [file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB- 

INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc' [Root exception is 

javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc']; remaining name 'oracle' 
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
Truncated. see log file for complete stacktrace 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in URL [file:/E:/bea/user_projects/domains/s2shdomain/autodeploy/S2SHJNDI/WEB- 

INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc' [Root exception is 

javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc']; remaining name 'oracle' 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1420)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
Truncated. see log file for complete stacktrace 
javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc' [Root exception is javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc']; 

remaining name 'oracle' 
at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:195) 
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:338) 
at weblogic.rmi.cluster.ClusterableRemoteRef.invoke(ClusterableRemoteRef.java:252) 
at weblogic.jndi.internal.ServerNamingNode_920_WLStub.lookup(Unknown Source) 
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:374) 
Truncated. see log file for complete stacktrace 
javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc' 
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139) 
at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:252) 
at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:178) 
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206) 
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214) 
Truncated. see log file for complete stacktrace 

<2011-3-15 下午01时54分31秒 CST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application '_appsdir_S2SHJNDI_dir'. 
weblogic.application.ModuleException: 
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:894) 
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:336) 
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:204) 
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:26) 
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:60) 
Truncated. see log file for complete stacktrace 
javax.naming.NameNotFoundException: Unable to resolve 'jdbc.oracle'. Resolved 'jdbc' 
at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139) 
at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:252) 
at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:178) 
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206) 
at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214) 
Truncated. see log file for complete stacktrace 



另外在WebLogic中创建域请参考以下: 
图解Weblogic92域创建及与Myeclipse服务配置 
http://liuzidong.iteye.com/blog/929740 
另外在WEB-INF/lib下加入weblogic.jar文件 

以下是各种应用服务器的不同的properties集合: 
Java代码  收藏代码
  1. websphere:   
  2. java.naming.provider.url->iiop://websphere.machine.domain.com:900   
  3. java.naming.factory.initial ->com.ibm.websphere.naming.WsnInitialContextFactory   
  4. java.naming.factory.url.pkgs ->com.ibm.ws.naming   
  5. org.omg.CORBA.ORBClass->com.ibm.rmi.iiop.ORB   
  6. org.omg.CORBA.ORBSingletonClass->com.ibm.rmi.corba.ORBSingleton   
  7. javax.rmi.CORBA.UtilClass->com.ibm.rmi.javax.rmi.CORBA.Util   
  8. javax.rmi.CORBA.StubClass->com.ibm.rmi.javax.rmi.CORBA.StubDelegateImpl   
  9. javax.rmi.CORBA.PortableRemoteObjectClass->com.ibm.rmi.javax.rmi.PortableRemoteObject   
  10.   
  11. weblogic:   
  12. java.naming.factory.initial -> weblogic.jndi.WLInitialContextFactory   
  13. java.naming.provider.url -> t3://localhost:7001   
  14.   
  15. jboss:   
  16. ava.naming.factory.initial ->org.jnp.interfaces.NamingContextFactory   
  17. java.naming.factory.url.pkgs->org.jboss.naming.client   
  18. java.naming.provider.url ->jnp://10.0.0.18:1099   
  19.   
  20. sunone IMQ ldap:   
  21. java.naming.provider.url -> ldap://localhost:389/dc=yusong,dc=com   
  22. java.naming.factory.initial -> com.sun.jndi.ldap.LdapCtxFactory   
  23.   
  24. sunone Application Server:   
  25. java.naming.provider.url -> iiop://192.168.0.34:3700   
  26. java.naming.factory.initial -> com.sun.jndi.cosnaming.CNCtxFactory   
  27.   
  28. oracle oc4j:   
  29. java.naming.factory.initial->com.evermind.server.ApplicationClientInitialContextFactory   
  30. java.naming.provider.url->ormi://localhost/bmpapp  
0 0
原创粉丝点击