日期:2014-05-20  浏览次数:20823 次

关于JNDI的问题
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:/MySqlDS</value>
</property>
</bean>
不明白这里的<property name="jndiName">
<value>java:/MySqlDS</value>
是什么意思? java:/MySqlDS 指的是什么?

 2.参考如下:
12.2.2. 在Spring容器中创建 SessionFactory
为了避免硬编码的资源查找与应用程序对象紧密耦合,Spring允许你在Spring容器中以bean的方式定义诸如JDBC DataSource或者Hibernate SessionFactory 的数据访问资源。任何需要进行资源访问的应用程序对象只需要持有这些事先定义好的实例的引用(DAO定义在下一章节介绍),下面的代码演示如何创建一个JDBC DataSource 和Hibernate SessionFactory 

<beans>

  <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
  <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
  <property name="url" value="jdbc:hsqldb:hsql://localhost:9001"/>
  <property name="username" value="sa"/>
  <property name="password" value=""/>
  </bean>

  <bean id="mySessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource" ref="myDataSource"/>
  <property name="mappingResources">
  <list>
  <value>product.hbm.xml</value>
  </list>
  </property>
  <property name="hibernateProperties">
  <value>
  hibernate.dialect=org.hibernate.dialect.HSQLDialect
  </value>
  </property>
  </bean>

</beans>
将一个本地定义的,如Jakarta Commons DBCP的 BasicDataSource 切换为一个JNDI定位的DataSource(通常由应用程序服务器管理),仅仅需要改变配置:

<beans>

  <bean id="myDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
  <property name="jndiName" value="java:comp/env/jdbc/myds"/>
  </bean>

</beans>
通过使用Spring的 JndiObjectFactoryBean 来暴露和获,你也可以访问一个JNDI定位的Hibernate SessionFactory。 当然,如果在EJB上下文之外,这是不必要的。


------解决方案--------------------
这个是在web容器里面配置的jndi数据源,也就是说在jboss的deploy下 有***-ds.xml结尾的文件 是配置数据链接的

CSDN 小秘书
http://blog.csdn.net/whowhen21

------解决方案--------------------
同lz,web容器中数据源的名称
------解决方案--------------------
Server.xml
部署工程后会有context,Resource就是配置dataSource,name="jsp",就是通过jndi来获取数据源的名字
<Context docBase="Test" path="/Test" reloadable="true" source="org.eclipse.jst.jee.server:Test">
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100" maxIdle="30" maxWait="10000" name="jsp" password="123" type="javax.sql.DataSource" url="jdbc:mysql://localhost:3306/jsp" username="root"/>
</Context>