6、配置JNDI DataSource
l JDNI配置因不同服务器而异,这里分别说明
(1) tomcat 5.5.17
l 在Tomcat的conf目录下的context.xml中追加:
<Resource name="MySqlDS" auth="Container"
type="javax.sql.DataSource" username="test" password="test"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test"
maxActive="8" maxIdle="4"/>
l 在Tomcat的conf目录下的web.xml中追加引用:
<resource-ref>
<description>
Resource reference to a factory for java.sql.Connection
instances that may be used for talking to a particular
database that is configured in the server.xml file.
</description>
<res-ref-name>
MySqlDS
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
(2) jboss- 4.0.3 SP1
l 将JBoss的/docs/examples/jca目录下的mysql-ds.xml复制到/server/deploy目录下,修改成下面的内容:
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/test</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>test</user-name>
<password>test</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->
<!-- sql to call on an existing pooled connection when it is obtained from pool
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
-->
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
(3) resin-pro- 3.0.18
l 在Resin的conf目录下的resin.conf中追加:
<database>
<jndi-name>MySqlDS</jndi-name>
<driver type="com.mysql.jdbc.Driver">
<url>jdbc:mysql://localhost:3306/test</url>
<user>test</user>
<password>test</password>
</driver>
<prepared-statement-cache-size>8</prepared-statement-cache-size>
<max-connections>20</max-connections>
<max-idle-time>30s</max-idle-time>
</database>
(4) 定义JDNI DataSource
<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>${jndi.name}</value>
</property>
</bean>
l 在samples.properties中追加:
# for tomcat & resin
jndi.name=java:comp/env/MySqlDS
# for jboss
#jndi.name=java:/MySqlDS
l 注意,Tomcat和Resin中JDNI名字是java:comp/env/[JndiName],而在JBoss中则为java: /[JndiName]
l 如果要使用JNDI DataSource,只要将struts-config.xml中的Bean文件名samples-ds.xml改为samples-jndi.xml即可
(5) JDBC驱动的位置
l APP/Web服务器启动时,创建JDBC JNDI资源对象时需要JDBC驱动,所以需要将JDBC驱动复制到相应的lib目录中:
Ø JBoss:[ROOT]/server/default/lib
Ø Tomcat:[ROOT]/common/lib
Ø Resin:[ROOT]/lib