寫在前面的話:
由于本人也是JBOSS的初級用戶,JBOSS又很強(qiáng)大,在工作中也是摸索積累的過程,因此總結(jié)難免有所錯(cuò)誤或紕漏,但已經(jīng)是盡我的努力,力求正確,如有錯(cuò)誤或紕漏,敬請指正。
文檔作者:周懷進(jìn)
聯(lián)系方式:
blog: http://spaces.msn.com/members/zhj-michael/
目 錄
1 .Apache2.0及連接器jk1.2的編譯部署... 1
1.4 apache及jk1.2的參數(shù)配置... 3
1.4.2.mod_jk2.conf的所有內(nèi)容... 4
1.4.3.workers2.properties的所有內(nèi)容... 4
1.5 apache服務(wù)的啟動(dòng)和停止... 5
2.JBOSS3.2.3/3.2.6部署及配置修改... 5
2.1 JBOSS 應(yīng)用程序的下載及安裝... 6
2.2 JBOSS 應(yīng)用程序的配置調(diào)整... 6
2.2.1配置負(fù)載均衡,調(diào)整參數(shù)... 6
2.2.2配置集群(Clustering),調(diào)整參數(shù)... 7
2.2.3配置數(shù)據(jù)源,調(diào)整參數(shù)... 7
2.2.4配置jboss Connector參數(shù)... 8
2.2.5訪問URL如果是目錄,不想顯示該目錄下文件... 9
2.2.6設(shè)置某個(gè)應(yīng)用APP為默認(rèn)應(yīng)用... 9
2.2.7配置數(shù)據(jù)源在APP應(yīng)用加載前有效(各相關(guān)服務(wù)加載完畢) 10
2.2.9配置contentType及charset,TOMCAT5.0下JSP統(tǒng)一配置... 12
2.3 JVM最小、最大內(nèi)存的設(shè)定... 13
2.5 JBOSS服務(wù)的啟動(dòng)、停止... 13
3.附apache https 服務(wù)器的安裝... 14
1 .Apache2.0及連接器jk1.2的編譯部署
1.1下載相關(guān)軟件包
我們需要軟件及其版本說明:
a) apache服務(wù)器:httpd-2.0.54
下載地址: http://httpd.apache.org/download.cgi
b) apache/tomcat連接器:jk1.2.14,這里選用1.2.*版本,雖然有jk2.0,但據(jù)相關(guān)文檔介紹,jk2.0已不再開發(fā),而 jk1.2.*版本使用范圍很廣,久經(jīng)考驗(yàn)了,穩(wěn)定性有保障.兩個(gè)版本系列對應(yīng)的配置也有很大的變化,故而這里選用jk1.2系列
下載地址:
http://www.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-1.2.14/
安裝apache本文檔依據(jù)的版本是httpd-2.0.54,下載Unix Source,下文介紹主要以linux OS為主,間或會介紹一點(diǎn)windows下安裝的細(xì)節(jié)。
我們的目標(biāo)是用apache來做前端的web服務(wù)器,后端用jboss3.2.6,實(shí)現(xiàn)負(fù)載均衡。
1.2 apache2.0的編譯安裝
下載完源程序包之后,放到一個(gè)臨時(shí)目錄中,如 /home/software/:
#cd /home/software/
#tar zxvf httpd-2.0.54.tar.gz
#cd /home/software/httpd-2.0.54
#./configure --enable-MODULE=shared --enable-so --with-mpm=worker
#make
#make install
參數(shù)解釋:
--enable-MODULE=shared :該參數(shù)是使得相關(guān)的模塊編譯為可動(dòng)態(tài)加載模塊(DSO模式),如果不選用該選項(xiàng),apache默認(rèn)的選項(xiàng)是: --enable-MODULE=static,表示將相關(guān)的模塊靜態(tài)編譯。
兩者的區(qū)別是:前者使得可以需要更新、重編譯某模塊(核心模塊不受限于這種模式,如core、mod_so)時(shí),只需單獨(dú)編譯該模塊即可,而不需重新編譯整個(gè)apache source code,做到單獨(dú)升級。前者弊端是導(dǎo)致apache啟動(dòng)時(shí)慢20%左右,在運(yùn)行階段慢5%左右,另外DSO模式不是所有OS都支持的,和軟件環(huán)境有關(guān)系。
--enable-so :該參數(shù)表示支持用mod_so模塊提供的功能,用LoadModule在httpd.conf文件或包含的conf文件中動(dòng)態(tài)加載某個(gè)模塊。
--with-mpm=worker :該參數(shù)是配置apache將以何種模式編譯的。Apache網(wǎng)站文檔指出不同操作系統(tǒng)下的不同的默認(rèn)模式.
BeOS |
|
Netware |
|
OS/2 |
|
Unix |
|
Windows |
在安裝完apache后,在類unix OS下,可以在./bin目錄下用./httpd –l 來看到編譯時(shí)指定的mpm參數(shù),他們對應(yīng)著不同的.c模塊。
在windows環(huán)境下,可以用./bin/Apache –l 來查看相關(guān)被編譯的模塊。Win環(huán)境下默認(rèn)是 mpm_winnt,則可以看到:
C:\Apache Group\Apache2\bin>apache -l
Compiled in modules:
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c
各模式的區(qū)別,更具體的描述請參見http://httpd.apache.org/docs/2.0/mpm.html,下面只簡單說明一下,worker模式是以process/thread混和模式運(yùn)行的,如果WEB服務(wù)器的期望負(fù)載較大的話,則推薦使用worker模式,如果需要一個(gè)穩(wěn)定性考慮為優(yōu)先的服務(wù)器的話,推薦使用prefork模式,同樣的負(fù)載條件下,prefork模式的apache占用的內(nèi)存會大很多。
默認(rèn)安裝的路徑為: /usr/local/apache2/,如果要指定安裝路徑,則用參數(shù)./configure --prefix=PREFIX來指定安裝路徑,PREFIX為指定的絕對路徑。
可以用PREFIX/bin/apachectl start 來測試是否可以正常啟動(dòng)服務(wù)。
可以用PREFIX/bin/httpd –t來測試http.conf的語法是否合法。
1.3 jk1.2.14的編譯安裝
下載完源程序包之后,放到一個(gè)臨時(shí)目錄中,如 /home/software/:
1、#cd /home/software/
2、#tar zxvf jakarta-tomcat-connectors-1.2.14.1-src.tar.gz
3、#cd /home/software/jakarta-tomcat-connectors-1.2.14.1-src/jk/native
4、# ./configure --with-apxs=/usr/local/apache2/bin/apxs
5、#make
6、# cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules
查看…/native目錄,會看到有apache-1.3以及apache-2.0目錄,在第4步,用--with-apxs參數(shù)來指定擴(kuò)展程序apxs的位置,make程序會根據(jù)提供的apxs的版本來辨別需要針對apache的哪個(gè)版本來生成mod_jk.so,如本文所示例,程序?qū)⒅佬枰獮閍pache2.0生成mod_jk.so,因此編譯工作將會在...jk/native/apache-2.0中進(jìn)行,瀏覽編譯日志信息會看到這些信息。
第6步是將編譯后的so拷貝至apache的安裝路徑的modules目錄中,應(yīng)該根據(jù)安裝路徑去調(diào)整上述腳本中的路徑。
另外可以將mod_jk.so靜態(tài)連接到apache2.0中,然后再一次編譯apache2.0,在上述腳本中加上參數(shù):
./configure --with-apache=/home/software/httpd-2.0.54
具體請參閱:
http://tomcat.apache.org/connectors-doc/howto/apache.html
以上工作就算結(jié)束了編譯、安裝工作,下面將進(jìn)行參數(shù)調(diào)整,部署工作。
1.4 apache及jk1.2的參數(shù)配置
1.4.1.httpd.conf的修改
該文件的路徑位于$APACHE-HOME/conf
上述編譯過程中我們選用的worker模式,因此我們將修改worker模塊的配置
<IfModule worker.c>
StartServers 4 #最初建立進(jìn)程的數(shù)量
ServerLimit 24 #進(jìn)程建立的最大數(shù)量,硬限制
ThreadLimit 128 #每一進(jìn)程能創(chuàng)建線程的最大數(shù)量,硬限制,該參數(shù)建議#和ThreadsPerChild一致,如果ThreadLimit > ThreadsPerChild的話,會造成不##必要的內(nèi)存消耗。
MaxClients 3072 #同時(shí)可以得到處理的客戶端的最大數(shù)量
MinSpareThreads 100 #所有進(jìn)程中空閑線程的總數(shù)最小數(shù)值
MaxSpareThreads 200 #所有進(jìn)程中空閑線程的總數(shù)最大數(shù)值
ThreadsPerChild 128 #每個(gè)子進(jìn)程可以建立的固定數(shù)量的線程
MaxRequestsPerChild 0 #用于控制服務(wù)器建立和結(jié)束進(jìn)程的頻率,為0表示沒有#限制,但在solaris OS下該值可能會出錯(cuò),可以設(shè)置為1000或2000。根據(jù)系統(tǒng)#的并發(fā)負(fù)載吧。
</IfModule>
在httpd.conf文件的最后一行加上:Include conf/mod_jk2.conf
另外還需修改#ServerName www.example.com:80為ServerName 127.0.0.1:80
1.4.2.mod_jk2.conf的所有內(nèi)容
新建該文件,并將該文件置于$APACHE-HOME/conf
LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers2.properties
JkLogFile logs/mod_jk.log
# Set the jk log level [debug/error/info]
JkLogLevel info
# Select the log format
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
# JkOptions indicate to send SSL KEY SIZE,
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
# JkRequestLogFormat set the request format
JkRequestLogFormat "%w %V %T"
JkMount /* loadbalancer
#apache will serve the static picture.
#以下命令意味著所有的圖片將由APACHE解析
JkUnMount /*.jpg loadbalancer
JkUnMount /*.gif loadbalancer
JkUnMount /*.swf loadbalancer
JkUnMount /*.bmp loadbalancer
JkUnMount /*.png loadbalancer
在上述配置中,是配置所有圖片由APACHE來解析,因此我們需要將項(xiàng)目中的所有圖片均拷貝到$APACHE-HOME/htdocs/下,如果你的部署的項(xiàng)目(應(yīng)用),在訪問時(shí)需要輸入前綴,如http://www.DDD.com/TestCrm/login.do,則請注意,在$APACHE-HOME/htdocs/下需要建一個(gè)目錄“TestCrm”,然后按照你項(xiàng)目中圖片所在的路徑,連同路徑中所有目錄一并考入TestCrm目錄,例如你的圖片位于
…./TestCrm.war/images/1.jpg,那么為了APACHE能找到圖片,則你在APACHE中的圖片位置應(yīng)是$APACHE-HOME/htdocs/TestCrm/images/1.jpg。
1.4.3.workers2.properties的所有內(nèi)容
新建該文件,并將該文件置于$APACHE-HOME/conf
請注意:下列配置中的server105,server106等紫色的斜體字符串都是根據(jù)部署的jboss的信息來部署的,其中server105,server106需要在jboss的相關(guān)配置中修改,具體詳見下文介紹。對應(yīng)的IP地址應(yīng)改為JBOSS所在的server IP。
#以下為workers2.propertie的內(nèi)容
worker.list=loadbalancer,server105,server106
# Define the first node...
worker.server105.port=8009
worker.server105.host=192.10.12.105
worker.server105.type=ajp13
worker.server105.lbfactor=1
#worker.server105.local_worker=1
worker.server105.cachesize=100
# Define the 2nd node...
worker.server106.port=8009
worker.server106.host=192.10.12.106
worker.server106.type=ajp13
worker.server106.lbfactor=1
#worker.server106.local_worker=1
worker.server106.cachesize=100
# Now we define the load-balancing behaviour
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=server105,server106
worker.loadbalancer.sticky_session=1
說明:worker.loadbalancer.sticky_session=1參數(shù)的設(shè)定,意味著一旦用戶通過APACHE連接到某臺JBOSS SERVER(創(chuàng)建了session),則只要在該臺JBOSS服務(wù)正常的情況下,該用戶所有的請求都將會發(fā)送至該JBOSS SERVER。
1.5 apache服務(wù)的啟動(dòng)和停止
/usr/local/apache2/bin/apachectl start
/usr/local/apache2/bin/apachectl stop
如果啟動(dòng)時(shí)報(bào)錯(cuò),提示80端口被綁定,請注意有可能是在裝linux OS時(shí)選裝了apache并且啟動(dòng)了服務(wù),請直接在命令行用apachectl stop ,停止原先的服務(wù),其存在路徑一般為/usr/sbin/apachectl
2.JBOSS3.2.3/3.2.6部署及配置修改
2.0 FOR NEW USER
2.0.1 JBOSS 的一點(diǎn)說明
$JBOSS-HOME/server/下有3個(gè)目錄,all/default/minimal,它們是表示3種配置,全部的配置、默認(rèn)配置、最小配置,我們在啟動(dòng)JBOSS服務(wù)時(shí),可以指定
run –c all 表示是啟動(dòng)all配置(將會加載所有服務(wù));run 表示是以默認(rèn)配置啟動(dòng);
run –c mimimal 表示是啟動(dòng)mimimal配置。這三者所加載的服務(wù)數(shù)量不同,具體區(qū)別可查閱JBOSS相關(guān)文檔,你還可以自己定義一個(gè)配置,如test,屬于高手去為了性能上的考慮了,那這份文檔對你的幫助不會太大了。
如果你確定了JBOSS服務(wù)啟動(dòng)的配置,那么你的應(yīng)用及相關(guān)配置就需要部署在對應(yīng)的目錄下的相關(guān)的路徑下,如all/,default/,minimal/下。
2.0.1 JBOSS常用配置文件的路徑
為了描述方便,以下描述將以JBOSS3.2.6版本,default配置為例,如果你以別的配置啟動(dòng),則在對應(yīng)的目錄下尋找或配置相關(guān)文件。
1、相關(guān)DTD定義文件位于$JBOSS-HOME/docs/dtd,在其下的文件中可以查閱某個(gè)XML配置文件中某個(gè)元素或?qū)傩缘囊饬x。
2、數(shù)據(jù)源配置文件的路徑,$JBOSS-HOME/server/default/deploy,文件格式必須是*-ds.xml的樣式。不同的數(shù)據(jù)庫配置參數(shù)可參考$JBOSS-HOME/docs/examples/jca/下的示例文檔。有關(guān)參數(shù)的細(xì)節(jié)在下面會有一定的描述。
3、公共的jar包我們可以放在$JBOSS-HOME/server/default/lib下,如數(shù)據(jù)庫的JDBC jar,log4j.jar等,如果這些JAR已經(jīng)在該lib下放置了,那么我們的應(yīng)用WEB-INF/lib下不應(yīng)該再放置,否則JBOSS也會將他們再一次加載,白白占用內(nèi)存。
4、配置日志的文件,log4j.xml位于$JBOSS-HOME/server/default/conf下,具體配置下文還會有一點(diǎn)介紹
5、$JBOSS-HOME/server/default/work下存放的是JSP編譯后的.java及.class文件,如果調(diào)試JSP時(shí)出錯(cuò)了,可以到該目錄下(一級級去翻吧)去找對應(yīng)的文件,調(diào)試問題。還有個(gè)小TIPS,有時(shí)我們明明把一個(gè)JSP更新到對應(yīng)的目錄里了,可是去刷新頁面時(shí),內(nèi)容還是舊的,為了解決該問題,我們可以到work目錄下,將對應(yīng)的.java及.class文件刪了,再刷新即可,這個(gè)原因不好推測,有時(shí)可以自動(dòng)刷新,有時(shí)不行。單個(gè)的TOMCAT都能自動(dòng)刷新,不知為何集成到JBOSS里卻有時(shí)不行。還需注意的事,你在清除舊的java、class文件時(shí),不能為了省事,而直接刪除目錄,否則刷新時(shí)會報(bào)錯(cuò)的,等著你的就是要重啟JBOSS服務(wù)了。
6、$JBOSS-HOME/server/default/log下存放的是日志文件,默認(rèn)的log4j.xml配置是將日志輸出到該文件夾下的server.log文件,可以去查看信息進(jìn)行調(diào)試。
7、我們的應(yīng)用一般部署在$JBOSS-HOME/server/default/deploy/jbossweb-tomcat50.sar/下,建個(gè)TestCrm.war目錄,把我們的整個(gè)應(yīng)用部署在該.war目錄下,這樣JSP、Servlet將由tomcat引擎來解析處理。
8、配置應(yīng)用的WEB服務(wù)的端口號及參數(shù)。
JBOSS3.2.6是在…./ deploy/jbossweb-tomcat50.sar/server.xml中,自己找8080,修改為你想設(shè)定的端口即可。
JBOSS3.2.3是在…/default/deploy/jbossweb-tomcat41.sar/META-INF/jboss-service.xml中配置。
2.1 JBOSS 應(yīng)用程序的下載及安裝
前往http://www.jboss.com去下載相應(yīng)的版本。直接解壓到相關(guān)的目錄即可。
2.2 JBOSS 應(yīng)用程序的配置調(diào)整
2.2.1配置負(fù)載均衡,調(diào)整參數(shù)
需要修改配置文件以適應(yīng)apache中配置的“session sticky配置”。如下:
Jboss3.2.3修改:
%JBOSS_HOME%/server/default/deploy/jbossweb-tomcat41.sar/META-INF/ jboss-service.xml
修改<Engine name="MainEngine" defaultHost="localhost">為
<Engine name="MainEngine" jvmRoute=" server106" defaultHost="localhost">
與上述workers2.properties定義的內(nèi)容一致。
Jboss3.2.6修改:
%JBOSS_HOME%/server/default/deploy/jbossweb-tomcat50.sar/server.xml
修改<Engine name="jboss.web" defaultHost="localhost">為:
<Engine name="jboss.web" jvmRoute=" server106" defaultHost="localhost">
與上述workers2.properties定義的內(nèi)容一致。
Jboss4.0的修改和Jboss3.2.6的一致。
如上配置后,就可以實(shí)現(xiàn)apache+jboss的負(fù)載均衡。
2.2.2配置集群(Clustering),調(diào)整參數(shù)
如果我們要想使得幾臺JBOSS應(yīng)用服務(wù)器互為備份(僅限于SESSION),在群內(nèi)一臺JBOSS服務(wù)器down掉的時(shí)候,用戶不受影響,繼續(xù)以登陸用戶身份進(jìn)行工作,則我們需要配置Clustering,并啟動(dòng)相關(guān)服務(wù)。下面將描述相關(guān)配置項(xiàng):
1)、修改應(yīng)用APP的web.xml:
Jboss3.2.6:
../default/deploy/jbossweb-tomcat50.sar/Test.war/WEB-INF/web.xml
Jboss3.2.3:
../default/deploy/jbossweb-tomcat41.sar/Test.war/WEB-INF/web.xml
修改內(nèi)容如下:
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd ">
<web-app>
…….
…..
….
<distributable/>
</web-app>
2)、需要啟動(dòng)一個(gè)服務(wù)cluster-service.xml
如果是以run -c all 來啟動(dòng)jboss服務(wù),則默認(rèn)是將cluster服務(wù)啟動(dòng),無需做什么配置工作,只需確認(rèn)相關(guān)文件是否存在即可。
確認(rèn)…/server/all/deploy/下存在cluster-service.xml文件;
確認(rèn)…/server/all/lib/下存在jgroups.jar文件,如果沒有則重新安裝jboss。
如果應(yīng)用程序部署在default配置下,則需將上述的兩個(gè)文件分別拷入
…/server/default/deploy/、…/server/default/lib/目錄下。
配置完畢,如有異常,請查看日志。更詳細(xì)的信息請參閱JBOSS.com上提供的admin.pdf。
2.2.3配置數(shù)據(jù)源,調(diào)整參數(shù)
各種類型的數(shù)據(jù)庫,都可以根據(jù)%JBOSS_HOME%/docs/examples/jca/下的示例文檔配置,更詳細(xì)的參數(shù)配置可參閱JBOSS.com上的文檔或…/docs/dtd/下的dtd定義來配置。
下面以oracle為例,提供我們在生產(chǎn)機(jī)環(huán)境的配置。
該xml文件需要被部署在%JBOSS_HOME%/server/all(or default)/deploy/下,對應(yīng)的數(shù)據(jù)庫驅(qū)動(dòng)程序jar需copy至部署的配置的lib下,如…all/lib/或…default/lib/下。
<datasources>
<local-tx-datasource>
<jndi-name>jdbc/TestDataSource</jndi-name>
<connection-url>jdbc:oracle:thin:@192.168.1.2:1521:test</connection-url>
<!--<connection-url>jdbc:oracle:oci:@youroracle-tns-name</connection-url>-->
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>test</user-name>
<password>test</password>
<!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleValidConnectionChecker</valid-connection-checker-class-name>
<!-- Checks the Oracle error codes and messages for fatal errors -->
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->
<min-pool-size>5</min-pool-size><!—最小連接池?cái)?shù)目-->
<max-pool-size>800</max-pool-size><!—最大連接池?cái)?shù)目-->
<idle-timeout-minutes>5</idle-timeout-minutes><!—數(shù)據(jù)庫連接空閑時(shí)間,單位為分鐘,如果負(fù)載較大,可以設(shè)為5,如果一般,可以設(shè)為3-->
<!—在從連接池里獲得一個(gè)連接之前先通過執(zhí)行一個(gè)簡單的SQL來校驗(yàn)connection的有效性-->
<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
</local-tx-datasource>
</datasources>
如有多個(gè)數(shù)據(jù)源,則根據(jù)數(shù)據(jù)庫的類型,配置完成,部署在上述路徑下即可。
在代碼中可通過JNDI來從連接池中獲取連接。
……
Context ctx = new javax.naming.InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:jdbc/TestDataSource ");
Connection con = ds.getConnection();
……
2.2.4配置jboss Connector參數(shù)
以下的配置是介紹load balancing所使用的協(xié)議(AJP 1.3 Connector)的服務(wù),
更準(zhǔn)確的有效參數(shù)以及HTTP/1.1 Connector的配置。
請參閱:
http://tomcat.apache.org/tomcat-5.0-doc/config/ajp.html
http://tomcat.apache.org/tomcat-5.0-doc/config/http.html
jboss3.2.3配置…/jbossweb-tomcat41.sar/META-INF/jboss-service.xml,jboss3.2.6配置…./jbossweb-tomcat50.sar/server.xml
<!-- jboss3.2.3 jboss-service.xml -->
<!-- A AJP 1.3 Connector on port 8009 -->
<Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
address="${jboss.bind.address}" port="8009" minProcessors="5" maxProcessors="1000" enableLookups="true" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" useURIValidationHack="false"
protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
<!-- jboss3.2.6 server.xml -->
<!-- A AJP 1.3 Connector on port 8009 -->
<Connector port="8009" address="${jboss.bind.address}"
enableLookups="false" redirectPort="8443" debug="0"
maxProcessors ="1000" minProcessors=”5” acceptCount="100"
protocol="AJP/1.3"/>
簡單解釋一兩個(gè)參數(shù)(以tomcat5.0為準(zhǔn)):
maxProcessors:最大并發(fā)數(shù)(連接數(shù))
minProcessors:初始化時(shí)啟動(dòng)的最小的進(jìn)程數(shù)
acceptCount:在當(dāng)前connector的連接數(shù)達(dá)到最大時(shí),允許進(jìn)入等待隊(duì)列的數(shù)目
connectionTimeout:連接超時(shí)時(shí)間,單位為毫秒
enableLookups:是否允許通過DNS lookups,返回遠(yuǎn)程客戶端的機(jī)器名,如果設(shè)為false,則只能返回IP地址。該參數(shù)默認(rèn)為true,如果不需要,可以禁掉,設(shè)為false,可以提高服務(wù)器的性能
maxPostSize:設(shè)定允許透過POST上傳參數(shù)的字節(jié)數(shù),默認(rèn)是2M(2097152),如果想禁掉該限制,則將該值設(shè)為一個(gè)小于或等于0 的值,如0、-1,如果所部署的應(yīng)用中有上傳工作,則需注意該配置
port="8009":這個(gè)值要與上述”1.4.3.workers2.properties”中的port一致
redirectPort="8443":是制定如果用了SSL機(jī)制訪問服務(wù)的話,將會轉(zhuǎn)向的端口,請參閱SSL相關(guān)的配置文檔。
debug="0":這是配置日志級別的,可以忽略,因?yàn)樵撛O(shè)置依賴于log4j的配置文件的設(shè)置,server/all/conf/log4j.xml
2.2.5訪問URL如果是目錄,不想顯示該目錄下文件
jboss3.2.3:
修改…/server/all(or default)/deploy/….sar/web.xml
jboss3.2.6/jboss4.0:
修改…/server/all(or default)/deploy/….sar/conf/web.xml
查看紫色斜體字符,設(shè)為false表示不列出目錄。默認(rèn)是設(shè)為true
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>
org.apache.catalina.servlets.DefaultServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
2.2.6設(shè)置某個(gè)應(yīng)用APP為默認(rèn)應(yīng)用
通常情況下,如果我們部署的應(yīng)用目錄為…/server/all(or default)/deploy/….sar/Test.war/,則我們應(yīng)用部署完后,我們訪問的路徑類似于:http://…./Test/index.htm,如果我們想去掉Test這個(gè)APP Name,則如下設(shè)置即可。
在你需要設(shè)為默認(rèn)應(yīng)用的那個(gè)war目錄,如上述Test.war/WEB-INF/ 下新建一個(gè)文件,文件名為jboss-web.xml,內(nèi)容如下:
<jboss-web>
<context-root>/</context-root>
</jboss-web>
重啟服務(wù)后,以http://…./index.htm即可訪問部署于Test.war/下的應(yīng)用。
2.2.7配置數(shù)據(jù)源在APP應(yīng)用加載前有效(各相關(guān)服務(wù)加載完畢)
這個(gè)經(jīng)驗(yàn)的獲知花費(fèi)了一周多,后來結(jié)合jboss wiki/forum的文檔,有了靈感,才得以解決。詳細(xì)的介紹可參閱下面帖子,這是我發(fā)的一個(gè)求助帖,后來自己給解決后把答案貼上了。
http://www.jboss.com/index.html?module=bb&op=viewtopic&t=70600
http://www.javaworld.com.tw/jute/post/view?bid=9&id=129747&sty=1&tpg=1&age=0(中文)
以下簡略說明一下。
我們部署一個(gè)應(yīng)用(項(xiàng)目),應(yīng)用啟動(dòng)之初一般都進(jìn)行若干初始化吧,可能會從文件里、數(shù)據(jù)庫里獲取一些基礎(chǔ)數(shù)據(jù)或配置項(xiàng)等等。
如果從數(shù)據(jù)庫里獲取基礎(chǔ)數(shù)據(jù),則我們必須確保配置的那些數(shù)據(jù)源及相關(guān)的服務(wù)在我們應(yīng)用開始加載之前生效(已經(jīng)啟動(dòng)或加載完畢);也就是說,在我們部署應(yīng)用的一些初始化數(shù)據(jù)方法里要能正常獲取數(shù)據(jù)。如果你不做一些設(shè)置,僅僅是將配好的ds_oracle_test.xml扔到…/deploy/下,那么很遺憾的告訴你,你的應(yīng)用在初始化數(shù)據(jù)階段根本不能從連接池中獲取到連接,進(jìn)而獲取數(shù)據(jù)。如要達(dá)到你初始化數(shù)據(jù)的目的,請按照上面我提供的那個(gè)帖子連接去查看詳細(xì)的信息,下面我僅提供解決方法。
1)、配置數(shù)據(jù)源:
<!--oracle_ds.xml-->
<datasources>
<local-tx-datasource>
<jndi-name>jdbc/test</jndi-name>
2)確認(rèn)datasource依賴的服務(wù)名
透過http://wiki.jboss.org/wiki/Wiki.jsp?page=DependOnDataSource我們發(fā)現(xiàn):
======原文引用==============
! Depending on a DataSource
To specify a dependency on a DataSource deployment, you need to depend on the service which binds the DataSource into JNDI.
The DataSource is not bound into JNDI until the service jboss.jca:service=DataSourceBinding,name=(jndi-name) has been
started. The (jndi-name) is the value of the jndi-name attribute for your DataSource as defined in the *-ds.xml.
The associated connection manager service is a function of the type of DataSource and its jndi-name attribute value. The
MBean names for the types of DataSource deployments are:
1 |
no-tx-datasource jboss.jca:service=NoTxCM?,name=(jndi-name) local-tx-datasource jboss.jca:service=LocalTxCM?,name=(jndi-name) xa-datasource jboss.jca:service=XATxCM?,name=(jndi-name) no-tx-connection-factory jboss.jca:service=NoTxCM?,name=(jndi-name) tx-connection-factory jboss.jca:service=TxCM?,name=(jndi-name) |
通過上述描述可以知道,數(shù)據(jù)源配置不同,則對應(yīng)的依賴服務(wù)名信息也不同。
根據(jù)上述描述及數(shù)據(jù)源配置,相關(guān)的服務(wù)名就是:
"jboss.jca:service=LocalTxCM,name=jdbc/test".
我修改了 ...sar/...war/WEB-INF/jboss-web.xml(如果不存在該文件,就創(chuàng)建它),然后運(yùn)行jboss,就可以在初始化時(shí)找到datasource,并正確獲取數(shù)據(jù)了!!!
配置文件如下:
1 |
<jboss-web> <depends>jboss.jca:service=LocalTxCM,name=jdbc/test</depends> </jboss-web> |
2.2.8日志配置,配置log4j.xml
JBOSS的日志模塊集成了強(qiáng)大的LOG4J組件,我們可以直接配置$JBOSS_HOME/server/default/conf/log4j.xml,來定義日志級別或是將某幾個(gè)類的日志輸出到一個(gè)單獨(dú)的文件。
以下簡單羅列一下配置文件,具體的LOG4J的使用請參閱LOG4J文檔或JBOSS的文檔。
<appender name="ImportCharge" class="org.jboss.logging.appender.DailyRollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.home.dir}/log/importCharge.log"/>
<param name="Append" value="true"/>
<!-- Rollover at midnight each day -->
<param name="DatePattern" value="'.'yyyy-MM-dd"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- The default pattern: Date Priority [Category] Message\n -->
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<logger name="com.tt.bs.action.corp.ImportChargeFileAction">
<level value="DEBUG" />
<appender-ref ref="ImportCharge"/>
</logger>
<category name=" com.tt.bs.action.corp.UploadChargeFileAction ">
<priority value="DEBUG" />
<appender-ref ref=" ImportCharge "/>
</category>
category或logger的寫法都可以,建議用最下面的寫法,這是文檔中的標(biāo)準(zhǔn)寫法。
上面的最后兩個(gè)代碼塊,表示所列的兩個(gè)ACTION將會引用“ImportCharge”這個(gè)appender,他們中的log.debug….的日志將會同時(shí)寫入“importCharge.log”文件。
還可以參考:
http://wiki.jboss.org/wiki/Wiki.jsp?page=Logging
http://logging.apache.org/log4j/docs/
2.2.9配置contentType及charset,TOMCAT5.0下JSP統(tǒng)一配置
在JSP里頭部一般要用page語句指定contentType及charset。
如:<%@ page contentType="text/html; charset=GBK" %>
或分開寫:
– <%@ page contentType="MIME-Type" %>
– <%@ page pageEncoding="Character-Set" %>
該語句的作用是“指定由JSP頁面生成的servlet生成的頁面的MIME類型及charset”。默認(rèn)的字符集是“ISO-8859-1”,如果不指定正確的charset,則我們的頁面如有中文,是會亂碼的。
我主要描述的是后者,charset,字符集。發(fā)生的場景位于一個(gè)頁面包含另一個(gè)頁面的情況下。
在JBOSS3.2.3下集成的是tomcat4.0*,用的是JSP1.2/Servlet2.3標(biāo)準(zhǔn),要求JSP主頁面和所包含頁面中的“pageEncoding”必須一致,基于這一情況,我們一般做法是包含頁面不指定“pageEncoding”,它的屬性直接繼承父頁面即可。
在JBOSS3.2.6下,集成的是tomcat5.0*,要求每個(gè)JSP中必須有“pageEncoding”,換句話說,父頁面中的指定對子頁面沒有影響。
有兩個(gè)方法可解決該問題:
1、為每個(gè)頁面指定“pageEncoding”,顯然不可??!
2、用JSP2.0/Servlet2.4標(biāo)準(zhǔn),統(tǒng)一配置一下WEB.XML,解析JSP時(shí)統(tǒng)一用一個(gè)“pageEncoding”.這樣我們就不需要為每個(gè)JSP里加個(gè)聲明了。
法2的配置細(xì)節(jié)如下:
配置$JBOSS-HOME/server/default/deploy/jbossweb-tomcat50.sar/TestCrm.war/WEB-INF/web.xml,為下面紫色斜體內(nèi)容。
替換頭部的命名空間聲明:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
………
………
<jsp-config>
<jsp-property-group>
<description>jsp encoding example</description>
<display-name>JSPConfiguration</display-name>
<url-pattern>*.jsp</url-pattern>
<el-ignored>true</el-ignored>
<page-encoding>GBK</page-encoding>
<scripting-invalid>false</scripting-invalid>
<include-prelude></include-prelude>
<include-coda></include-coda>
</jsp-property-group>
</jsp-config>
</web-app>
說明:<jsp-config>的配置說明
你可以在<jsp-property-group>中使用以下的配置元素:
Element |
描述 |
<el-ignored> |
如果設(shè)置為true, 在匹配指定的URL模式的JSP 頁面中,EL 表達(dá)式被當(dāng)作常規(guī)的文本而不是EL 表達(dá)式。當(dāng)移植看起來有EL表達(dá)式文本的JSP 1.2頁面到JSP 2.0的時(shí)候,這非常有用。在已經(jīng)轉(zhuǎn)換為JSP 2.0的頁面中,你可以使用一個(gè)新增的“elIgnoredpage”屬性來選擇EL是否有效 |
<scripting-invalid> |
如果設(shè)置為true, 在某個(gè)匹配的JSP頁面使用腳本 |
<page-encoding> |
為匹配指定的URL模式的JSP頁面指定編碼。這是一個(gè)可選的配置(在每一個(gè)JSP頁面中指定頁面的編碼),并且對于JSP頁面來說這是使用某些文件編碼(比如:EBCDIC)唯一的辦法 |
<include-coda> |
為所有匹配指定的URL模式的JSP頁面的末尾自動(dòng)包含一個(gè)文件,而指定相關(guān)的context路徑。你可以在一個(gè)<jsp-property-group>中多次使用,或者通過多個(gè)<jsp-property-group>來實(shí)現(xiàn) |
<include-prelude> |
為所有匹配指定的URL模式的JSP頁面的開頭自動(dòng)包含一個(gè)文件,而指定相關(guān)的context路徑。你可以在一個(gè)<jsp-property-group>中多次使用,或者通過多個(gè)<jsp-property-group>來實(shí)現(xiàn) |
<is-xml> |
如果設(shè)置為true, 所有匹配指定的URL模式的JSP頁面使用JSP XML語法(它們是JSP Document) |
可參見http://www.oreilly.com.cn/news/jsppart2.php?c=java
2.3 JVM最小、最大內(nèi)存的設(shè)定
如果采取默認(rèn)配置的話,JVM默認(rèn)只能分配到最大64M內(nèi)存(默認(rèn)大小和JVM版本有關(guān)系),這在生產(chǎn)環(huán)境里肯定是不夠,將會導(dǎo)致用戶通過WEB方式無法訪問應(yīng)用服務(wù),但是系統(tǒng)進(jìn)程中,JBOSS服務(wù)卻沒有宕掉的奇怪現(xiàn)象。
修改$jboss/bin/run.conf文件,找到“#JAVA_OPTS=”,如果沒有該字符串,請?zhí)砑?,并去掉最前面?#8220;#”,修改該字符串(含雙引號)為JAVA_OPTS="-server -Xms512m -Xmx512m”,這是分配JVM的最小和最大內(nèi)存,取決于硬件物理內(nèi)存的大小,建議均設(shè)為物理內(nèi)存的一半。
更詳細(xì)的介紹請參見http://java.sun.com/docs/hotspot/VMOptions.html
2.4 OS字符集問題
如果應(yīng)用服務(wù)需要OS支持GBK字符集,修改文件/etc/sysconfig/i18n
內(nèi)容為:
LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.GB18030:zh_CN:zh"
SYSFONT="lat0-sun16"
SYSFONTACM="8859-15"
2.5 JBOSS服務(wù)的啟動(dòng)、停止
$JBOSS_HOME以及%JBOSS_HOME%為jboss在linux、win下安裝的路徑,如果配置了,直接照樣引用即可。
啟動(dòng):
1、for linux: $JBOSS_HOME /bin/run.sh
2、for win :%JBOSS_HOME%/bin/run.bat
關(guān)閉/停止:
1、for linux: $JBOSS_HOME /bin/ shutdown.sh –S
2、for win :%JBOSS_HOME%/bin/ shutdown –S
可以用tail –f $JBOSS_HOME /server/default/log/server.log來查看jboss服務(wù)的啟動(dòng)或停止的信息。
3.附apache https 服務(wù)器的安裝
以下為李響、譚述綱提供。感謝他們。
apache https 服務(wù)器的安裝
apache 1.x版本需要裝第三方的模塊,mod_ssl,由于我們公司全部采用的是apahce2.x,所以這個(gè)版本的安裝不做討論
apache 2.0以上自帶ssl支持,
但首先要安裝openssl,一般系統(tǒng)自帶的openssl版本較低,最好下載
源碼安裝,例如openssl-0.9.7i
./config
Make
Make test
make install
就可以了
在apache2源碼目錄下執(zhí)行
./configure --prefix=/usr/local/apache --enable-module=so --enable-shared=max --enable-ssl=static --with-ssl=/usr/local/ssl --enable-mods-shared=all
然后
Make
make install
修改httpd.conf 加入SSL支持部分,這里指定使用SSL v2協(xié)議
SSLProtocol -all +SSLv2
SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP
生成認(rèn)證證書
先建立一個(gè) CA 的證書,
首先為 CA 創(chuàng)建一個(gè) RSA 私用密鑰,
[S-1]
openssl genrsa -des3 -out ca.key 1024
系統(tǒng)提示輸入 PEM pass phrase,也就是密碼,輸入后牢記它。
生成 ca.key 文件,將文件屬性改為400,并放在安全的地方。
[S-2]
chmod 400 ca.key
你可以用下列命令查看它的內(nèi)容,
[S-3]
openssl rsa -noout -text -in ca.key
利用 CA 的 RSA 密鑰創(chuàng)建一個(gè)自簽署的 CA 證書(X.509結(jié)構(gòu))
[S-4]
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
然后需要輸入下列信息:
Country Name: cn 兩個(gè)字母的國家代號
State or Province Name: An Hui 省份名稱
Locality Name: Bengbu 城市名稱
Organization Name: Family Network 公司名稱
Organizational Unit Name: Home 部門名稱
Common Name: Chen Yang 你的姓名
Email Address: sunstorm@263.net Email地址
生成 ca.crt 文件,將文件屬性改為400,并放在安全的地方。
[S-5]
chmod 400 ca.crt
你可以用下列命令查看它的內(nèi)容,
[S-6]
openssl x509 -noout -text -in ca.crt
下面要?jiǎng)?chuàng)建服務(wù)器證書簽署請求,
首先為你的 Apache 創(chuàng)建一個(gè) RSA 私用密鑰:
[S-7]
openssl genrsa -des3 -out server.key 1024
這里也要設(shè)定pass phrase。
生成 server.key 文件,將文件屬性改為400,并放在安全的地方。
[S-8]
chmod 400 server.key
你可以用下列命令查看它的內(nèi)容,
[S-9]
openssl rsa -noout -text -in server.key
用 server.key 生成證書簽署請求 CSR.
[S-10]
openssl req -new -key server.key -out server.csr
這里也要輸入一些信息,和[S-4]中的內(nèi)容類似。
至于 extra attributes 不用輸入。
你可以查看 CSR 的細(xì)節(jié)
[S-11]
openssl req -noout -text -in server.csr
下面可以簽署證書了,需要用到腳本 sign.sh
[S-12]
sign.sh server.csr
就可以得到server.crt。
將文件屬性改為400,并放在安全的地方。
[S-13]
chmod 400 server.crt
刪除CSR
[S-14]
rm server.csr
Sign.sh在openssl目錄中沒有。我是在mod_ssl第三方模塊中提取的。
把生成好的文件放在相應(yīng)的認(rèn)證目錄下。如果沒有相應(yīng)的目錄,可以手工建立
以SSL支持的方式啟動(dòng)apache
/usr/local/apache/bin/apachectl startssl