??xml version="1.0" encoding="utf-8" standalone="yes"?>中文在线а√天堂,久青草国产97香蕉在线视频,亚洲国产一区二区视频http://www.aygfsteel.com/DreamFight/articles/319518.htmlDreamFightDreamFightTue, 27 Apr 2010 10:57:00 GMThttp://www.aygfsteel.com/DreamFight/articles/319518.htmlhttp://www.aygfsteel.com/DreamFight/comments/319518.htmlhttp://www.aygfsteel.com/DreamFight/articles/319518.html#Feedback0http://www.aygfsteel.com/DreamFight/comments/commentRss/319518.htmlhttp://www.aygfsteel.com/DreamFight/services/trackbacks/319518.html修改MYSQLroot密码命o
如果忘记密码快速的办法Q?br />
先确认已l杀掉mysqld q程了,然后执行q个
/usr/bin/mysqld --skip-grant-tables &
再这L?
mysql -h 192.168.1.2 -u root

q里192.168.1.2Z的机器ip地址,如果在本机可使用127.0.0.1
执行完上边的后执行:
use mysql;
update user set password =password('yourpass') where user='root'
q样您的root密码׃改ok了?br />

一、请问在win2K命o提示W下怎样更改mysql的root理员密码?

>mysql -u root -p
Enter password: ******
mysql> use mysql;
mysql> update user set password=password('new_password') where user='root';

通过q种Ҏ可以直接修改密码了。至于在CMD下能否登陆MySQLQ就要在Windows环境变量PATH中添?#8220;C:\Program Files\MySQL\MySQL Server 5.0\bin;”Q请改ؓ你自q安装路径Q了?/p>

二、MYSQL 修改root密码命o

cmd下切换到 mysql 安装目录
?br /> d:/mysql/bin
前提Qmysql用户root密码为空.
输入 mysql -u root mysql
mysql> 状态下输入 update user set password=password('新密?) where user='root';
回显
Query OK, 0 rows affected (0.00 sec)
Rows matched: 2 Changed: 0 Warnings: 0
mysql> 状态下输入 FLUSH PRIVILEGES;
回显
Query OK, 0 rows affected (0.00 sec)
mysql> 状态下输入 quit
退?sql

注意每个命o后都要加上一个分?";"
mysql 才开始执行该行命?br /> 而第二个指o会让已蝲入记忆体?mysql pȝ资料库更?/p>

重v mysql .
在更?root 密码後,日後要与 MySQL q线的方法ؓQ?/p>

mysql -uroot -p新密?/p>

忘记mysql 的root 密码Q?
先确认已l杀掉mysqld q程了,然后执行q个
/usr/bin/safe_mysqld --skip-grant-tables &
再这L?
mysql -h 192.168.1.2 -u root
上边?92.168.1.2 是cloud 的mysqld q行机器Q你换成自己的,q样d?
去,可以修改密码了?
修改密码
1.mysql -h hostname –u root 命od到mysqld server 用grant 命o改变口o:
Grant all on *.* to root indentified by "111111"
2. mysqladmin -u 用户?p 旧密码password 新密?
?Q给root 加个密码ab12。首先在DOS 下进入目录mysqlbinQ然后键?
以下命o
mysqladmin -uroot password ab12
注:因ؓ开始时root 没有密码Q所?p 旧密码一就可以省略了?
2、例2Q再root 的密码改为djg345?
mysqladmin –u root -pab12 password djg345 (注意-p 不要和后面的密码?
开写,要写在一?
3.
use mysql; update user set password =password('yourpass') where user='r
oot'
4. 载入权限表: `mysqladmin -h hostname flush-privileges' Q或者
用SQL 命o`FLUSH PRIVILEGES'。(当然Q在q里Q你也可以重启mysqld。)
mysql 的徏库,d数据ҎQ?
mysqi –u root
mysql>create database ttt;
mysql>source 1.txt
mysql>load data local infile "2.txt" into table board;
1.txt 内容:
CREATE TABLE board (
boardid int(11) NOT NULL auto_increment,
boardname char(255),
PRIMARY KEY (boardid)
);
2.txt 内容:
1 lk(Tab 键分开)
2 lklk
3 lklklk
导出database:
#mysqldump –opt ttt –uroot –p111111 > 111.sql
导入database
1. #mysql –u root –p111111 ttt < 111.sql
2. mysql>source 111.sql;
导出的多个databaseQ?mysqldump –-databases ttt1 ttt2 ttt3 –uroot –p111111
> 111.sql
导出所有databaseQ?mysqldump –-all-databases –uroot –p111111 > 111.sql



DreamFight 2010-04-27 18:57 发表评论
]]>
为特定的web讄虚拟目录http://www.aygfsteel.com/DreamFight/articles/247866.htmlDreamFightDreamFightTue, 23 Dec 2008 01:59:00 GMThttp://www.aygfsteel.com/DreamFight/articles/247866.htmlhttp://www.aygfsteel.com/DreamFight/comments/247866.htmlhttp://www.aygfsteel.com/DreamFight/articles/247866.html#Feedback0http://www.aygfsteel.com/DreamFight/comments/commentRss/247866.htmlhttp://www.aygfsteel.com/DreamFight/services/trackbacks/247866.html 1.如果我有一个web它的位置在c:\myweb在这个目录下有一个jsp文gQa.jsp,在c:\myweb\image下有一个b.jsp文g
q且我在览器中输入http://localhost:8080/web可以讉K到这个web

如果我没有设|虚拟目录的话我惌q行q个web必须要把q个文g复制到webapps下,但是现在׃需要我不能把它复制到这个目录下Q所以我要设|虚拟目录?br />
首先我要打开conf/server.xml文g然后扑ֈ<host q个标签Q在里边加入Q?br /> <context path="/web" docbase="c:\myweb" reloadable="true">便可以了?br /> 下面来说一上它的几个参C表的意思:
path:是你在地址栏中输入的web
docbase:是你的实际目录c:\myweb
reloadable:是让你的web 是否能够重加?

当们讉Kb.jsp的时候就可以在浏览器中输入:http://localhost:8080/web/image/b.jsp
如果在a.jsp中要做链接可以:
<a href="image/b.jsp">

DreamFight 2008-12-23 09:59 发表评论
]]>
在Tomcat中添加多个监听端?/title><link>http://www.aygfsteel.com/DreamFight/articles/247858.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 01:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamFight/articles/247858.html</guid><wfw:comment>http://www.aygfsteel.com/DreamFight/comments/247858.html</wfw:comment><comments>http://www.aygfsteel.com/DreamFight/articles/247858.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamFight/comments/commentRss/247858.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamFight/services/trackbacks/247858.html</trackback:ping><description><![CDATA[在Tomcat下的conf下的server.xml中找?br /> <br /> <font style="background-color: #c7edcc"> <Connector port="8080" <br />          maxThreads="150" <br />       minSpareThreads="25" <br />       maxSpareThreads="75"<br />                enableLookups="false" <br />       redirectPort="8443" <br />       acceptCount="100"<br />                debug="0" <br />       connectionTimeout="20000" <br />                disableUploadTimeout="true" /></font><br /> 把它复制一?然后再其一_脓Q修?port <img src ="http://www.aygfsteel.com/DreamFight/aggbug/247858.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 09:35 <a href="http://www.aygfsteel.com/DreamFight/articles/247858.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat-server.xml讲解http://www.aygfsteel.com/DreamFight/articles/247856.htmlDreamFightDreamFightTue, 23 Dec 2008 01:31:00 GMThttp://www.aygfsteel.com/DreamFight/articles/247856.htmlhttp://www.aygfsteel.com/DreamFight/comments/247856.htmlhttp://www.aygfsteel.com/DreamFight/articles/247856.html#Feedback0http://www.aygfsteel.com/DreamFight/comments/commentRss/247856.htmlhttp://www.aygfsteel.com/DreamFight/services/trackbacks/247856.html<!-- Example Server Configuration File -->
<!-- Note that component elements are nested corresponding to their
     parent-child relationships with each other -->
 
<!-- A "Server" is a singleton element that represents the entire JVM,
     which may contain one or more "Service" instances.  The Server
     listens for a shutdown command on the indicated port.
 
     Note:  A "Server" is not itself a "Container", so you may not
     define subcomponents such as "Valves" or "Loggers" at this level.
 -->
 
