JNDI实现返回null

时间:2016-03-22 11:15:14

标签: java spring jboss jndi

我面临一个奇怪的问题。 我正在使用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内容

&#13;
&#13;
<?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;
&#13;
&#13;

每件事情都配置正确为什么,因为有些时候它有效,有些时候没有,相信我。 一段时间没有任何改变它有效,有些时候它没有。

这就是为什么我很困惑为什么我要面对这个问题,

这个问题的可能原因是什么?如何解决?

更新1:

让我提出我的web.xmljboss-web.xmlcontext-datasource.xml内容

web.xml

&#13;
&#13;
<?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;
&#13;
&#13;

jboss-web.xml

&#13;
&#13;
<?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;
&#13;
&#13;

context-datasource.xml

&#13;
&#13;
	<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;
&#13;
&#13;

一切看起来都不错,但我不知道什么是错的,为什么,我收到了上述错误。

1 个答案:

答案 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>