tomcat6配置java项目启动动态加载配置文件

来源:互联网 发布:手机如何永久删除数据 编辑:程序博客网 时间:2024/06/05 10:33

 

加大myeclispe 下面jdk内存 配置    -Xms64m -Xmx512m

 

<Context className="org.apache.catalina.core.StandardContext"
   cachingAllowed="true"
   charsetMapperClass="org.apache.catalina.util.CharsetMapper"
   cookies="true"
   crossContext="false"
   debug="0"
   displayName="phy"
   path="/phy"
   docBase="E:\Workspaces\dcp_bi\src\main\webapp"
   mapperClass="org.apache.catalina.core.StandardContextMapper"
   privileged="false"
   reloadable="false"
   swallowOutput="false"
   useNaming="true" 
   wrapperClass="org.apache.catalina.core.StandardWrapper">
         <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_btcweb_boz_log." suffix=".txt" timestamp="true"/>

 

</Context>

 

----------------------------JNDI配置一个项目-----------------------------

Spring 配置JNDI 

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

 

经过3个多小时的努力,配置JNDI数据源(主要是通过DBCP连接池)终于搞定~
还是Tomcat官方的说明好,不过全是英文的,大概还看得懂.
百度上那么花花绿绿的太多了,一个也没成功!...
本例使用的数据库为Ms SQL Server 2000,对于其它数据库只是修改一下相应的参数即可,
服务器是Tomcat5.5, 与之间的版本配置连接池最简便
自己总结了一下,希望起到一个抛砖引玉的作用

总结:
第一步:

将驱动程序(jar包)放到tomcat安装目录下的common\lib文件夹下
第二步:

在Tomcat的webapps目录随便创建一个工程目录,例如myjdbc。在myjdbc目录下创建META-INF目录,在此目录下创建一个context.xml文件,里面的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Resource name="jdbc/test"
  auth
="Container"
  type
="javax.sql.DataSource"
         maxActive="100"
  maxIdle
="30"
  maxWait
="10000"
         username="sa" password=""
  driverClassName
="net.sourceforge.jtds.jdbc.Driver"
         url="jdbc:jtds:sqlserver://localhost/pubs"/>
</Context>

附注如下:
Tomcat标准数据源资源工厂配置项如下:
* driverClassName - 所使用的JDBC驱动类全称。
* maxActive - 同一时刻可以自数据库连接池中被分配的最大活动实例数。
* maxIdle - 同一时刻数据库连接池中处于非活动状态的最大连接数。
* maxWait - 当连接池中没有可用连接时,连接池在抛出异常前将等待的最大时间,单位毫秒。
* password - 传给JDBC驱动的数据库密码。
* url - 传给JDBC驱动的连接URL。
* user - 传给JDBC驱动的数据库用户名。
* validationQuery - 一个SQL查询语句,用于在连接被返回给应用前的连接池验证。
* 如果指定了该属性,则必为至少返回一行记录的SQL SELECT语句。


jdbc/test是数据源的名称(随意写,要和web.xml文件中 <res-ref-name>jdbc/test</res-ref-name> 一样即可),
其他的参数按照自己的实际情况进行修改,例如数据库的名称、账号、密码。

第三步:

在myjdbc目录下创建WEB-INF目录,创建web.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version
="2.4">

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

说明:
<resource-ref>
<descrtiption>引用资源说明</descrtiption>
<res-ref-name>引用资源的JNDI名</res-ref-name>
<res-type>引用资源的类名</res-type>
<res-auth>管理者(Container)</res-auth><!--Container-容器管理 Application-Web应用管理-->
</resource-ref>
第四步:

写个jsp,试一下吧!

<%@ page contentType="text/html;charset=utf-8"%>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*,com.DBConnection"%>
<%
  try
  {
   //
初始化查找命名空间
   Context ctx =
new InitialContext();
   //InitialContext ctx =
new InitialContext();亦可
   //
找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟你的DataSource
   DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/test");
   //
取出连接
   Connection conn = ds.getConnection();
System.out.println("connection pool connected !!");  
  } catch (NamingException e) {
   System.out.println(e.getMessage());
  } catch (SQLException e) {
   e.printStackTrace();
  }finally
  {
   //
注意不是关闭,是放回连接池.
   conn.close();
  }

}
%>