|
3、Spring与WebSphere应用服务器的配合 Spring与底层J2EE应用服务器还是存在一些需要结合的地方,这里给出WAS中的一些结合点。 3.1 使用WAS数据源 在Java应用程序中,数据库的连接一般有两种方式来得到。一种是通齤ava.sql.DriverManager的方式来得到数据库连接。这种方式不依赖于应用服务的支持,但是也不提供数据库连接池的功能。另外一种方式是通过javax.sql.DataSource的方式来得到数据库连接。在传统基于J2EE的应用需要通过JNDI来得到数据源(javax.sql.DataSource)对象,然后再通过数据源来得到相应的数据库连接。常见的应用服务器都支持这种方式,且一般都提供了数据库连接池的支持。虽然说我们一般推荐使用数据库连接池,但是也有一些时候我们需要脱离开应用服务器的环境使用数据库(比如单元测试,比如应用移植等)。然而应用程序使用这两种方式的时候代码是不一样的,因此只能通过代码来应变。Spring提供了一个统一使用数据源的解决方案,然后通过控制反转的机制用外部配置文件来指定使用的数据源。这样一方面可以统一这两种得到数据库连接的方式,另一方面也不需要像通常的J2EE应用通过繁琐的JNDI代码来得到数据源。这样应用程序也就不需要知道使用的何种数据源。 Spring提供了一个DriverManagerDataSource类来统一第一种方式的数据源获取。如果使用WAS中的Cloudscape数据库,用外部配置文件可配置如下: <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName"><value>com.ibm.db2j.jdbc.DB2jDriver</value></property><property name="url"><value>jdbc:db2j:D:\\DBName</value></property></bean>
<bean id="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName"><value>java:comp/env/jdbc/MyDB</value></property></bean>
<bean id="dataSource"class="org.springframework.jndi.JndiObjectFactoryBean"><property name="jndiName"><value>jdbc/MyDB</value></property><property name="resourceRef"><value>true</value></property></bean>
从上面配置我们可以得知,通过使用Spring,应用程序能够统一使用不同的数据源实现。如果使用环境发生变化,那么只需要修改Spring的配置文件即可。对于部署在WAS上的Web应用,在生产环境中推荐使用WAS实现的数据库连接池。一方面是因为连接池实现地比较完善。另一方面,使用WAS提供的数据库连接池可以很完善地支持JTA事务。 |