posts - 4,comments - 2,trackbacks - 0
          Tomcat是jsp/servlet container,對靜態(tài)資源(如HTML文件或圖像文件)的處理速度,以及提供的Web服務器管理功能方面都不如其他專業(yè)的HTTP服務器,如IIS和Apache服務器。
          我是以Tomcat5.0.16,apache_2.0.55Http Server,mod_jk-apache-2.0.55.so jk插件進行集成。
          一、基本原理
          Tomcat的兩個常用連接器,
          第一個連接器監(jiān)聽8080端口,負責建立HTTP連接。在通過瀏覽器訪問Tomcat服務器的Web應用時,使用的就是這個連接器。  
          第二個連接器監(jiān)聽8009端口,負責和其他的HTTP服務器建立連接。在把Tomcat與其他HTTP服務器集成時,就需要用到這個連接器。

          查看conf/server.xml文件,
          <Service?name="Catalina">
          ????
          <Connector?acceptCount="100"?connectionTimeout="20000"?port="8080"?redirectPort="8443"?disableUploadTimeout="true">
          ????
          </Connector>
          ????
          <Connector?protocol="AJP/1.3"?port="8009"?redirectPort="8443"?protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler">
          ????
          </Connector>
          ????
          <Engine?defaultHost="localhost"?name="Catalina">
          ??????
          <Host?appBase="webapps"?name="localhost">
          ????????
          <Logger?className="org.apache.catalina.logger.FileLogger"?suffix=".txt"?prefix="localhost_log."?timestamp="true"/>
          ??????
          </Host>
          ??????
          <Logger?className="org.apache.catalina.logger.FileLogger"?suffix=".txt"?prefix="catalina_log."?timestamp="true"/>
          ??????
          <Realm?className="org.apache.catalina.realm.UserDatabaseRealm"/>
          ????
          </Engine>
          ??
          </Service>
          根據以上Service,可以tomcat的安裝目錄找到conf/Catalina/localhost目錄,里面的XML文件為配置該service所有的Context,一個xml文件對應一個context配置。
          打開admin.xml,
          <Context?privileged="true"?path="/admin"?displayName="Tomcat?Administration?Application"?docBase="../server/webapps/admin">
          ??
          <Logger?className="org.apache.catalina.logger.FileLogger"?suffix=".txt"?prefix="localhost_admin_log."?timestamp="true"/>
          </Context>
          可以看到,配置了一個/admin的context,其docBase為/server/webapps/admin。
          二、集成目標
          我們對tomcat和http 服務器進行集成的目標就是:讓http服務器在80端口進行監(jiān)聽,如果碰到訪問靜態(tài)的html/圖片文件訪問,直接由http服務器進行處理。如果碰到jsp/servlet等訪問,則通過jk插件,轉發(fā)到tomcat監(jiān)聽的8009端口,由tomcat處理。
          三、實施步驟
          1、安裝apache http server, tomcat. 從略。
          2、安裝jk插件。
          把mod_jk-apache-2.0.55.so拷貝到http server的/modules目錄即可。
          3、配置apache htpp server,打開conf/httpd.conf文件,
          (1)修改Website根目錄,
          找到DocumentRoot,改為你想放置網站根目錄的地方
          DocumentRoot "D:/java/Tomcat5.0/webapps/ROOT"
          (2)加載jk插件及配置屬性
          #加載模塊
          LoadModule?jk_module?modules/mod_jk-apache-
          2.0.55.so
          #工作屬性文件
          JkWorkersFile?conf/workers.properties
          #日志存放
          JkLogFile?logs/mod_jk2.log
          #日志等級
          JkLogLevel?info
          #日期格式
          JkLogStampFormat?
          "[%a?%b?%d?%H:%M:%S?%Y]"
          #日志格式
          JkRequestLogFormat?
          "%w?%V?%T"
          #Url轉發(fā)到tomcat
          JkMount?/*.jsp?worker1
          JkMount?/*.page?worker1
          4、新建conf/workers.properties
          #讓mod_jk模塊知道Tomcat
          workers.tomcat_home
          =D:\java\Tomcat5.0
            
          #讓mod_jk模塊知道j2sdk
          workers.java_home
          =D:\java\j2se

          #所配置的Tomcat列表
          worker.list
          =worker1

          #工作端口,若沒占用則不用修改
          worker.worker1.port
          =8009  
            
          #Tomcat服務器的地址
          worker.worker1.host
          =localhost
            
          #類型
          worker.worker1.type
          =ajp13
          5、配置tomcat
          安裝tomcat后,會發(fā)現webapps已經有許多目錄,其中已有一個Root為tomcat默認的"/"context.
          將tomcat webapps下的一些不需要的目錄刪去,把Root下的文件刪除,并把你需要配置的網站內容拷貝到此目錄下。
          找到conf/Catalina/localhost目錄,刪除一些沒用的xml文件,有些xml文件是tomcat啟動時按照webapps的目錄自動產生的context。
          四、開發(fā)時配置
          在進行開發(fā)時,如果我們使用的是tomcat,我們可以采用此種方法進行配置。
          1、通過http://localhost:6060/index.jsphttp://localhost/index.jsp訪問效果是一樣的,
          http://localhost/aBigPicture.gif的訪問可能比直接訪問tomcat要快多了。
          2、進入http://localhost:6060/admin,默認user:admin,password為空,
          查看service下面的context,最好把當前開發(fā)的web的context的reloadable設置為true,我們所做的修改tomcat會自動重新加載,不用重啟tomcat就能立即看到新的變化。
          3、在eclipse中將網站的源代碼發(fā)布到tomcat中有兩種方法,
          一種是采用eclipse自帶的depoly功能,將web發(fā)布到webapps/ROOT目錄,或任一目錄,對應的只是修改conf/Catalina/localhost的xml文件。
          另一種方法是采用ant,一個xml文件用于全發(fā)布(clean,compile,java,copy),另一個xml文件則只發(fā)布修改的(compile,copy)。
          小項目用第一種方便,每次修改了源代碼,只需刷新一下,eclipse就自動幫你depoly到目的地;
          當采用第二種時,每次小修改時,需要運行一次ant,把修改的內容重新拷貝并發(fā)布過去;如果發(fā)布的內容很臟時,有時需全發(fā)布(clean,compile,java,copy)。

          配置httpd.conf和workers.properties的詳細內容,請參考:
          http://tomcat.apache.org/connectors-doc/
          posted @ 2006-04-06 19:44 Steven Liu 閱讀(634) | 評論 (0)編輯 收藏

          問題描述:
          已有如下代碼,

          < body? onLoad ="MM_timelinePlay('Timeline1')" >


          </ body >
          即document.body.onload事件已經綁定了一個函數。
          現需要onload時激活另外一個函數,如enetgetMsg(),如何處理?

          解決方案:
          alert(document.body.onload.toString())
          彈出窗口的內容為:
          function anonymous()
          {
            MM_timelinePlay('Timeline1')
          }
          可見,當對onload綁定一個函數時,javascript自定義了一個函數,在該自定義函數體內調用了該綁定函數。
          解決方法一:
          重新寫一函數,
          function?bodyOnload(){
          MM_timelinePlay('Timeline1');
          enetgetMsg();
          }
          <body?onLoad="bodyOnload()">
          解決方法二:
          利用javascript重定義函數的功能,
          newBodyload="enetgetMsg();";
          if(document.body.onload)
          {
          eval(document.body.onload.toString().replace('anonymous()','oldBodyload()'));
          document.body.onload
          =new?Function("oldBodyload();"+newBodyload);
          }

          else?document.body.onload=new?Function(newBodyload);
          顯然,第二種方法更好,因為這種方法實現時不必關心以前這個事件綁定了多少個函數,不需修改原先的代碼,透明地增加一個函數。(decorate模式:透明地增加功能
          posted @ 2006-04-06 15:59 Steven Liu 閱讀(795) | 評論 (2)編輯 收藏
          主站蜘蛛池模板: 临江市| 泾川县| 闸北区| 平谷区| 百色市| 历史| 秭归县| 丽江市| 大姚县| 建阳市| 安陆市| 随州市| 沅江市| 墨脱县| 德格县| 潜江市| 德兴市| 林西县| 沙雅县| 工布江达县| 多伦县| 平湖市| 乌鲁木齐县| 敖汉旗| 北海市| 江都市| 甘泉县| 连城县| 灵武市| 明光市| 蓬溪县| 安图县| 福清市| 瓮安县| 灵寿县| 双鸭山市| 博白县| 永顺县| 渝中区| 雅安市| 白河县|