Spring 2 和 JPA 简介(9)

为 Spring 2 准备 Tomcat

在可以向 Tomcat 成功部署 dwspring.war 文件之前,需要进行一些服务器设置。

在这一节执行的主要过程有:

1. 把 Spring 2 类装入器添加到 Tomcat
2. 把 Spring 2 上下文装入器侦听器添加到 Tomcat
3. 把 DB2 JDBC 驱动程序复制到 Tomcat
4. 为 Tomcat 配置 JNDI DB2 数据源

把 Spring 2 类装入器添加到 Tomcat 服务器

当 Spring JPA 应用程序在 Tomcat 上运行时,要让 JPA 支持正常工作,需要在类装入期间进行字节码“连接”。来自 Tomcat 的标准类装入器不支持这个。需要用特定于 Spring 的类装入器实现这个功能。

要把这个特定于 Spring 的类装入器安装到 Tomcat 服务器,首先要把 spring-tomcat-weaver.jar 拷贝到 Tomcat 的 server/lib 子目录。这个目录包含的库属于 Tomcat 服务器私有。可以在 Spring 2.0 下载的 dist/weaver 目录下找到 spring-tomcat-weaver.jar 库。

接下来,必须让 Tomcat 知道对于示例应用程序,应当替换标准类装入器。可以在 WAR 文件的 META-INF/context.xml 文件中指定这点。清单 25 中的粗体代码配置类装入器:

清单 25. 在 META-INF/context.xml 文件中配置类装入器
<Context>
   <Loader loaderClass="org.springframework.instrument.
   classloading.tomcat.TomcatInstrumentableClassLoader"/>
   ...

</Context>



把 Spring 2 的上下文装入器侦听器添加到 Tomcat

Spring 2 要求挂接到 Tomcat 的上下文装入管道。可以在 WAR 文件的 WEB-INF/web.xml 文件添加以下行进行这个配置:

   <listener>
   <listener-class>
   org.springframework.web.context.ContextLoaderListener
   </listener-class>
   </listener>



在 web.xml 文件中,这必须在 <servlet> 和 <servlet-mapping> 定义之前。


把 DB2 JDBC 驱动程序拷贝到 Tomcat 服务器

Tomcat 是 Web 层容器,所以能够管理自己的数据库连接,也能做连接池。数据库源由 Tomcat 管理,可以通过标准的 Java 命名和目录接口(JNDI)查询机制访问。员工系统在 Tomcat 内作为 Web 应用程序运行,应当通过 Tomcat 的 JNDI 得到数据源。

要让 Tomcat 在 Web 应用程序部署期间找到 JDBC 驱动程序,需要把 JAR 文件拷贝到 Tomcat 的系统库目录。在启动 Tomcat 服务器之前,请把两个 JDBC 驱动程序 JAR 文件从 DB2 发布拷贝到 Tomcat 的 common\lib 目录。这两个文件的名称是 db2cc.jar 和 db2cc_licence_cu.jar。

放在 common\lib 目录中的库可以供 Tomcat 服务器和 Web 应用程序共同使用。

在 Tomcat 5 上配置 DB2 数据源管理和 JNDI

可以把一个应用程序可以访问的 DB2 数据源配置成 Web 应用程序上下文的 JNDI 资源。方法是把清单 26 中突出的代码放在自己 WAR 的 META-INF/context.xml 文件中:

清单 26. 在 META-INF/context.xml 中配置 JNDI 资源


<Context>
    ...
    <Resource name="jdbc/dwspring2" auth="Container" type="javax.sql.DataSource"
               maxActive="100" maxIdle="30" maxWait="10000"
               username="bill" 
               password="lotus123" driverClassName="com.ibm.db2.jcc.DB2Driver"
               url="jdbc:db2://192.168.23.36:50000/dwspring"/>

</Context>



需要替换清单 26 中的 DB2 Express-C 服务器主机、用户名和口令,反映自己的 DB2 Express-C 安装情况。

清单 27 的配置通过名称 java:comp/env/jdbc/dwspring2 提供了 JNDI 数据源。

还必须向部署描述符 web.xml 文件添加资源引用。请把这个 <resource-ref> 元素添加到 web.xml 文件的末尾,如清单 27 所示:

清单 27. 添加数据源的 JNDI 资源引用


...
  <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/dwspring2</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
  </resource-ref>




清单 27 的配置使得可以在 Web 应用程序中使用容器 JDBC 管理的数据源。
2008-03-05_124848.gif
快乐渡过每一天,减肥坚持每一天