我面临一个奇怪的问题。 我正在使用spring进行maven-web应用程序。 我收到此错误
javax.naming.NameNotFoundException:带有的JNDI对象 找不到[java:/ varun]:JNDI实现返回null
Bellow是我的context-datasource.xml
,其中JNDI
已定义。
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:/varun"/>
</bean>
Bellow是我datasource-ds.xml
目录中的jboss-5.1.0.GA\server\default\deploy
内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<datasources>
<local-tx-datasource>
<jndi-name>varun</jndi-name>
<driver-class>oracle.jdbc.OracleDriver</driver-class>
<connection-url>jdbc:oracle:thin:@IP:sid</connection-url>
<user-name>userName</user-name>
<password>password</password>
<min-pool-size>25</min-pool-size>
<max-pool-size>100</max-pool-size>
<autoReconnect>true</autoReconnect>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
</local-tx-datasource>
</datasources>
&#13;
每件事情都配置正确为什么,因为有些时候它有效,有些时候没有,相信我。 一段时间没有任何改变它有效,有些时候它没有。
这就是为什么我很困惑为什么我要面对这个问题,
这个问题的可能原因是什么?如何解决?
更新1:
让我提出我的web.xml
,jboss-web.xml
和context-datasource.xml
内容
web.xml
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextClass</param-name>
<param-value>com.javaetmoi.core.spring.JBoss5XmlWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring-batch-context.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>MainController</servlet-name>
<display-name>MainController</display-name>
<servlet-class>com.globalss.dnb.monitor.job.controller.MainController</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>MainController</servlet-name>
<url-pattern>/MainController/StartBatch</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>MainController</servlet-name>
<url-pattern>/MainController/StopBatch</url-pattern>
</servlet-mapping>
<resource-ref>
<description>WebApp DataSource</description>
<res-ref-name>varun</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
&#13;
jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
org.myapp:loader=myWebApp.war
<loader-repository-config>java2ParentDelegation=false
</loader-repository-config>
</loader-repository>
</class-loading>
<resource-ref>
<res-ref-name>varun</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:/varun</jndi-name>
</resource-ref>
</jboss-web>
&#13;
context-datasource.xml
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:/varun"/>
</bean>
<!-- <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/varun"/>
</bean> -->
&#13;
一切看起来都不错,但我不知道什么是错的,为什么,我收到了上述错误。
答案 0 :(得分:0)
web.xml
您应该将以下内容添加到您的web.xml中。
<resource-ref>
<res-ref-name>varun</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
然后,您必须在WEB-INF文件夹下创建jboss-web.xml。
jboss-web.xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<resource-ref>
<res-ref-name>varun</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<jndi-name>java:/varun</jndi-name>
</resource-ref>
</jboss-web>
将数据源bean 更改为:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/varun"/>
</bean>