<Server port="8005" //监听端口
        shutdown="SHUTDOWN" //要监听的命o
  debug="0">
 

  <!-- Comment these entries out to disable JMX MBeans support -->
  <!-- You may also configure custom components (e.g. Valves/Realms) by
       including your own mbean-descriptor file(s), and setting the
       "descriptors" attribute to point to a ';' seperated list of paths
       (in the ClassLoader sense) of files to add to the default list.
       e.g. descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"
  -->
  <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
            debug="0"/>
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
            debug="0"/>
 
  <!-- Global JNDI resources -->
  <GlobalNamingResources>
 
    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
 
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
       description="User database that can be updated and saved">
    </Resource>
    <ResourceParams name="UserDatabase">
      <parameter>
        <name>factory</name>
        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
      </parameter>
      <parameter>
        <name>pathname</name>
        <value>conf/tomcat-users.xml</value>
      </parameter>
    </ResourceParams>
 
  </GlobalNamingResources>
 
  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" (and therefore the web applications visible
       within that Container).  Normally, that Container is an "Engine",
       but this is not required.
 
       Note:  A "Service" is not itself a "Container", so you may not
       define subcomponents such as "Valves" or "Loggers" at this level.
   -->
 
  <!-- Define the Tomcat Stand-Alone Service -->
  <Service name="Catalina">
 
    <!-- A "Connector" represents an endpoint by which requests are received
         and responses are returned.  Each Connector passes requests on to the
         associated "Container" (normally an Engine) for processing.
 
         By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
         You can also enable an SSL HTTP/1.1 Connector on port 8443 by
         following the instructions below and uncommenting the second Connector
         entry.  SSL support requires the following steps (see the SSL Config
         HOWTO in the Tomcat 5 documentation bundle for more detailed
         instructions):
         * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or
           later, and put the JAR files into "$JAVA_HOME/jre/lib/ext".
         * Execute:
             %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
             $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA  (Unix)
           with a password value of "changeit" for both the certificate and
           the keystore itself.
 
         By default, DNS lookups are enabled when a web application calls
         request.getRemoteHost().  This can have an adverse impact on
         performance, so you can disable it by setting the
         "enableLookups" attribute to "false".  When DNS lookups are disabled,
         request.getRemoteHost() will return the String version of the
         IP address of the remote client.
    -->
 
    <!-- Define a non-SSL Coyote HTTP/1.1 Connector on the port specified
         during installation  -->
    <Connector port="8080"
         maxThreads="150"
      minSpareThreads="25"
      maxSpareThreads="75"
               enableLookups="false"
      redirectPort="8443"
      acceptCount="100"
               debug="0"
      connectionTimeout="20000"
               disableUploadTimeout="true" />
    <!-- Note : To disable connection timeouts, set connectionTimeout value
     to 0 -->
 
 <!-- Note : To use gzip compression you could set the following properties :
 
      compression="on"
      compressionMinSize="2048"
      noCompressionUserAgents="gozilla, traviata"
      compressableMimeType="text/html,text/xml"
 -->
 
    <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
    <!--
    <Connector port="8443"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false" disableUploadTimeout="true"
               acceptCount="100" debug="0" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" />
    -->
 
    <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
    <Connector port="8009"
               enableLookups="false" redirectPort="8443" debug="0"
               protocol="AJP/1.3" />
 
    <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
    <!-- See proxy documentation for more information about using this. -->
    <!--
    <Connector port="8082"
               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
               enableLookups="false"
               acceptCount="100" debug="0" connectionTimeout="20000"
               proxyPort="80" disableUploadTimeout="true" />
    -->
 
    <!-- An Engine represents the entry point (within Catalina) that processes
         every request.  The Engine implementation for Tomcat stand alone
         analyzes the HTTP headers included with the request, and passes them
         on to the appropriate Host (virtual host). -->
 
    <!-- You should set jvmRoute to support load-balancing via JK/JK2 ie :
    <Engine name="Standalone" defaultHost="localhost" debug="0" jvmRoute="jvm1">        
    -->
        
    <!-- Define the top level container in our container hierarchy -->
    <Engine name="Catalina"
      defaultHost="localhost" //~省的服务器地址
   debug="0">
 
      <!-- The request dumper valve dumps useful debugging information about
           the request headers and cookies that were received, and the response
           headers and cookies that were sent, for all requests received by
           this instance of Tomcat.  If you care only about requests to a
           particular virtual host, or a particular application, nest this
           element inside the corresponding <Host> or <Context> entry instead.
 
           For a similar mechanism that is portable to all Servlet 2.4
           containers, check out the "RequestDumperFilter" Filter in the
           example application (the source for this filter may be found in
           "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
 
           Request dumping is disabled by default.  Uncomment the following
           element to enable it. -->
      <!--
      <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
      -->
 
      <!-- Global logger unless overridden at lower levels -->
      <Logger className="org.apache.catalina.logger.FileLogger"
              prefix="catalina_log." suffix=".txt"
              timestamp="true"/>
 
      <!-- Because this Realm is here, an instance will be shared globally -->
 
      <!-- This Realm uses the UserDatabase configured in the global JNDI
           resources under the key "UserDatabase".  Any edits
           that are performed against this UserDatabase are immediately
           available for use by the Realm.  -->
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
                 debug="0" resourceName="UserDatabase"/>
 
      <!-- Comment out the old realm but leave here for now in case we
           need to go back quickly -->
      <!--
      <Realm className="org.apache.catalina.realm.MemoryRealm" />
      -->
 
      <!-- Replace the above Realm with one of the following to get a Realm
           stored in a database and accessed via JDBC -->
 
      <!--
      <Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"
             driverName="org.gjt.mm.mysql.Driver"
          connectionURL="jdbc:mysql://localhost/authority"
         connectionName="test" connectionPassword="test"
              userTable="users" userNameCol="user_name" userCredCol="user_pass"
          userRoleTable="user_roles" roleNameCol="role_name" />
      -->
 
      <!--
      <Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"
             driverName="oracle.jdbc.driver.OracleDriver"
          connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
         connectionName="scott" connectionPassword="tiger"
              userTable="users" userNameCol="user_name" userCredCol="user_pass"
          userRoleTable="user_roles" roleNameCol="role_name" />
      -->
 
      <!--
      <Realm  className="org.apache.catalina.realm.JDBCRealm" debug="99"
             driverName="sun.jdbc.odbc.JdbcOdbcDriver"
          connectionURL="jdbc:odbc:CATALINA"
              userTable="users" userNameCol="user_name" userCredCol="user_pass"
          userRoleTable="user_roles" roleNameCol="role_name" />
      -->
 
      <!-- Define the default virtual host
           Note: XML Schema validation will not work with Xerces 2.2.
       -->
      <Host name="localhost" //服务器的地址
     debug="0"
   appBase="webapps" //服务器web的存攑֜址
            unpackWARs="true"
   autoDeploy="true"
            xmlValidation="false"
   xmlNamespaceAware="false">
 
        <!-- Defines a cluster for this node,
             By defining this element, means that every manager will be changed.
             So when running a cluster, only make sure that you have webapps in there
             that need to be clustered and remove the other ones.
             A cluster has the following parameters:
 
             className = the fully qualified name of the cluster class
 
             name = a descriptive name for your cluster, can be anything
 
             debug = the debug level, higher means more output
 
             mcastAddr = the multicast address, has to be the same for all the nodes
 
             mcastPort = the multicast port, has to be the same for all the nodes
 
             mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat
 
             mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received
 
             tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes
 
             tcpListenAddress = the listen address (bind address) for TCP cluster request on this host,
                                in case of multiple ethernet cards.
                                auto means that address becomes
                                InetAddress.getLocalHost().getHostAddress()
 
             tcpListenPort = the tcp listen port
 
             tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS
                                  has a wakup bug in java.nio. Set to 0 for no timeout
 
             printToScreen = true means that managers will also print to std.out
 
             expireSessionsOnShutdown = true means that
 
             useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called.
                            false means to replicate the session after each request.
                            false means that replication would work for the following piece of code:
                            <%
                            HashMap map = (HashMap)session.getAttribute("map");
                            map.put("key","value");
                            %>
             replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'.
                               * Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication.
                               * Synchronous means that the thread that executes the request, is also the
                               thread the replicates the data to the other nodes, and will not return until all
                               nodes have received the information.
                               * Asynchronous means that there is a specific 'sender' thread for each cluster node,
                               so the request thread will queue the replication request into a "smart" queue,
                               and then return to the client.
                               The "smart" queue is a queue where when a session is added to the queue, and the same session
                               already exists in the queue from a previous request, that session will be replaced
                               in the queue instead of replicating two requests. This almost never happens, unless there is a
                               large network delay.
        -->            
        <!--
            When configuring for clustering, you also add in a valve to catch all the requests
            coming in, at the end of the request, the session may or may not be replicated.
            A session is replicated if and only if all the conditions are met:
            1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND
            2. a session exists (has been created)
            3. the request is not trapped by the "filter" attribute
 
            The filter attribute is to filter out requests that could not modify the session,
            hence we don't replicate the session after the end of this request.
            The filter is negative, ie, anything you put in the filter, you mean to filter out,
            ie, no replication will be done on requests that match one of the filters.
            The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to.
 
            filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI
            ending with .gif and .js are intercepted.
        -->
       
        <!--
        <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
                 managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                 expireSessionsOnShutdown="false"
                 useDirtyFlag="true">
 
            <Membership
                className="org.apache.catalina.cluster.mcast.McastService"
                mcastAddr="228.0.0.4"
                mcastPort="45564"
                mcastFrequency="500"
                mcastDropTime="3000"/>
 
            <Receiver
                className="org.apache.catalina.cluster.tcp.ReplicationListener"
                tcpListenAddress="auto"
                tcpListenPort="4001"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>
 
            <Sender
                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                replicationMode="pooled"/>
 
            <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve"
                   filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
        </Cluster>
        -->       
 
 
 
        <!-- Normally, users must authenticate themselves to each web app
             individually.  Uncomment the following entry if you would like
             a user to be authenticated the first time they encounter a
             resource protected by a security constraint, and then have that
             user identity maintained across *all* web applications contained
             in this virtual host. -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn"
                   debug="0"/>
        -->
 
        <!-- Access log processes all requests for this virtual host.  By
             default, log files are created in the "logs" directory relative to
             $CATALINA_HOME.  If you wish, you can specify a different
             directory with the "directory" attribute.  Specify either a relative
             (to $CATALINA_HOME) or absolute path to the desired directory.
        -->
        <!--
        <Valve className="org.apache.catalina.valves.AccessLogValve"
                 directory="logs"  prefix="localhost_access_log." suffix=".txt"
                 pattern="common" resolveHosts="false"/>
        -->
 
        <!-- Logger shared by all Contexts related to this virtual host.  By
             default (when using FileLogger), log files are created in the "logs"
             directory relative to $CATALINA_HOME.  If you wish, you can specify
             a different directory with the "directory" attribute.  Specify either a
             relative (to $CATALINA_HOME) or absolute path to the desired
             directory.-->
        <Logger className="org.apache.catalina.logger.FileLogger"
                 directory="logs"  prefix="localhost_log." suffix=".txt"
            timestamp="true"/>
 
      </Host>
 
    </Engine>
 
  </Service>
 
</Server>


DreamFight 2008-12-23 09:31 发表评论
]]>
Tomcat中server.xml配置介绍http://www.aygfsteel.com/DreamFight/articles/247853.htmlDreamFightDreamFightTue, 23 Dec 2008 01:21:00 GMThttp://www.aygfsteel.com/DreamFight/articles/247853.htmlhttp://www.aygfsteel.com/DreamFight/comments/247853.htmlhttp://www.aygfsteel.com/DreamFight/articles/247853.html#Feedback0http://www.aygfsteel.com/DreamFight/comments/commentRss/247853.htmlhttp://www.aygfsteel.com/DreamFight/services/trackbacks/247853.html<Server port="8005" shutdown="SHUTDOWN" debug="0">  
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"

            debug="0"/>

<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"

            debug="0"/>

  <GlobalNamingResources>

<Environment name="simpleValue" type="java.lang.Integer" value="30"/>

    <Resource name="UserDatabase" auth="Container"

              type="org.apache.catalina.UserDatabase"

       description="User database that can be updated and saved">

    </Resource>

    <ResourceParams name="UserDatabase">

      <parameter>

        <name>factory</name>

        <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>

      </parameter>

      <parameter>

        <name>pathname</name>

        <value>conf/tomcat-users.xml</value>

      </parameter>

    </ResourceParams>

  </GlobalNamingResources>

  <Service name="Tomcat-Standalone">

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"

port="8080"               minProcessors="5" maxProcessors="75"

               enableLookups="true" redirectPort="8443"

               acceptCount="100" debug="0" connectionTimeout="20000"

               useURIValidationHack="false" disableUploadTimeout="true" />

    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"

               port="8009" minProcessors="5" maxProcessors="75"

               enableLookups="true" redirectPort="8443"

               acceptCount="10" debug="0" connectionTimeout="20000"

               useURIValidationHack="false"

               protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>

<Engine name="Standalone" defaultHost="localhost" debug="0">

<!--

<Valve className="org.apache.catalina.valves.RequestDumperValve"/>

-->

      <Logger className="org.apache.catalina.logger.FileLogger"

              prefix="catalina_log." suffix=".txt"

              timestamp="true"/>

      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"

                 debug="0" resourceName="UserDatabase"/>

      <Host name="localhost" debug="0" appBase="webapps"

       unpackWARs="true" autoDeploy="true">

        <Logger className="org.apache.catalina.logger.FileLogger"

                 directory="logs"  prefix="localhost_log." suffix=".txt"

               timestamp="true"/>

<Context path="/gdqy" reloadable="true" docBase="D:/gdqy/ept" debug="0"

crossContext="true"/>

      </Host>

</Engine>

  </Service>

</Server>

1?/span>server portQ指定一个端口,q个端口负责监听关闭tomcat的请?/span>

2?/span>shut downQ指定向端口发送的命o字符?/span>

3?/span>service nameQ指?/span>service的名?/span>

4?/span>ConnectorQ?/span>(表示客户端和service之间的连?/span>)

port 指定服务器端要创建的端口Pq在q个断口监听来自客户端的h

minProcessorsQ服务器启动时创建的处理h的线E数

maxProcessorsQ最大可以创建的处理h的线E数

enableLookupsQ如果ؓtrueQ则可以通过调用request.getRemoteHost()q行DNS查询来得到远E客L的实际主机名Q若?/span>false则不q行DNS查询Q而是q回?/span>ip地址

redirectPortQ指定服务器正在处理httph时收C一?/span>SSL传输h后重定向的端口号

acceptCount 指定当所有可以用的处理h的线E数都被使用Ӟ可以攑ֈ处理队列中的h敎ͼ过q个数的h不予处?/span>

connectionTimeout 指定时的时间数(以毫Uؓ单位)
5
?/span>EngineQ?/span>(表示指定service中的h处理机,接收和处理来?/span>Connector的请?/span>)

defaultHostQ指定缺省的处理h的主机名Q它臛_与其中的一?/span>host元素?/span>name属性值是一L
6
?/span>ContextQ?/span>(表示一?/span>web应用E序Q通常?/span>WAR文gQ关?/span>WAR的具体信息见servlet规范) docBase 应用E序的\径或者是WAR文g存放的\?/span>

pathQ表C此web应用E序?/span>url的前~Q这栯求的url?/span>http://localhost:8080/path/****

reloadableQ这个属性非帔R要,如果?/span>trueQ则tomcat会自动检应用程序的/WEB-INF/lib ?/span>/WEB-INF/classes目录的变化,自动装蝲新的应用E序Q我们可以在不重?/span>tomcat的情况下改变应用E序

