[jboss-user] [JNDI and Naming] - What is the exact correct way to make JBoss datasource JNDI

mattjiang do-not-reply at jboss.com
Sun Oct 4 10:05:27 EDT 2009


Hi All,

I saw many people got confused of configuring DataSource JNDI on JBoss, I saw two major example, but for me only one works.

I use Spring 2.5.6, Jboss 4.2.2GA, Sun JDK 1.5

Example 1:(works)

mysql-ds.xml

<?xml version="1.0"?>
  | <datasources>
  |   <local-tx-datasource>
  |     <jndi-name>jdbc/esoafds</jndi-name>
  |     <connection-url>jdbc:mysql://192.168.1.2:3306/jbranch?useUnicode=true&characterEncoding=UTF8&autoReconnect=true</connection-url>
  |     <driver-class>com.mysql.jdbc.Driver</driver-class>
  |     <user-name>root</user-name>
  |     <password></password>
  |     <min-pool-size>3</min-pool-size>
  |     <max-pool-size>100</max-pool-size>
  |     <use-java-context>false</use-java-context>
  |       <metadata>
  |          <type-mapping>mySQL</type-mapping>
  |       </metadata>
  |   </local-tx-datasource>
  | </datasources>

Spring applicationContext.xml
<jee:jndi-lookup id="dataSource" jndi-name="jdbc/esoafds" resource-ref="false" />

Above example, could someone advises me why I have to add <use-java-context>false</use-java-context> to make this config works?

Example 2:(It should work, but NOT)
mysql-ds.xml

<?xml version="1.0"?>
  | <datasources>
  |   <local-tx-datasource>
  |     <jndi-name>jdbc/esoafds</jndi-name>
  |     <connection-url>jdbc:mysql://192.168.1.2:3306/jbranch?useUnicode=true&characterEncoding=UTF8&autoReconnect=true</connection-url>
  |     <driver-class>com.mysql.jdbc.Driver</driver-class>
  |     <user-name>root</user-name>
  |     <password></password>
  |     <min-pool-size>3</min-pool-size>
  |     <max-pool-size>100</max-pool-size>
  |       <metadata>
  |          <type-mapping>mySQL</type-mapping>
  |       </metadata>
  |   </local-tx-datasource>
  | </datasources>
Please be aware that no "use-java-context" tag needed.

web.xml
<resource-ref>
  |     <description>Esoaf DataSource</description>
  |     <res-ref-name>jdbc/esoafds</res-ref-name>
  |     <res-type>javax.sql.DataSource</res-type>
  |     <res-auth>Container</res-auth>
  |   </resource-ref>

jboss-web.xml
<jboss-web>
  |   
  |   <resource-ref>
  | 	  <res-ref-name>jdbc/esoafds</res-ref-name>
  | 	  <jndi-name>java:jdbc/esoafds</jndi-name>
  |   </resource-ref>
  |   
  | </jboss-web>

Spring applicationContext.xml
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  |     <property name="jndiName" value="java:jdbc/esoafds"/>
  |   </bean>

Should I add "java:" before "jdbc/esoafds" or not?

The second example can find correct JNDI name from JBoss, but it returns null from JNDI look up.
Can any body give me a hint what's the concept difference between the two approaches? Why my example 1 works, but exmple 2 return null look up. 

Thanks a lot. 

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4258569#4258569

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4258569



More information about the jboss-user mailing list