1. 程式人生 > >Tomcat配置和數據源配置

Tomcat配置和數據源配置

cti XML 必須 debug on() container print itl .com

Tomcat 的配置

1. 圖形化控制臺的相關配置

當啟動tomcat之後,進入tomcat默認主頁,在偏右上角的地方有三個按鈕技術分享圖片
,當我們點擊進入的時候要求我們輸入帳號密碼。相關配置文件在
webapps/manager/WEB-INF路徑下。使用無格式編輯器打開該路徑下的web.xml,在該文件的末尾部分可以看到如下配置片段

  <!-- Define a Security Constraint on this Application -->
  <!-- NOTE:  None of these roles are present in the default users file -->
  <security-constraint>
    <web-resource-collection>
    <!-- 訪問/html/* 資源需要manager-gui角色 -->
      <web-resource-name>HTML Manager interface (for humans)</web-resource-name>
      <url-pattern>/html/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
       <role-name>manager-gui</role-name>
    </auth-constraint>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
    <!-- 訪問 /text/* 資源需要manager-script角色 -->
      <web-resource-name>Text Manager interface (for scripts)</web-resource-name>
      <url-pattern>/text/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
       <role-name>manager-script</role-name>
    </auth-constraint>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
    <!-- 訪問 /jmxproxy/* 資源需要 manager-jmx 角色 -->
      <web-resource-name>JMX Proxy interface</web-resource-name>
      <url-pattern>/jmxproxy/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
       <role-name>manager-jmx</role-name>
    </auth-constraint>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
    <!-- 訪問 /status/* 資源可以使用一下任意一個角色 -->
      <web-resource-name>Status interface</web-resource-name>
      <url-pattern>/status/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
       <role-name>manager-gui</role-name>
       <role-name>manager-script</role-name>
       <role-name>manager-jmx</role-name>
       <role-name>manager-status</role-name>
    </auth-constraint>
  </security-constraint>

  <!-- Define the Login Configuration for this Application -->
  <login-config>
  <!-- BASIC 表明使用彈出窗口方式登錄 -->
    <auth-method>BASIC</auth-method>
    <realm-name>Tomcat Manager Application</realm-name>
  </login-config>

tomcat 默認采用文件安全域,也就是以文件存放用戶名和密碼,tomcat的用戶由conf路徑下的 tomcat-users.xml文件控制,打開該文件,發現除了註釋差不多就只剩下一對<tomcat-users>標簽了,對於普通開發者來說,也就是只訪問/status/*這些資源,配置一個manager-gui角色就可以了

<tomcat-users>
    <role rolename="manager-gui"/>
    <user username="username" password="password" roles="manager-gui"/> 
</tomcat-users>

這樣就增加了一個角色為manager-gui、用戶名為username、密碼為password的用戶,重啟tomcat之後就可以點擊按鈕登錄了。

2. 配置Tomcat的數據源

從Tomcat5.5 開始就內置了DBCP的數據源實現,它提供了兩種配置數據源的方式:
1 全局數據源——可以讓所有的Web應用都訪問
2 局部數據源——只能在單個web應用中訪問
不管配置哪種數據源,都需要提供特定數據庫的JDBC驅動,將其復制到Tomcat的lib路徑下,然後在conf/Catalina/localhosr文件夾下新建任意名字的xml文件—-該文件就是部署Web應用的配置文件,例如,在該文件夾下增加一個 test.xml

文件,內容如下:

<Context docBase="/home/huangyuan/javaweb/testTomcat" debug="0" privileged="true"></Context>

上面的配置文件中指定了Web應用的絕對路徑(這也是部署web應用的一種方式),重啟Tomcat之後,Tomcat會把/home/huangyuan/javaweb/testTomcat文件夾部署成web應用,該應用的URL地址為
http://<server_address>:<port>/test
配置數據源時只需要在其中加入Resource子元素,其內容如下:


<Context docBase="/home/huangyuan/javaweb/testTomcat" debug="0" privileged="true">
<!--
driverClassName --指定數據源在容器中的JNDI名
url             --指定數據庫服務的URL
username        --指定連接數據庫的用戶名
password        --指定連接數據庫的密碼
maxActive       --指定數據源最大活動連接數
maxIdle         --指定數據池中最大空閑連接數
maxWait         --指定數據池中最大等待獲取連接的客戶端

-->
<Resource name="jdbc/dstest" auth="Container"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/javaee"
username="root"
password="xxx"
maxActive="5"
maxIdle="2"
maxWait="1000"
</Context>

下面是測試訪問數據源的jsp文件部分內容:

Context ctx = new InitialContext();
/*
通過JNDI查找數據源,該JNDI為  java:comp/env/jdbc/dstest,分成兩個部分
java:comp/env 是Tomcat固定的,Tomcat提供的JNDI綁定都必須加該前綴
jdbc/dstest 是定義數據源時用的數據名
*/
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/dstest");
Connection conn = ds.getConection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from test");
while(rs.next())
{
out.println(re.getString(1))
}

測試上述代碼需要本機安裝MySQL,並且在有一個包含test表的、名字為test的數據庫。若配置全局數據源,則需要修改Tomcat的server.xml文件

Tomcat配置和數據源配置