7?/span>hostQ?/span>(表示一个虚拟主?/span>)

nameQ指定主机名

appBaseQ应用程序基本目录,卛_攑ֺ用程序的目录

unpackWARsQ如果ؓtrueQ则tomcat会自动将WAR文g解压Q否则不解压Q直接从WAR文g中运行应用程?/span>

8?/span>LoggerQ?/span>(表示日志Q调试和错误信息)

className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口

prefixQ指?/span>log文g的前~

suffixQ指?/span>log文g的后~

timestampQ如果ؓtrueQ则log文g名中要加入时_如下?/span>:localhost_log.2001-10-04.txt
9
?/span>RealmQ?/span>(表示存放用户名,密码?/span>role的数据库)

classNameQ指?/span>Realm使用的类名,此类必须实现org.apache.catalina.Realm接口

10?/span>ValveQ?/span>(功能?/span>Logger差不多,?/span>prefix?/span>suffix属性解释和Logger 中的一?/span>)

classNameQ指?/span>Valve使用的类名,如用org.apache.catalina.valves.AccessLogValvecd以记录应用程序的讉K信息

11
?/span>directoryQ指?/span>log文g存放的位|?/span>

pattern 有两个|common方式记录q程L名或ip地址Q用户名Q日期,W一行请求的字符ԌHTTP响应代码Q发送的字节数?/span>combined方式?/span>common方式记录的值更多?/span>

另附tomcat5中server.xml配置

<!-- Example Server Configuration File -->
<!-- Tomcat服务器配|示例文?-->

<!-- Note that component elements are nested corresponding to their
      parent-child relationships with each other -->
<!-- 注意Q这些组件的构成是根据相互之间的父子关系q行嵌套的?->

<!-- A "Server" is a singleton element that represents the entire JVM,
      which may contain one or more "Service" instances. The Server
      listens for a shutdown command on the indicated port.

      Note: A "Server" is not itself a "Container", so you may not
      define subcomponents such as "Valves" or "Loggers" at this level.
-->
<!-- 一?#8220;Server”是一个提供完整的JVM的独立组Ӟ它可以包含一个或多个
      “Service”实例。服务器在指定的端口上监听shutdown命o?br />     
      注意Q一?#8220;Server”自n不是一?#8220;Container”Q容器)Q因此在q里?br />       不可以定义诸?#8220;Valves”或?#8220;Loggers”子组?br /> -->

<Server port="8005" shutdown="SHUTDOWN" debug="0">


   <!-- Comment these entries out to disable JMX MBeans support -->
   <!-- q些指olg关闭JMX MBeans支持 -->

   <!-- You may also configure custom components (e.g. Valves/Realms) by
        including your own mbean-descriptor file(s), and setting the
        "descriptors" attribute to point to a ';' seperated list of paths
        (in the ClassLoader sense) of files to add to the default list.
        e.g. descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"
   -->
   <!-- 你也可以通过包含你自qmbean描述文g配置自定义的lgQ然后设|?br />         “descriptors”属性ؓ?#8220;Q?#8221;为分隔的文g名列表严它d到默认列?br />         中,例如Qdescriptors="/com/myfirm/mypackage/mbean-descriptor.xml"?br /> -->
      
   <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
             debug="0"/>
   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
             debug="0"/>

   <!-- Global JNDI resources -->
   <!-- 全局JNDI资源 -->
   <GlobalNamingResources>

     <!-- Test entry for demonstration purposes -->
     <!-- ZCZ目的的测试入?-->
     <Environment name="simpleValue" type="java.lang.Integer" value="30"/>

     <!-- Editable user database that can also be used by
          UserDatabaseRealm to authenticate users -->
     <!-- 可编辑的Q用来通过UserDatabaseRealm认证用户的用h据库 -->
   
     <Resource name="UserDatabase" auth="Container"
               type="org.apache.catalina.UserDatabase"
        description="User database that can be updated and saved">
     </Resource>
     <ResourceParams name="UserDatabase">
       <parameter>
         <name>factory</name>
         <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
       </parameter>
       <parameter>
         <name>pathname</name>
         <value>conf/tomcat-users.xml</value>
       </parameter>
     </ResourceParams>

   </GlobalNamingResources>

   <!-- A "Service" is a collection of one or more "Connectors" that share
        a single "Container" (and therefore the web applications visible
        within that Container). Normally, that Container is an "Engine",
        but this is not required.

        Note: A "Service" is not itself a "Container", so you may not
        define subcomponents such as "Valves" or "Loggers" at this level.
    -->
   <!-- 一?#8220;Service”是一个或多个q一个单?#8220;Container”(容器)?#8220;Connectors”
        l合Q因此,应用E序在容器中可见Q。通常Q这个容器是一?#8220;Engine”
        Q引擎)Q但q不是必ȝ?br />       
        注意Q一?#8220;Service”自n不是一个容器,因此Q在q个U别上你不可定义
        诸如“Valves”?#8220;Loggers”子组件?br />    -->



DreamFight 2008-12-23 09:21 发表评论
]]>
Tomcat 服务器server.xml的关键参数配|(三)http://www.aygfsteel.com/DreamFight/articles/247852.htmlDreamFightDreamFightTue, 23 Dec 2008 01:19:00 GMThttp://www.aygfsteel.com/DreamFight/articles/247852.htmlhttp://www.aygfsteel.com/DreamFight/comments/247852.htmlhttp://www.aygfsteel.com/DreamFight/articles/247852.html#Feedback0http://www.aygfsteel.com/DreamFight/comments/commentRss/247852.htmlhttp://www.aygfsteel.com/DreamFight/services/trackbacks/247852.html
  1Q?配置pȝ理QAdmin Web ApplicationQ?

  大多数商业化的J2EE服务器都提供一个功能强大的理界面Q且大都采用易于理解的Web应用界面。Tomcat按照自己的方式,同样提供一个成熟的理工具Qƈ且丝毫不逊于那些商业化的竞争Ҏ。Tomcat的Admin Web Application最初在4.1版本时出玎ͼ当时的功能包括管理context、data source、user和group{。当然也可以理像初始化参数Quser、group、role的多U数据库理{。在后箋的版本中Q这些功能将得到很大的扩展,但现有的功能已经非常实用了?

  Admin Web Application被定义在自动部v文gQCATALINA_BASE/webapps/admin.xml ?
  Q译者注QCATALINA_BASE即tomcat安装目录下的server目录Q?

  你必ȝ辑这个文Ӟ以确定Context中的docBase参数是绝对\径。也是_CATALINA_BASE/webapps/admin.xml 的\径是l对路径。作为另外一U选择Q你也可以删除这个自动部|文Ӟ而在server.xml文g中徏立一个Admin Web Application的contextQ效果是一L。你不能理Admin Web Applicationq个应用Q换而言之,除了删除CATALINA_BASE/webapps/admin.xml Q你可能什么都做不了?

  如果你用UserDatabaseRealmQ默认)Q你需要添加一个user以及一个role到CATALINA_BASE/conf/tomcat-users.xml 文g中。你~辑q个文gQ添加一个名?#8220;admin”的role 到该文g中,如下Q?

Qrole name="admin"/Q?/td>

  你同样需要有一个用Pq且q个用户的角色是“admin”。象存在的用户那Pd一个用P改变密码使其更加安全Q:

Quser name="admin" password="deep_dark_secret" roles="admin"/Q?/td>

  当你完成q些步骤后,请重新启动TomcatQ访问http://localhost:8080/adminQ你看C个登录界面。Admin Web Application采用Z容器理的安全机Ӟq用了Jakarta Struts框架。一旦你作ؓ“admin”角色的用L录管理界面,你将能够使用q个理界面配置Tomcat?

  2Q配|应用管?/strong>QManager Web ApplicationQ?

  Manager Web Application让你通过一个比Admin Web Application更ؓ单的用户界面Q执行一些简单的Web应用d?

  Manager Web Application被被定义在一个自动部|文件中Q?

CATALINA_BASE/webapps/manager.xml ?/td>

  你必ȝ辑这个文Ӟ以确保context的docBase参数是绝对\径,也就是说CATALINA_HOME/server/webapps/manager的绝对\径?
  Q译者注QCATALINA_HOME即tomcat安装目录Q?

  如果你用的是UserDatabaseRealmQ那么你需要添加一个角色和一个用户到CATALINA_BASE/conf/tomcat-users.xml文g中。接下来Q编辑这个文Ӟd一个名?#8220;manager”的角色到该文件中Q?

Qrole name=”manager”Q?/td>

  你同样需要有一个角色ؓ“manager”的用戗像已经存在的用户那Pd一个新用户Q改变密码其更加安全)Q?

Quser name="manager" password="deep_dark_secret" roles="manager"/Q?/td>

  然后重新启动TomcatQ访问http://localhost/manager/listQ将看到一个很朴素的文本型理界面Q或者访问http://localhost/manager/html/listQ将看到一个HMTL的管理界面。不是哪种方式都说明你的Manager Web Application现在已经启动了?

  Manager application让你可以在没有系l管理特权的基础上,安装新的Web应用Q以用于试。如果我们有一个新的web应用位于/home/user/hello下在Qƈ且想把它安装?/hello下,Z试q个应用Q我们可以这么做Q在W一个文件框中输?#8220;/hello”Q作问时的pathQ,在第二个文本框中输入“file:/home/user/hello”Q作为Config URLQ?

  Manager applicationq允怽停止、重新启动、移除以及重新部|一个web应用。停止一个应用其无法被讉KQ当有用户尝试访问这个被停止的应用时Q将看到一?03的错??“503 - This application is not currently available”?

  U除一个web应用Q只是指从Tomcat的运行拷贝中删除了该应用Q如果你重新启动TomcatQ被删除的应用将再次出现Q也是_U除q不是指从硬盘上删除Q?
3Q部|一个web应用

  有两个办法可以在pȝ中部|web服务?

  1Q?拯你的WAR文g或者你的web应用文g夹(包括该web的所有内容)?CATALINA_BASE/webapps目录下?

  2Q?Z的web服务建立一个只包括context内容的XML片断文gQƈ把该文g攑ֈ$CATALINA_BASE/webapps目录下。这个web应用本n可以存储在硬盘上的Q何地斏V?

  如果你有一个WAR文gQ你若想部v它,则只需要把该文件简单的拯到CATALINA_BASE/webapps目录下即可,文g必须?#8220;.war”作ؓ扩展名。一旦Tomcat监听到这个文Ӟ它将Q缺省的Q解开该文件包作ؓ一个子目录Qƈ以WAR文g的文件名作ؓ子目录的名字。接下来QTomcat在内存中徏立一个contextQ就好象你在server.xml文g里徏立一栗当Ӟ其他必需的内容,从server.xml中的DefaultContext获得?

  部vweb应用的另一U方式是写一个Context XML片断文gQ然后把该文件拷贝到CATALINA_BASE/webapps目录下。一个Context片断q一个完整的XML文gQ而只是一个context元素Q以及对该应用的相应描述。这U片断文件就像是从server.xml中切取出来的context元素一P所以这U片断被命名?#8220;context片断”?

  举个例子Q如果我们想部v一个名叫MyWebApp.war的应用,该应用用realm作ؓ讉K控制方式Q我们可以用下面这个片断:

Q?--
Context fragment for deploying MyWebApp.war
--Q?
QContext path="/demo" docBase="webapps/MyWebApp.war"
debug="0" privileged="true"Q?
QRealm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/Q?
Q?ContextQ?/td>

  把该片断命名?#8220;MyWebApp.xml”Q然后拷贝到CATALINA_BASE/webapps目录下?

  q种context片断提供了一U便利的Ҏ来部|web应用Q你不需要编辑server.xmlQ除非你x变缺省的部vҎ,安装一个新的web应用时不需要重启动Tomcat?

  4Q配|虚拟主?/strong>QVirtual HostsQ?

  关于server.xml?#8220;Host”q个元素Q只有在你设|虚拟主机的才需要修攏V虚拟主机是一U在一个web服务器上服务多个域名的机ӞҎ个域名而言Q都好象独n了整个主机。实际上Q大多数的小型商务网站都是采用虚拟主机实现的Q这主要是因拟主直接q接到Internetq提供相应的带宽Q以保障合理的访问响应速度Q另外虚拟主能提供一个稳定的固定IP?

  Z名字的虚拟主机可以被建立在Q何web服务器上Q徏立的Ҏ是通过在域名服务器QDNSQ上建立IP地址的别名,q且告诉web服务器把d不同域名的请求分发到相应的网늛录。因文章主要是讲TomcatQ我们不准备介绍在各U操作系l上讄DNS的方法,如果你在q方面需要帮助,请参考《DNS and Bind》一书,作者是Paul Albitz and Cricket Liu (O'Reilly)。ؓ了示范方便,我将使用一个静态的L文gQ因是测试别名最单的Ҏ?

  在Tomcat中用虚拟主机,你需要设|DNS或主机数据。ؓ了测试,为本地IP讄一个IP别名p够了Q接下来Q你需要在server.xml中添加几行内容,如下Q?

QServer port="8005" shutdown="SHUTDOWN" debug="0"Q?
QService name="Tomcat-Standalone"Q?
QConnector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"/Q?
QConnector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8443" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0" scheme="https" secure="true"/Q?
QFactory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
clientAuth="false" protocol="TLS" /Q?
Q?ConnectorQ?
QEngine name="Standalone" defaultHost="localhost" debug="0"Q?
Q?-- This Host is the default Host --Q?
QHost name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true"Q?
QContext path="" docBase="ROOT" debug="0"/Q?
QContext path="/orders" docBase="/home/ian/orders" debug="0"
reloadable="true" crossContext="true"Q?
Q?ContextQ?
Q?HostQ?

Q?-- This Host is the first "Virtual Host": http://www.example.com/ --Q?
QHost name="www.example.com" appBase="/home/example/webapp"Q?
QContext path="" docBase="."/Q?
Q?HostQ?

Q?EngineQ?
Q?ServiceQ?
Q?ServerQ?/td>

  Tomcat的server.xml文gQ在初始状态下Q只包括一个虚拟主机,但是它容易被扩充到支持多个虚拟主机。在前面的例子中展示的是一个简单的server.xml版本Q其中粗体部分就是用于添加一个虚拟主机。每一个Host元素必须包括一个或多个context元素Q所包含的context元素中必L一个是默认的contextQ这个默认的context的显C\径应该ؓI(例如Qpath=””Q?br />  5Q配|基验证QBasic AuthenticationQ?

  容器理验证Ҏ控制着当用戯问受保护的web应用资源Ӟ如何q行用户的n份鉴别。当一个web应用使用了Basic AuthenticationQBASIC参数在web.xml文g中auto-method元素中设|)Q而有用户讉K受保护的web应用ӞTomcat通过HTTP Basic Authentication方式Q弹Z个对话框Q要求用戯入用户名和密码。在q种验证Ҏ中,所有密码将被以64位的~码方式在网l上传输?

  注意Q用Basic Authentication通过被认为是不安全的Q因为它没有强健的加密方法,除非在客L和服务器端都使用HTTPS或者其他密码加密码方式Q比如,在一个虚拟私人网l中Q。若没有额外的加密方法,|络理员将能够截获Q或滥用Q用L密码。但是,如果你是刚开始用TomcatQ或者你惛_你的web应用中测试一下基于容器的安全理QBasic Authenticationq是非常易于讄和用的。只需要添加<security-constraintQ和Qlogin-configQ两个元素到你的web应用的web.xml文g中,q且在CATALINA_BASE/conf/tomcat-users.xml 文g中添加适当的<roleQ和QuserQ即可,然后重新启动Tomcat?

  下面例子中的web.xml摘自一个俱乐部会员|站pȝQ该pȝ中只有member目录被保护v来,q用Basic Authenticationq行w䆾验证。请注意Q这U方式将有效的代替Apache web服务器中?htaccess文g?

Q?--
Define the Members-only area, by defining
a "Security Constraint" on this Application, and
mapping it to the subdirectory (URL) that we want
to restrict.
--Q?
Qsecurity-constraintQ?
Qweb-resource-collectionQ?
Qweb-resource-nameQ?
Entire Application
Q?web-resource-nameQ?
Qurl-patternQ?members/*Q?url-patternQ?
Q?web-resource-collectionQ?
Qauth-constraintQ?
Qrole-nameQmemberQ?role-nameQ?
Q?auth-constraintQ?
Q?security-constraintQ?
Q?-- Define the Login Configuration for this Application --Q?
Qlogin-configQ?
Qauth-methodQBASICQ?auth-methodQ?
Qrealm-nameQMy Club Members-only AreaQ?realm-nameQ?
Q?login-configQ?/td>

  6Q配|单点登?/strong>QSingle Sign-OnQ?

  一旦你讄了realm和验证的ҎQ你需要进行实际的用户d处理。一般说来,对用戯言dpȝ是一件很ȝ的事情,你必d量减用L录验证的ơ数。作为缺省的情况Q当用户W一ơ请求受保护的资源时Q每一个web应用都会要求用户d。如果你q行了多个web应用Qƈ且每个应用都需要进行单独的用户验证Q那q看h有点像你在与你的用h斗。用户们不知道怎样才能把多个分ȝ应用整合成一个单独的pȝQ所有他们也׃知道他们需要访问多个不同的应用,只是很迷惑,Z么总要不停的登录?

  Tomcat 4?#8220;single sign-on”Ҏ允许用户在讉K同一虚拟L下所有web应用Ӟ只需d一ơ。ؓ了用这个功能,你只需要在Host上添加一个SingleSignOn Valve元素卛_Q如下所C:

QValve className="org.apache.catalina.authenticator.SingleSignOn"
debug="0"/Q?/td>

  在Tomcat初始安装后,server.xml的注释里面包括SingleSignOn Valve配置的例子,你只需要去掉注释,卛_使用。那么,M用户只要dq一个应用,则对于同一虚拟L下的所有应用同h效?

  使用single sign-on valve有一些重要的限制Q?

  1Q?value必须被配|和嵌套在相同的Host元素里,q且所有需要进行单炚w证的web应用Q必通过context元素定义Q都位于该Host下?

  2Q?包括׃n用户信息的realm必须被设|在同一UHost中或者嵌套之外?

  3Q?不能被context中的realm覆盖?

  4Q?使用单点d的web应用最好用一个Tomcat的内|的验证方式Q被定义在web.xml中的Qauth-methodQ中Q,q比自定义的验证方式强,Tomcat内置的的验证方式包括basic、digest、form和client-cert?

  5Q?如果你用单点登录,q希望集成一个第三方的web应用C的网站中来,q且q个新的web应用使用它自q验证方式Q而不使用容器理安全Q那你基本上没招了。你的用hơ登录原来所有应用时需要登录一ơ,q且在请求新的第三方应用时还得再d一ơ。当Ӟ如果你拥有这个第三方web应用的源码,而你又是一个程序员Q你可以修改它,但那恐怕也不容易做?

  6Q?单点d需要用cookies?

 7Q配|用户定制目?/strong>QCustomized User DirectoresQ?

  一些站点允怸别用户在服务器上发布|页。例如,一所大学的学院可能想l每一位学生一个公共区域,或者是一个ISP希望l一些webI间l他的客P但这又不是虚拟主机。在q种情况下,一个典型的Ҏ是在用户名前面加一个特D字W(~Q,作ؓ每位用户的网站,比如Q?

http://www.cs.myuniversity.edu/~username
http://members.mybigisp.com/~username

  Tomcat提供两种Ҏ在主Z映射q些个h|站Q主要用一对特D的Listener元素。Listener的className属性应该是org.apache.catalina.startup.UserConfigQuserClass属性应该是几个映射cM一。如果你的系l是UnixQ它有一个标准的/etc/passwd文gQ该文g中的帐号能够被运行中的Tomcat很容易的dQ该文g指定了用Lȝ录,使用PasswdUserDatabase 映射cR?

QListener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html"
userClass="org.apache.catalina.startup.PasswdUserDatabase"/Q?/td>

  web文g需要放|在?home/users/ian/public_html 或?/users/jbrittain/public_html一L目录下面。当然你也可以改变public_html 到其他Q何子目录下?

  实际上,q个用户目录Ҏ不一定需要位于用户主目录下里面。如果你没有一个密码文Ӟ但你又想把一个用户名映射到公q?home一L录的子目录里面,则可以用HomesUserDatabasecR?

QListener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html" homeBase="/home"
userClass="org.apache.catalina.startup.HomesUserDatabase"/Q?/td>

  q样一来,web文g可以位于像/home/ian/public_html 或?/home/jasonb/public_html一L目录下。这UŞ式对Windows而言更加有利Q你可以使用一个像c:\homeq样的目录?

  q些Listener元素Q如果出玎ͼ则必dHost元素里面Q而不能在context元素里面Q因为它们都用应用于Host本n?

  8Q在Tomcat中用CGI脚本

  Tomcat主要是作为Servlet/JSP容器Q但它也有许多传lweb服务器的性能。支持通用|关接口QCommon Gateway InterfaceQ即CGIQ就是其中之一QCGI提供一l方法在响应览器请求时q行一些扩展程序。CGI之所以被UCؓ通用Q是因ؓ它能在大多数E序或脚本中被调用,包括QPerlQPythonQawkQUnix shell scripting{,甚至包括Java。当Ӟ你大概不会把一个Java应用E序当作CGI来运行,毕竟q样太过原始。一般而言Q开发Servlet总要比CGIh更好的效率,因ؓ当用LM个链接或一个按钮时Q你不需要从操作pȝ层开始进行处理?

  Tomcat包括一个可选的CGI ServletQ允怽q行遗留下来的CGI脚本?

  Z使Tomcat能够q行CGIQ你必须做如下几件事Q?

  1. 把servlets-cgi.renametojar Q在CATALINA_HOME/server/lib/目录下)改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下?

  2. 在Tomcat的CATALINA_BASE/conf/web.xml 文g中,把关于<servlet-nameQ?CGI的那D늚注释LQ默认情况下Q该D位于第241行)?

  3. 同样Q在Tomcat的CATALINA_BASE/conf/web.xml文g中,把关于对CGIq行映射的那D늚注释LQ默认情况下Q该D位于第299行)。注意,q段内容指定了HTML链接到CGI脚本的访问方式?

  4. 你可以把CGI脚本攄在WEB-INF/cgi 目录下(注意QWEB-INF是一个安全的地方Q你可以把一些不惌用户看见或基于安全考虑不想暴露的文件放在此处)Q或者你也可以把CGI脚本攄在context下的其他目录下,qؓCGI Servlet调整cgiPathPrefix初始化参数。这指定的CGI Servlet的实际位|,且不能与上一步指定的URL重名?

  5. 重新启动TomcatQ你的CGI可以运行了?

  在Tomcat中,CGIE序~省攄在WEB-INF/cgi目录下,正如前面所提示的那PWEB-INF目录受保护的Q通过客户端的览器无法窥探到其中内容Q所以对于放|含有密码或其他敏感信息的CGI脚本而言Q这是一个非常好的地斏Vؓ了兼容其他服务器Q尽你也可以把CGI脚本保存在传l的/cgi-bin目录Q但要知道,在这些目录中的文件有可能被网上好奇的冲浪者看到。另外,在Unix中,L定运行Tomcat的用h执行CGI脚本的权限?

 9Q改变Tomcat中的JSP~译?/strong>QJSP CompilerQ?

  在Tomcat 4.1Q或更高版本Q大概)QJSP的编译由包含在Tomcat里面的AntE序控制器直接执行。这听v来有一点点奇怪,但这正是Ant有意Z的一部分Q有一个API文档指导开发者在没有启动一个新的JVM的情况下Q用Ant。这是用Antq行Java开发的一大优ѝ另外,q也意味着你现在能够在Ant中用Q何javac支持的编译方式,q里有一个关于Apache Ant使用手册的javac page列表。用v来是Ҏ的,因ؓ你只需要在Qinit-paramQ?元素中定义一个名字叫“compiler”Qƈ且在value中有一个支持编译的~译器名字,CZ如下Q?

QservletQ?
Qservlet-nameQjspQ?servlet-nameQ?
Qservlet-classQ?
org.apache.jasper.servlet.JspServlet
Q?servlet-classQ?
Qinit-paramQ?
Qparam-nameQlogVerbosityLevelQ?param-nameQ?
Qparam-valueQWARNINGQ?param-valueQ?
Q?init-paramQ?
Qinit-paramQ?
Qparam-nameQcompilerQ?param-nameQ?
Qparam-valueQjikesQ?param-valueQ?
Q?init-paramQ?
Qload-on-startupQ?Q?load-on-startupQ?
Q?servletQ?/td>

  当然Q给出的~译器必dl安装在你的pȝ中,q且CLASSPATH可能需要设|,那处决于你选择的是何种~译器?

  10Q限制特定主?/strong>QRestricting Access to Specific HostsQ?

  有时Q你可能想限制对Tomcat web应用的访问,比如Q你希望只有你指定的L或IP地址可以讉K你的应用。这样一来,只有那些指定的的客L可以讉K服务的内容了。ؓ了实现这U效果,Tomcat提供了两个参C你配|:RemoteHostValve 和RemoteAddrValve?

  通过配置q两个参敎ͼ可以让你qo来自h的主机或IP地址Qƈ允许或拒l哪些主?IP。与之类似的Q在Apache的httpd文g里有Ҏ个目录的允许/拒绝指定?

  例如你可以把Admin Web application讄成只允许本地讉KQ设|如下:

QContext path="/path/to/secret_files" ...Q?
QValve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1" deny=""/Q?
Q?ContextQ?/td>

  如果没有l出允许L的指定,那么与拒l主机匹配的L׃被拒l,除此之外的都是允许的。与之类|如果没有l出拒绝L的指定,那么与允怸机匹配的L

DreamFight 2008-12-23 09:19 发表评论
]]>
Tomcat 服务器server.xml的关键参数配|(二)http://www.aygfsteel.com/DreamFight/articles/247851.htmlDreamFightDreamFightTue, 23 Dec 2008 01:18:00 GMThttp://www.aygfsteel.com/DreamFight/articles/247851.htmlhttp://www.aygfsteel.com/DreamFight/comments/247851.htmlhttp://www.aygfsteel.com/DreamFight/articles/247851.html#Feedback0http://www.aygfsteel.com/DreamFight/comments/commentRss/247851.htmlhttp://www.aygfsteel.com/DreamFight/services/trackbacks/247851.html
  1Q?配置pȝ理QAdmin Web ApplicationQ?

  大多数商业化的J2EE服务器都提供一个功能强大的理界面Q且大都采用易于理解的Web应用界面。Tomcat按照自己的方式,同样提供一个成熟的理工具Qƈ且丝毫不逊于那些商业化的竞争Ҏ。Tomcat的Admin Web Application最初在4.1版本时出玎ͼ当时的功能包括管理context、data source、user和group{。当然也可以理像初始化参数Quser、group、role的多U数据库理{。在后箋的版本中Q这些功能将得到很大的扩展,但现有的功能已经非常实用了?

  Admin Web Application被定义在自动部v文gQCATALINA_BASE/webapps/admin.xml ?
  Q译者注QCATALINA_BASE即tomcat安装目录下的server目录Q?

  你必ȝ辑这个文Ӟ以确定Context中的docBase参数是绝对\径。也是_CATALINA_BASE/webapps/admin.xml 的\径是l对路径。作为另外一U选择Q你也可以删除这个自动部|文Ӟ而在server.xml文g中徏立一个Admin Web Application的contextQ效果是一L。你不能理Admin Web Applicationq个应用Q换而言之,除了删除CATALINA_BASE/webapps/admin.xml Q你可能什么都做不了?

  如果你用UserDatabaseRealmQ默认)Q你需要添加一个user以及一个role到CATALINA_BASE/conf/tomcat-users.xml 文g中。你~辑q个文gQ添加一个名?#8220;admin”的role 到该文g中,如下Q?

Qrole name="admin"/Q?/td>

  你同样需要有一个用Pq且q个用户的角色是“admin”。象存在的用户那Pd一个用P改变密码使其更加安全Q:

Quser name="admin" password="deep_dark_secret" roles="admin"/Q?/td>

  当你完成q些步骤后,请重新启动TomcatQ访问http://localhost:8080/adminQ你看C个登录界面。Admin Web Application采用Z容器理的安全机Ӟq用了Jakarta Struts框架。一旦你作ؓ“admin”角色的用L录管理界面,你将能够使用q个理界面配置Tomcat?

  2Q配|应用管?/strong>QManager Web ApplicationQ?

  Manager Web Application让你通过一个比Admin Web Application更ؓ单的用户界面Q执行一些简单的Web应用d?

  Manager Web Application被被定义在一个自动部|文件中Q?

CATALINA_BASE/webapps/manager.xml ?/td>

  你必ȝ辑这个文Ӟ以确保context的docBase参数是绝对\径,也就是说CATALINA_HOME/server/webapps/manager的绝对\径?
  Q译者注QCATALINA_HOME即tomcat安装目录Q?

  如果你用的是UserDatabaseRealmQ那么你需要添加一个角色和一个用户到CATALINA_BASE/conf/tomcat-users.xml文g中。接下来Q编辑这个文Ӟd一个名?#8220;manager”的角色到该文件中Q?

Qrole name=”manager”Q?/td>

  你同样需要有一个角色ؓ“manager”的用戗像已经存在的用户那Pd一个新用户Q改变密码其更加安全)Q?

Quser name="manager" password="deep_dark_secret" roles="manager"/Q?/td>

  然后重新启动TomcatQ访问http://localhost/manager/listQ将看到一个很朴素的文本型理界面Q或者访问http://localhost/manager/html/listQ将看到一个HMTL的管理界面。不是哪种方式都说明你的Manager Web Application现在已经启动了?

  Manager application让你可以在没有系l管理特权的基础上,安装新的Web应用Q以用于试。如果我们有一个新的web应用位于/home/user/hello下在Qƈ且想把它安装?/hello下,Z试q个应用Q我们可以这么做Q在W一个文件框中输?#8220;/hello”Q作问时的pathQ,在第二个文本框中输入“file:/home/user/hello”Q作为Config URLQ?

  Manager applicationq允怽停止、重新启动、移除以及重新部|一个web应用。停止一个应用其无法被讉KQ当有用户尝试访问这个被停止的应用时Q将看到一?03的错??“503 - This application is not currently available”?

  U除一个web应用Q只是指从Tomcat的运行拷贝中删除了该应用Q如果你重新启动TomcatQ被删除的应用将再次出现Q也是_U除q不是指从硬盘上删除Q?
3Q部|一个web应用

  有两个办法可以在pȝ中部|web服务?

  1Q?拯你的WAR文g或者你的web应用文g夹(包括该web的所有内容)?CATALINA_BASE/webapps目录下?

  2Q?Z的web服务建立一个只包括context内容的XML片断文gQƈ把该文g攑ֈ$CATALINA_BASE/webapps目录下。这个web应用本n可以存储在硬盘上的Q何地斏V?

  如果你有一个WAR文gQ你若想部v它,则只需要把该文件简单的拯到CATALINA_BASE/webapps目录下即可,文g必须?#8220;.war”作ؓ扩展名。一旦Tomcat监听到这个文Ӟ它将Q缺省的Q解开该文件包作ؓ一个子目录Qƈ以WAR文g的文件名作ؓ子目录的名字。接下来QTomcat在内存中徏立一个contextQ就好象你在server.xml文g里徏立一栗当Ӟ其他必需的内容,从server.xml中的DefaultContext获得?

  部vweb应用的另一U方式是写一个Context XML片断文gQ然后把该文件拷贝到CATALINA_BASE/webapps目录下。一个Context片断q一个完整的XML文gQ而只是一个context元素Q以及对该应用的相应描述。这U片断文件就像是从server.xml中切取出来的context元素一P所以这U片断被命名?#8220;context片断”?

  举个例子Q如果我们想部v一个名叫MyWebApp.war的应用,该应用用realm作ؓ讉K控制方式Q我们可以用下面这个片断:

Q?--
Context fragment for deploying MyWebApp.war
--Q?
QContext path="/demo" docBase="webapps/MyWebApp.war"
debug="0" privileged="true"Q?
QRealm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/Q?
Q?ContextQ?/td>

  把该片断命名?#8220;MyWebApp.xml”Q然后拷贝到CATALINA_BASE/webapps目录下?

  q种context片断提供了一U便利的Ҏ来部|web应用Q你不需要编辑server.xmlQ除非你x变缺省的部vҎ,安装一个新的web应用时不需要重启动Tomcat?

  4Q配|虚拟主?/strong>QVirtual HostsQ?

  关于server.xml?#8220;Host”q个元素Q只有在你设|虚拟主机的才需要修攏V虚拟主机是一U在一个web服务器上服务多个域名的机ӞҎ个域名而言Q都好象独n了整个主机。实际上Q大多数的小型商务网站都是采用虚拟主机实现的Q这主要是因拟主直接q接到Internetq提供相应的带宽Q以保障合理的访问响应速度Q另外虚拟主能提供一个稳定的固定IP?

  Z名字的虚拟主机可以被建立在Q何web服务器上Q徏立的Ҏ是通过在域名服务器QDNSQ上建立IP地址的别名,q且告诉web服务器把d不同域名的请求分发到相应的网늛录。因文章主要是讲TomcatQ我们不准备介绍在各U操作系l上讄DNS的方法,如果你在q方面需要帮助,请参考《DNS and Bind》一书,作者是Paul Albitz and Cricket Liu (O'Reilly)。ؓ了示范方便,我将使用一个静态的L文gQ因是测试别名最单的Ҏ?

  在Tomcat中用虚拟主机,你需要设|DNS或主机数据。ؓ了测试,为本地IP讄一个IP别名p够了Q接下来Q你需要在server.xml中添加几行内容,如下Q?

QServer port="8005" shutdown="SHUTDOWN" debug="0"Q?
QService name="Tomcat-Standalone"Q?
QConnector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8080" minProcessors="5" maxProcessors="75"
enableLookups="true" redirectPort="8443"/Q?
QConnector className="org.apache.coyote.tomcat4.CoyoteConnector"
port="8443" minProcessors="5" maxProcessors="75"
acceptCount="10" debug="0" scheme="https" secure="true"/Q?
QFactory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
clientAuth="false" protocol="TLS" /Q?
Q?ConnectorQ?
QEngine name="Standalone" defaultHost="localhost" debug="0"Q?
Q?-- This Host is the default Host --Q?
QHost name="localhost" debug="0" appBase="webapps"
unpackWARs="true" autoDeploy="true"Q?
QContext path="" docBase="ROOT" debug="0"/Q?
QContext path="/orders" docBase="/home/ian/orders" debug="0"
reloadable="true" crossContext="true"Q?
Q?ContextQ?
Q?HostQ?

Q?-- This Host is the first "Virtual Host": http://www.example.com/ --Q?
QHost name="www.example.com" appBase="/home/example/webapp"Q?
QContext path="" docBase="."/Q?
Q?HostQ?

Q?EngineQ?
Q?ServiceQ?
Q?ServerQ?/td>

  Tomcat的server.xml文gQ在初始状态下Q只包括一个虚拟主机,但是它容易被扩充到支持多个虚拟主机。在前面的例子中展示的是一个简单的server.xml版本Q其中粗体部分就是用于添加一个虚拟主机。每一个Host元素必须包括一个或多个context元素Q所包含的context元素中必L一个是默认的contextQ这个默认的context的显C\径应该ؓI(例如Qpath=””Q?br />  5Q配|基验证QBasic AuthenticationQ?

  容器理验证Ҏ控制着当用戯问受保护的web应用资源Ӟ如何q行用户的n份鉴别。当一个web应用使用了Basic AuthenticationQBASIC参数在web.xml文g中auto-method元素中设|)Q而有用户讉K受保护的web应用ӞTomcat通过HTTP Basic Authentication方式Q弹Z个对话框Q要求用戯入用户名和密码。在q种验证Ҏ中,所有密码将被以64位的~码方式在网l上传输?

  注意Q用Basic Authentication通过被认为是不安全的Q因为它没有强健的加密方法,除非在客L和服务器端都使用HTTPS或者其他密码加密码方式Q比如,在一个虚拟私人网l中Q。若没有额外的加密方法,|络理员将能够截获Q或滥用Q用L密码。但是,如果你是刚开始用TomcatQ或者你惛_你的web应用中测试一下基于容器的安全理QBasic Authenticationq是非常易于讄和用的。只需要添加<security-constraintQ和Qlogin-configQ两个元素到你的web应用的web.xml文g中,q且在CATALINA_BASE/conf/tomcat-users.xml 文g中添加适当的<roleQ和QuserQ即可,然后重新启动Tomcat?

  下面例子中的web.xml摘自一个俱乐部会员|站pȝQ该pȝ中只有member目录被保护v来,q用Basic Authenticationq行w䆾验证。请注意Q这U方式将有效的代替Apache web服务器中?htaccess文g?

Q?--
Define the Members-only area, by defining
a "Security Constraint" on this Application, and
mapping it to the subdirectory (URL) that we want
to restrict.
--Q?
Qsecurity-constraintQ?
Qweb-resource-collectionQ?
Qweb-resource-nameQ?
Entire Application
Q?web-resource-nameQ?
Qurl-patternQ?members/*Q?url-patternQ?
Q?web-resource-collectionQ?
Qauth-constraintQ?
Qrole-nameQmemberQ?role-nameQ?
Q?auth-constraintQ?
Q?security-constraintQ?
Q?-- Define the Login Configuration for this Application --Q?
Qlogin-configQ?
Qauth-methodQBASICQ?auth-methodQ?
Qrealm-nameQMy Club Members-only AreaQ?realm-nameQ?
Q?login-configQ?/td>

  6Q配|单点登?/strong>QSingle Sign-OnQ?

  一旦你讄了realm和验证的ҎQ你需要进行实际的用户d处理。一般说来,对用戯言dpȝ是一件很ȝ的事情,你必d量减用L录验证的ơ数。作为缺省的情况Q当用户W一ơ请求受保护的资源时Q每一个web应用都会要求用户d。如果你q行了多个web应用Qƈ且每个应用都需要进行单独的用户验证Q那q看h有点像你在与你的用h斗。用户们不知道怎样才能把多个分ȝ应用整合成一个单独的pȝQ所有他们也׃知道他们需要访问多个不同的应用,只是很迷惑,Z么总要不停的登录?

  Tomcat 4?#8220;single sign-on”Ҏ允许用户在讉K同一虚拟L下所有web应用Ӟ只需d一ơ。ؓ了用这个功能,你只需要在Host上添加一个SingleSignOn Valve元素卛_Q如下所C:

QValve className="org.apache.catalina.authenticator.SingleSignOn"
debug="0"/Q?/td>

  在Tomcat初始安装后,server.xml的注释里面包括SingleSignOn Valve配置的例子,你只需要去掉注释,卛_使用。那么,M用户只要dq一个应用,则对于同一虚拟L下的所有应用同h效?

  使用single sign-on valve有一些重要的限制Q?

  1Q?value必须被配|和嵌套在相同的Host元素里,q且所有需要进行单炚w证的web应用Q必通过context元素定义Q都位于该Host下?

  2Q?包括׃n用户信息的realm必须被设|在同一UHost中或者嵌套之外?

  3Q?不能被context中的realm覆盖?

  4Q?使用单点d的web应用最好用一个Tomcat的内|的验证方式Q被定义在web.xml中的Qauth-methodQ中Q,q比自定义的验证方式强,Tomcat内置的的验证方式包括basic、digest、form和client-cert?

  5Q?如果你用单点登录,q希望集成一个第三方的web应用C的网站中来,q且q个新的web应用使用它自q验证方式Q而不使用容器理安全Q那你基本上没招了。你的用hơ登录原来所有应用时需要登录一ơ,q且在请求新的第三方应用时还得再d一ơ。当Ӟ如果你拥有这个第三方web应用的源码,而你又是一个程序员Q你可以修改它,但那恐怕也不容易做?

  6Q?单点d需要用cookies?

 7Q配|用户定制目?/strong>QCustomized User DirectoresQ?

  一些站点允怸别用户在服务器上发布|页。例如,一所大学的学院可能想l每一位学生一个公共区域,或者是一个ISP希望l一些webI间l他的客P但这又不是虚拟主机。在q种情况下,一个典型的Ҏ是在用户名前面加一个特D字W(~Q,作ؓ每位用户的网站,比如Q?

http://www.cs.myuniversity.edu/~username
http://members.mybigisp.com/~username

  Tomcat提供两种Ҏ在主Z映射q些个h|站Q主要用一对特D的Listener元素。Listener的className属性应该是org.apache.catalina.startup.UserConfigQuserClass属性应该是几个映射cM一。如果你的系l是UnixQ它有一个标准的/etc/passwd文gQ该文g中的帐号能够被运行中的Tomcat很容易的dQ该文g指定了用Lȝ录,使用PasswdUserDatabase 映射cR?

QListener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html"
userClass="org.apache.catalina.startup.PasswdUserDatabase"/Q?/td>

  web文g需要放|在?home/users/ian/public_html 或?/users/jbrittain/public_html一L目录下面。当然你也可以改变public_html 到其他Q何子目录下?

  实际上,q个用户目录Ҏ不一定需要位于用户主目录下里面。如果你没有一个密码文Ӟ但你又想把一个用户名映射到公q?home一L录的子目录里面,则可以用HomesUserDatabasecR?

QListener className="org.apache.catalina.startup.UserConfig"
directoryName="public_html" homeBase="/home"
userClass="org.apache.catalina.startup.HomesUserDatabase"/Q?/td>

  q样一来,web文g可以位于像/home/ian/public_html 或?/home/jasonb/public_html一L目录下。这UŞ式对Windows而言更加有利Q你可以使用一个像c:\homeq样的目录?

  q些Listener元素Q如果出玎ͼ则必dHost元素里面Q而不能在context元素里面Q因为它们都用应用于Host本n?

  8Q在Tomcat中用CGI脚本

  Tomcat主要是作为Servlet/JSP容器Q但它也有许多传lweb服务器的性能。支持通用|关接口QCommon Gateway InterfaceQ即CGIQ就是其中之一QCGI提供一l方法在响应览器请求时q行一些扩展程序。CGI之所以被UCؓ通用Q是因ؓ它能在大多数E序或脚本中被调用,包括QPerlQPythonQawkQUnix shell scripting{,甚至包括Java。当Ӟ你大概不会把一个Java应用E序当作CGI来运行,毕竟q样太过原始。一般而言Q开发Servlet总要比CGIh更好的效率,因ؓ当用LM个链接或一个按钮时Q你不需要从操作pȝ层开始进行处理?

  Tomcat包括一个可选的CGI ServletQ允怽q行遗留下来的CGI脚本?

  Z使Tomcat能够q行CGIQ你必须做如下几件事Q?

  1. 把servlets-cgi.renametojar Q在CATALINA_HOME/server/lib/目录下)改名为servlets-cgi.jar。处理CGI的servlet应该位于Tomcat的CLASSPATH下?

  2. 在Tomcat的CATALINA_BASE/conf/web.xml 文g中,把关于<servlet-nameQ?CGI的那D늚注释LQ默认情况下Q该D位于第241行)?

  3. 同样Q在Tomcat的CATALINA_BASE/conf/web.xml文g中,把关于对CGIq行映射的那D늚注释LQ默认情况下Q该D位于第299行)。注意,q段内容指定了HTML链接到CGI脚本的访问方式?

  4. 你可以把CGI脚本攄在WEB-INF/cgi 目录下(注意QWEB-INF是一个安全的地方Q你可以把一些不惌用户看见或基于安全考虑不想暴露的文件放在此处)Q或者你也可以把CGI脚本攄在context下的其他目录下,qؓCGI Servlet调整cgiPathPrefix初始化参数。这指定的CGI Servlet的实际位|,且不能与上一步指定的URL重名?

  5. 重新启动TomcatQ你的CGI可以运行了?

  在Tomcat中,CGIE序~省攄在WEB-INF/cgi目录下,正如前面所提示的那PWEB-INF目录受保护的Q通过客户端的览器无法窥探到其中内容Q所以对于放|含有密码或其他敏感信息的CGI脚本而言Q这是一个非常好的地斏Vؓ了兼容其他服务器Q尽你也可以把CGI脚本保存在传l的/cgi-bin目录Q但要知道,在这些目录中的文件有可能被网上好奇的冲浪者看到。另外,在Unix中,L定运行Tomcat的用h执行CGI脚本的权限?

 9Q改变Tomcat中的JSP~译?/strong>QJSP CompilerQ?

  在Tomcat 4.1Q或更高版本Q大概)QJSP的编译由包含在Tomcat里面的AntE序控制器直接执行。这听v来有一点点奇怪,但这正是Ant有意Z的一部分Q有一个API文档指导开发者在没有启动一个新的JVM的情况下Q用Ant。这是用Antq行Java开发的一大优ѝ另外,q也意味着你现在能够在Ant中用Q何javac支持的编译方式,q里有一个关于Apache Ant使用手册的javac page列表。用v来是Ҏ的,因ؓ你只需要在Qinit-paramQ?元素中定义一个名字叫“compiler”Qƈ且在value中有一个支持编译的~译器名字,CZ如下Q?

QservletQ?
Qservlet-nameQjspQ?servlet-nameQ?
Qservlet-classQ?
org.apache.jasper.servlet.JspServlet
Q?servlet-classQ?
Qinit-paramQ?
Qparam-nameQlogVerbosityLevelQ?param-nameQ?
Qparam-valueQWARNINGQ?param-valueQ?
Q?init-paramQ?
Qinit-paramQ?
Qparam-nameQcompilerQ?param-nameQ?
Qparam-valueQjikesQ?param-valueQ?
Q?init-paramQ?
Qload-on-startupQ?Q?load-on-startupQ?
Q?servletQ?/td>

  当然Q给出的~译器必dl安装在你的pȝ中,q且CLASSPATH可能需要设|,那处决于你选择的是何种~译器?

  10Q限制特定主?/strong>QRestricting Access to Specific HostsQ?

  有时Q你可能想限制对Tomcat web应用的访问,比如Q你希望只有你指定的L或IP地址可以讉K你的应用。这样一来,只有那些指定的的客L可以讉K服务的内容了。ؓ了实现这U效果,Tomcat提供了两个参C你配|:RemoteHostValve 和RemoteAddrValve?

  通过配置q两个参敎ͼ可以让你qo来自h的主机或IP地址Qƈ允许或拒l哪些主?IP。与之类似的Q在Apache的httpd文g里有Ҏ个目录的允许/拒绝指定?

  例如你可以把Admin Web application讄成只允许本地讉KQ设|如下:

QContext path="/path/to/secret_files" ...Q?
QValve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1" deny=""/Q?
Q?ContextQ?/td>

  如果没有l出允许L的指定,那么与拒l主机匹配的L׃被拒l,除此之外的都是允许的。与之类|如果没有l出拒绝L的指定,那么与允怸机匹配的L׃被允许,除此之外的都是拒l的?

DreamFight 2008-12-23 09:18 发表评论
]]>
Tomcat 服务器server.xml的关键配|(一Q?/title><link>http://www.aygfsteel.com/DreamFight/articles/247850.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Tue, 23 Dec 2008 01:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamFight/articles/247850.html</guid><wfw:comment>http://www.aygfsteel.com/DreamFight/comments/247850.html</wfw:comment><comments>http://www.aygfsteel.com/DreamFight/articles/247850.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamFight/comments/commentRss/247850.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamFight/services/trackbacks/247850.html</trackback:ping><description><![CDATA[.下蝲<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId22" /><a target="_blank">http://www.eu.apache.org/dist/jakarta/tomcat-5/</a> <br /> q里注意Q在jakarta-tomcat-5.0.28.exe以前是有默认的admin模块Q在jakarta-tomcat-5.5.9.exe则没有安装默认的admin模块Q这?img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId23" /><a href="http://127.0.0.1:8080/admin打开时则会出? target="_blank">http://127.0.0.1:8080/admin打开时则会出?/a> <br /> Tomcat's administration web application is no longer installed by default. Download and install the "admin" package to use it. <br /> 因此我们现在需要下?admin"package ?br /> 把jakarta-tomcat-5.5.x.zip   ?nbsp;   jakarta-tomcat-5.5.x-compat.zip   ?nbsp;  jakarta-tomcat-5.5.x-admin.zip<br /> 三个文g解压在同一个目录中<br /> (如果使用jdk1.4Q才需要compat.zip用jdk1.5可以免了这个? <br /> <br /> <br /> <br /> <br /> 2.修改jakarta-tomcat-5.5.x\conf\tomcat-users.xml.<br /> d理员̎号lizongboQ密码ؓlizongbopass.<br /> 新xml如下Q?br /> <?xml version='1.0' encoding='utf-8'?><br /> <tomcat-users><br />    <role rolename="tomcat"/><br />    <role rolename="role1"/><br />    <role rolename="manager"/><br />    <role rolename="admin"/><br />    <user username="tomcat" password="tomcat" roles="tomcat"/><br />    <user username="role1" password="tomcat" roles="role1"/><br />    <user username="both" password="tomcat" roles="tomcat,role1"/><br />    <user username="lizongbo" password="lizongbopass" roles="admin,manager"/><br /> </tomcat-users><br /> <br /> <br /> 有时?CATALINA_HOME%\server\webapps\admin\WEB-INF\web.xml里面也要做些修改<br /> <br /> <br /> <!-- Security is active on entire directory --><br />    <security-constraint><br />      <display-name>Tomcat Server Configuration Security Constraint</display-name><br />      <web-resource-collection><br />        <web-resource-name>Protected Area</web-resource-name><br />        <!-- Define the context-relative URL(s) to be protected --><br />        <url-pattern>*.jsp</url-pattern><br />        <url-pattern>*.do</url-pattern><br />        <url-pattern>*.html</url-pattern><br />      </web-resource-collection><br />      <auth-constraint><br />        <!-- Anyone with one of the listed roles may access this area --><br />        <role-name>admin</role-name><br />      </auth-constraint><br />    </security-constraint><br /> <br />    <!-- Login configuration uses form-based authentication --><br />    <login-config><br />      <auth-method>FORM</auth-method><br />      <realm-name>Tomcat Server Configuration Form-Based Authentication Area</realm-name><br />      <form-login-config><br />        <form-login-page>/login.jsp</form-login-page><br />        <form-error-page>/error.jsp</form-error-page><br />      </form-login-config><br />    </login-config><br /> <br />    <!-- Security roles referenced by this web application --><br />    <security-role><br />      <description><br />        The role that is required to log in to the Administration Application<br />      </description><br />      <role-name>admin</role-name><br />    </security-role><br /> 无论?Authetication ( w䆾验证 <img hspace="2" src="http://www.blogcn.com/images/wink.gif" vspace="2" border="0" twffan="done" zmxid="zoomXimageId24" alt="" /> q是 Authorization ( 权限控 <img hspace="2" src="http://www.blogcn.com/images/wink.gif" vspace="2" border="0" twffan="done" zmxid="zoomXimageId25" alt="" /> 都只有设|相关的 admin ROLE, 当你惌新增或修改相关的 AA, 必M改这一个文? 来符合你的环?<br /> 3.修改jakarta-tomcat-5.5.x\conf\server.xml来解决编码问题?br /> (lConnector dURIEncoding参数Q参?img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId26" /><a target="_blank">http://blog.csdn.net/darkxie/archive/2004/10/25/TOMCATAPP.aspx)</a> <br /> (可以讄成GB18030)<br />      <Connector port="8080"<br />                 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br />                 enableLookups="false" redirectPort="8443" acceptCount="200"<br />                 connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"<br />                 compression="on" compressionMinSize="2048" <br />        noCompressionUserAgents="gozilla, traviata" <br />        compressableMimeType="text/html,text/xml"/><br /> <br />      <Connector port="8009" <br />                 enableLookups="false" redirectPort="8443" protocol="AJP/1.3" URIEncoding="GBK"/><br /> <br /> <br /> 4.启用支持gzip压羃.<br /> (<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId27" /><a target="_blank">http://www.linuxaid.com.cn/forum/showdoc.jsp?l=1&i=81169)</a> <br /> d下列属?br /> compression="on" <br />        compressionMinSize="2048" <br />        noCompressionUserAgents="gozilla, traviata" <br />        compressableMimeType="text/html,text/xml"<br /> <br /> 5.讄虚拟L?br /> 在jakarta-tomcat-5.5.x\下徏立文件夹vhost\www.mydomain.com?br /> 然后修改jakarta-tomcat-5.5.x\conf\server.xml<br /> <br /> <Engine defaultHost="localhost" name="Catalina"><br />        <Host appBase="vhost/www.mydomain.com" name="<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId28" /><a target=_blank href_cetemp='http://www.mydomain.com/">'>http://www.mydomain.com/"></a> <br />        </Host><br />        <Host appBase="webapps" name="localhost"><br />        </Host><br />        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"/><br />      </Engine><br /> <br /> 6.d数据库驱?更新mail.jar和actiovation.jar<br /> 复制mysql-connector-java-3.0.16-ga-bin.jar,pg74.215.jdbc3.jar?jakarta-tomcat-5.5.x\common\lib\<br /> q有javamail 1.3.2的mail.jarQjaf-1_0_2?activation.jar<br /> msSQl 2000 JDBC sp3Qmsbase.jar,msutil,jar,mssqlserver.jar<br /> <br /> <br /> 7.配置SSL<br /> 参?<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId29" /><a target="_blank">http://jakarta.apache.org/tomcat/tomcat-5.5-doc/ssl-howto.html</a> <br /> D:\j2sdk1.4.2_06\bin>%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA<br /> 输入keystore密码Q?nbsp;  lizongbossl<br /> 您的名字与姓氏是什么?<br />    [tomcat5.5.x]Q?nbsp;  tomcat5.5.x<br /> 您的l织单位名称是什么?<br />    [jakarta]Q?nbsp;  jakarta<br /> 您的l织名称是什么?<br />    [apache]Q?nbsp;  apache<br /> 您所在的城市或区域名U是什么?<br />    [hzcity]Q?nbsp;  hzcity<br /> 您所在的州或省䆾名称是什么?<br />    [gdp]Q?nbsp;  gdp<br /> 该单位的两字母国家代码是什?br />    [CN]Q?nbsp;  CN<br /> CN=tomcat5.5.x, OU=jakarta, O=apache, L=hzcity, ST=gdp, C=CN 正确吗?<br />    [否]Q?nbsp;  y<br /> <br /> 输入<tomcat>的主密码<br />          Q如果和 keystore 密码相同Q按回RQ:<br /> <br /> (必须密码一_因此直接回R)<br /> 然后再把userhome(例如QC:\Documents and Settings\lizongbo\)下的.keystore复制?br /> tomcat的conf\目录下?br /> (例如QD:\jakarta-tomcat-5.5.x\conf\.keystore <img hspace="2" src="http://www.blogcn.com/images/wink.gif" vspace="2" border="0" twffan="done" zmxid="zoomXimageId30" alt="" /><br /> 配置jakarta-tomcat-5.5.x\conf\server.xml<br /> 加上<br />      <Connector port="8443" <br />                 maxThreads="150" minSpareThreads="25" maxSpareThreads="75"<br />                 enableLookups="false" disableUploadTimeout="true"<br />                 acceptCount="100" scheme="https" secure="true"<br />                 clientAuth="false" sslProtocol="TLS" <br />             keystoreFile="conf/.keystore" <br />             keystorePass="lizongbossl"> <!--与先前设|的密码一?-><br />      </Connector><br /> 8.止文g目录列表Q?br /> 修改jakarta-tomcat-5.5.x\conf\web.xmlQ把listing讄为false<br /> <br />      <servlet><br />          <servlet-name>default</servlet-name><br />          <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class><br />          <init-param><br />              <param-name>debug</param-name><br />              <param-value>0</param-value><br />          </init-param><br />          <init-param><br />              <param-name>listings</param-name><br />              <param-value>true</param-value><br />          </init-param><br />          <load-on-startup>1</load-on-startup><br />      </servlet><br /> <br /> 9.指定了自qjavaEncoding<br /> (参?<img alt="::URL::" hspace="2" src="http://www.blogcn.com/images/aurl.gif" align="absBottom" border="0" twffan="done" zmxid="zoomXimageId31" /><a target="_blank">http://gceclub.sun.com.cn/staticcontent/html/sunone/app7/app7-dg-webapp/ch6/ch6-4.html </a><img hspace="2" src="http://www.blogcn.com/images/wink.gif" vspace="2" border="0" twffan="done" zmxid="zoomXimageId32" alt="" /><br /> <br />      <servlet><br />          <servlet-name>jsp</servlet-name><br />          <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class><br />          <init-param><br />              <param-name>fork</param-name><br />              <param-value>false</param-value><br />          </init-param><br />                  <init-param><br />              <param-name>javaEncoding</param-name><br />              <param-value>GB18030</param-value><br />          </init-param><br />          <init-param><br />              <param-name>xpoweredBy</param-name><br />              <param-value>true</param-value><br />          </init-param><br />          <load-on-startup>3</load-on-startup><br />      </servlet><br /> 10.drar,iso{的mime-type映射 <br /> 避免在浏览器里直接打开?br /> <mime-mapping><br /> <extension>mht</extension><br /> <mime-type>text/x-mht</mime-type><br /> </mime-mapping><br /> <mime-mapping><br />          <extension>rar</extension><br />          <mime-type>application/octet-stream</mime-type><br />      </mime-mapping><br />      <mime-mapping><br />          <extension>iso</extension><br />          <mime-type>application/octet-stream</mime-type><br />      </mime-mapping><br />      <mime-mapping><br />          <extension>ape</extension><br />          <mime-type>application/octet-stream</mime-type><br />      </mime-mapping><br />      <mime-mapping><br />          <extension>rmvb</extension><br />          <mime-type>application/octet-stream</mime-type><br />      </mime-mapping><br />      <mime-mapping><br />          <extension>ico</extension><br />          <mime-type>image/x-icon</mime-type><br />      </mime-mapping><br /> 10.1对html静态页面设|编?br /> <!--   修改下面两行以支持静态超文本的自动编?<br />    --> <br /> <mime-mapping><br />    <extension>htm</extension> <br />    <mime-type>text/html;charset=gb2312</mime-type> <br />    </mime-mapping><br /> <mime-mapping><br />    <extension>html</extension> <br />    <mime-type>text/html;charset=gb2312</mime-type> <br />    </mime-mapping><br />    </web-app><br /> <br /> 11.dwelcome-file-listQƈ调整序?br /> <welcome-file-list>    <br />          <welcome-file>index.jsp</welcome-file><br />          <welcome-file>index.html</welcome-file><br />          <welcome-file>index.htm</welcome-file><br />          <welcome-file>default.html</welcome-file><br />          <welcome-file>default.htm</welcome-file><br />          <welcome-file>default.jsp</welcome-file><br />      </welcome-file-list> <img src ="http://www.aygfsteel.com/DreamFight/aggbug/247850.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamFight/" target="_blank">DreamFight</a> 2008-12-23 09:17 <a href="http://www.aygfsteel.com/DreamFight/articles/247850.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcate 中server.xml 目录讲解http://www.aygfsteel.com/DreamFight/articles/247848.htmlDreamFightDreamFightTue, 23 Dec 2008 00:46:00 GMThttp://www.aygfsteel.com/DreamFight/articles/247848.htmlhttp://www.aygfsteel.com/DreamFight/comments/247848.htmlhttp://www.aygfsteel.com/DreamFight/articles/247848.html#Feedback0http://www.aygfsteel.com/DreamFight/comments/commentRss/247848.htmlhttp://www.aygfsteel.com/DreamFight/services/trackbacks/247848.html Tomcat的配|可以通过两种方式来配|?br /> 1.通过/conf/server.xml来配|?br /> 2.通过可视化的界面来配|?br />
下面来介lserver.xml的配|:
按装完Tomcat后它的server.xml的配|内Ҏq样的:


connectionTimeout="2000"
它表式的是:一个客房端q接到服务器如果没有M动作它如果超q这个时间那么它p为无效?br /> 2000表式的是毫秒?br />
maxThreads="150"
它表C的是同一旉q接到服务器上的同一个页面时的最大连接数。,




DreamFight 2008-12-23 08:46 发表评论
]]>
Tomcat虚拟目录讄http://www.aygfsteel.com/DreamFight/articles/244729.htmlDreamFightDreamFightSat, 06 Dec 2008 00:39:00 GMThttp://www.aygfsteel.com/DreamFight/articles/244729.htmlhttp://www.aygfsteel.com/DreamFight/comments/244729.htmlhttp://www.aygfsteel.com/DreamFight/articles/244729.html#Feedback0http://www.aygfsteel.com/DreamFight/comments/commentRss/244729.htmlhttp://www.aygfsteel.com/DreamFight/services/trackbacks/244729.htmltomcat 安装好之后,只需要把你的E序包放?Tomcat_Home$/webapps下就可以直接使用了。这样会使webapps来大需要设|虚拟目录:
1.单个应用讄Qؓ你的单个目讄虚拟目录Q:
 ?lt;Host>?lt;/host>之间加上
 <Context path="/site" docBase="d:\site" reloadable="true" debug="0">
 </Context>
 参数:path 表示在浏览器中输?a href="http://localhost:8080/site">http://localhost:8080/site
 docBase表示你的E序包的物理l对路径Q默认的l对路径?Tomcat_Home$/webapps
 q样讑֮了之后会?tomcat_home$/conf/catalina/localhost目录下生成一个site.xml文gQ此文g的内容就是刚才设|的内容?br /> 2.通过前面我们知道了在$tomcat_home$/conf/catalina/localhost目录下会生成相应的配|文Ӟ因此我们可以直接?tomcat_home$/conf/catalina/localhost目录下写配置文g文g名Q意取Q最好是跟你的web应用相同便于理Q如site.xml内容同上
<Context path="/site" docBase="d:\site" reloadable="true" debug="0">
 </Context>
3.更改整个根目录(Z的所有项目设|虚拟目录)Q?br />   ?tomcat_home$/conf/server.xml中找?lt;Host name="localhost" debug="0" appBase="webapps"
  unpackWARs="true" autoDeploy="true">
 appBase的设|成期望的\径(l对路径Q?br />  出现的问题:输入Q?a href="http://localhost:8080/">http://localhost:8080/没有出现默认的页?br />  原因当然是更改了路径造成的。解决也很简单了Q把文g拯来,或者再把原来默认的设成虚拟路径?
在调试过E中你也怼遇到q样的错误:
严重: Error starting static Resources
java.lang.IllegalArgumentException: Document base E:\Tomcat 5.0\webapps\balancerd does not exist or is not a readable directory
 at org.apache.naming.resources.FileDirContext.setDocBase(FileDirContext.java:138)
 at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:3910)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4138)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:823)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:807)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:595)
 at org.apache.catalina.core.StandardHostDeployer.addChild(StandardHostDeployer.java:903)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.commons.beanutils.MethodUtils.invokeMethod(MethodUtils.java:216)
 at org.apache.commons.digester.SetNextRule.end(SetNextRule.java:256)
 at org.apache.commons.digester.Rule.end(Rule.java:276)
 at org.apache.commons.digester.Digester.endElement(Digester.java:1058)
 at org.apache.catalina.util.CatalinaDigester.endElement(CatalinaDigester.java:76)
 at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
 at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
 at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
 at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
 at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
 at org.apache.commons.digester.Digester.parse(Digester.java:1567)
 at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:488)
 at org.apache.catalina.core.StandardHost.install(StandardHost.java:863)
 at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:483)
 at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:427)
 at org.apache.catalina.startup.HostConfig.checkContextLastModified(HostConfig.java:800)
 at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1085)
 at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:327)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
 at org.apache.catalina.core.StandardHost.backgroundProcess(StandardHost.java:800)
 at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1619)
 at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1628)
 at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1608)
 at java.lang.Thread.run(Thread.java:619)
q是因ؓ在你?tomcat_home$\conf\Catalina\localhost下对balancerd q个目讄虚拟目录?xml文g指定q个目的\径不Ҏ造成的把路径改对了该错误消失Q?/div>

DreamFight 2008-12-06 08:39 发表评论
]]>Tomcat的目录结构及其用?/title><link>http://www.aygfsteel.com/DreamFight/articles/244728.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Sat, 06 Dec 2008 00:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamFight/articles/244728.html</guid><wfw:comment>http://www.aygfsteel.com/DreamFight/comments/244728.html</wfw:comment><comments>http://www.aygfsteel.com/DreamFight/articles/244728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamFight/comments/commentRss/244728.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamFight/services/trackbacks/244728.html</trackback:ping><description><![CDATA[<font size="2"> <p><font size="2">Tomcat的目录结构及其用?/font></p> <div align="center"> <table style="border-right: medium none; border-top: medium none; border-left: medium none; width: 519px; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" width="612" border="1"> <tbody> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p style="text-align: center" align="center"><font size="2"><sup>?/sup><sup> </sup><sup>?/sup></font></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p style="text-align: center" align="center"><font size="2"><sup>?/sup><sup> </sup><sup>?/sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/bin</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放启动和关?/sup><sup>Tomcat</sup><sup>的脚本文?/sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/common/lib</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>服务器及所?/sup><sup>Web</sup><sup>应用E序都可以访问的</sup><sup>JAR</sup><sup>文g</sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/conf</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>服务器的各种配置文gQ其中包?/sup><sup>server.xml</sup><sup>Q?/sup><sup>Tomcat</sup><sup>的主要配|文Ӟ?/sup><sup>tomcat-users.xml</sup><sup>?/sup><sup>web.xml</sup><sup>{配|文?/sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/conf/catalina/localhost</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>服务器对每个目的配|信息,如项目的虚拟目录Q所有项目的目录{信息?/sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">work/Catalina/localhost</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>q些目录都是以前我们做的Web应用E序的上下文路径命名的,它里边包括了web应用E序生成的java代码Q和class字节?其中“_”目录对应的是ROOT目录?/sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/logs</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>的日志文?/sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/server/lib</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>服务器运行所需的各U?/sup><sup>JAR</sup><sup>文g</sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/server/webapps</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>的两?/sup><sup>Web</sup><sup>应用E序Q?/sup><sup>admin</sup><sup>应用E序?/sup><sup>manager</sup><sup>应用E序</sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/shared/lib</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放所?/sup><sup>Web</sup><sup>应用E序都可以访问的</sup><sup>JAR</sup><sup>文g(不能被tomcat讉K)</sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/temp</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>存放</sup><sup>Tomcat</sup><sup>q行时生的临时文g</sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/webapps</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>当发?/sup><sup>Web</sup><sup>应用E序Ӟ通常?/sup><sup>Web</sup><sup>应用E序的目录及文g攑ֈq个目录?/sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2">/work</font></sup></p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup>Tomcat</sup><sup>?/sup><sup>JSP</sup><sup>生成?/sup><sup>Servlet</sup><sup>源文件和字节码文件放到这个目录下</sup></font></p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2"></font></sup> </p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup></sup></font> </p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2"></font></sup> </p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup></sup></font> </p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2"></font></sup> </p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup></sup></font> </p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><sup><font size="2"></font></sup> </p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup></sup></font> </p> </td> </tr> <tr> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 18px; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 31px"> <p><sup><font size="2"></font></sup> </p> </td> <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: medium none; padding-left: 5.4pt; padding-bottom: 0cm; border-left: medium none; padding-top: 0cm; border-bottom: windowtext 1pt solid"> <p><font size="2"><sup></sup></font> </p> </td> </tr> </tbody> </table> </div> <p><font size="2">从表5-1中可以看刎ͼ/common/lib目录?server/lib?shared/lib目录下都可以存放JAR文gQ它们的区别在于Q?/font></p> <p><font size="2">??server/lib目录下的JAR文g只能被Tomcat服务器访问;</font></p> <p><font size="2">??shared/lib目录下的JAR文g可以被所有的Web应用E序讉KQ但不能被Tomcat服务器访问;</font></p> <p><font size="2">??common/lib目录下的JAR文g可以被Tomcat服务器和所有的Web应用E序讉K?/font></p> <p><font size="2">此外Q对于后面将要介l的Java Web应用E序Q在它的WEB-INF目录下,也可以徏立lib子目录,在lib子目录下可以存放各种JAR文gQ这些JAR文g只能被当前Web应用E序所讉K?/font></p> </font> <img src ="http://www.aygfsteel.com/DreamFight/aggbug/244728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamFight/" target="_blank">DreamFight</a> 2008-12-06 08:38 <a href="http://www.aygfsteel.com/DreamFight/articles/244728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 错误调试技?/title><link>http://www.aygfsteel.com/DreamFight/articles/244727.html</link><dc:creator>DreamFight</dc:creator><author>DreamFight</author><pubDate>Sat, 06 Dec 2008 00:32:00 GMT</pubDate><guid>http://www.aygfsteel.com/DreamFight/articles/244727.html</guid><wfw:comment>http://www.aygfsteel.com/DreamFight/comments/244727.html</wfw:comment><comments>http://www.aygfsteel.com/DreamFight/articles/244727.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/DreamFight/comments/commentRss/244727.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/DreamFight/services/trackbacks/244727.html</trackback:ping><description><![CDATA[<div><font size="2">常用的参数是start、run和stopQ参数start表示在一个单独的H口中启动Tomcat服务器,参数run表示在当前窗口中启动Tomcat服务器,参数stop表示关闭Tomcat服务器。我们执行startup.batQ实际上执行的就?#8220;catalina.bat start”命oQ执行shutdown.batQ实际上执行的是“catalina.bat stop”命o?#8220;catalina.bat run”命o有时候是非常有用的,特别是当我们需要查看Tomcat的出错信息时。我们在开发JSPE序Ӟl常会碰到自己机器上?080端口可别的应用E序占用Q或者在配置server.xml时出现错误,当通过startup.batQ相当于执行“catalina.bat start”Q启动Tomcat服务器时Q会D启动p|Q因为是在单独的H口中启动Tomcat服务器,所以一旦启动失败,命o提示W窗口就自动关闭了,E序q行中输出的出错信息也随之消失,而且没有M的日志信息,q就使得我们没有办法扑և错误原因。当出现错误Ӟ我们可以换成“catalina.bat run”命o再次启动Q一旦启动失败,仅仅是Tomcat服务器异常终止,但是在当前的命o提示W窗口下仍然保留了启动时的出错信息,q样我们可以查扑֐动失败的原因了?/font><a ></a></div> <img src ="http://www.aygfsteel.com/DreamFight/aggbug/244727.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/DreamFight/" target="_blank">DreamFight</a> 2008-12-06 08:32 <a href="http://www.aygfsteel.com/DreamFight/articles/244727.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ȫ</a>| <a href="http://" target="_blank">Ѿ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ٸ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӱ</a>| <a href="http://" target="_blank">ڽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ҷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ǩ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ʡ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɳ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ͭϿ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>