1. 修改虛擬機(jī)的參數(shù)run.bat或run..conf 文件中的jvm堆大小,如果是用Sun或HP的JDK需要設(shè)置MaxPermSize
如:
set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1024m -XX:MaxPermSize=128m
2. 啟動(dòng)執(zhí)行$JBOSS_HOME\bin\run.sh 或run.bat
執(zhí)行 run.bat –h 顯示幫助
usage: run.bat
options:
-h, --help Show this help message
-V, --version Show version information
-- Stop processing options
-D
[=] Set a system property
-d, --bootdir=
Set the boot patch directory; Must be absolute or url
-p, --patchdir=
Set the patch directory; Must be absolute or url
-n, --netboot= Boot from net with the given url as base
-c, --configuration= Set the server configuration name
-B, --bootlib= Add an extra library to the front bootclasspath
-L, --library= Add an extra library to the loaders classpath
-C, --classpath= Add an extra url to the loaders classpath
-P, --properties= Load system properties from the given url
-b, --host= Bind address for all JBoss services
-g, --partition= HA Partition name (default=DefaultDomain)
-u, --udp= UDP multicast address
-l, --log= Specify the logger plugin type
如啟動(dòng)所有配置并綁定IP為192.168.101.20
run.sh –c all –b 192.168.101.20
3. 停止執(zhí)行$JBOSS_HOME\bin\ shutdown.sh 或shutdown.bat
shutdown.sh -S
4. 配置控制臺(tái)安全5. 數(shù)據(jù)庫(kù)連接池將$JBOSS_HOME \docs\examples\jca\oracle-ds.xml復(fù)制為$JBOSS_HOME\server\default\deploy\trms-ds.xml并修改連接參數(shù)。
如下:
rmsdatasource
jdbc:oracle:thin:@192.168.100.54:1529:trms
oracle.jdbc.driver.OracleDriver
rms
rms
org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
5
20
0
Oracle9i
6. 配置服務(wù)器日志$JBOSS_HOME\server\default\conf\jboss-log4j.xml
注釋按日期滾動(dòng)的日志
7. 配置服務(wù)端lib包將應(yīng)用程序的包復(fù)制到$JBOSS_HOME \server\default\lib下,并下刪與JBOSS沖突的應(yīng)用包
antlr-2.7.6.jar
cglib-nodep-2.1_3.jar
commons-collections-3.2.jar
commons-logging-1.1.jar
dom4j-1.6.1.jar
junit-4.1.jar
quartz-1.5.2.jar
r
8. 配置EJB調(diào)用從容器外能夠正常調(diào)用EJB,但是web 應(yīng)用中spring bean調(diào)用EJB出現(xiàn)下面異常
RemoteProxyFailureException: No matching RMI stub method found for: public abstract
從JSP頁(yè)面直接調(diào)用EJB <% Hashtable hs = new Hashtable(); hs.put("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); hs.put("java.naming.provider.url","jnp://localhost:1099"); hs.put("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces"); Context iniCtx = new InitialContext(hs); Object ref = iniCtx.lookup("oss.service.security.business.SecuContainerBo"); oss.service.security.business.SecuContainerBoEJBHome ejbHomeObject = (oss.service.security.business.SecuContainerBoEJBHome) PortableRemoteObject.narrow(ref, oss.service.security.business.SecuContainerBoEJBHome.class); out.print((ejbHomeObject.create()).loadAllAuth(new oss.service.security.domain.SysStaffMember())); %>java.rmi.ServerException: EJBException:; nested exception is: javax.ejb.EJBException: Invalid invocation, check your deployment packaging, method=public abstract
解決辦法:
1.修改 conf/jboss-service.xml 中NamingService 的CallByValue 參數(shù)值為'true'
true
2.修改 deploy/ear-deployer.xml,中的Isloated和CallByValue 為 true
true true true
3.修改 deploy\jboss-web.deployer\META-INF\jboss-service.xml中的Java2ClassLoadingCompliance 和 UseJbossWebLoader為true
true true
9. 應(yīng)用部署將EJB的jar包和WEB的 war 復(fù)制到$JBOSS_HOME\server\default\deplay
如果是集群環(huán)境則復(fù)制到$JBOSS_HOME\server\default\farm
10. 客戶(hù)端調(diào)用l 將$JBOSS_HOME\client\jbossall-client.jar復(fù)制到lib目錄下
l 修改jndi.properties內(nèi)容為
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost:1099
11. JBOSS集群
EJB集群的結(jié)構(gòu)圖
Web負(fù)載均衡集群結(jié)構(gòu)圖
11.1. 部署JBOSS集群服務(wù)
用 $JBOSS_HOME \server\all的配置來(lái)部署集群則不需這一步,只有下面1、2兩步是default配置要多做的工作。
1. 將$JBOSS_HOME \server\all\deploy 下的cluster-service.xml和jboss-web-cluster.sar復(fù)制到$JBOSS_HOME \server\default\deploy
2. 將$JBOSS_HOME \server\all\lib 下的jgroups.jar、jbossha.jar復(fù)制到$JBOSS_HOME \server\default\lib
11.2. 配置Jboss節(jié)點(diǎn)
session復(fù)制配置
jboss session復(fù)制是jboss session同步的一種實(shí)現(xiàn)。原理是在各Jboss節(jié)點(diǎn)間建立橫向聯(lián)系,每個(gè)節(jié)點(diǎn)都將本節(jié)點(diǎn)的session變化同步到其他所有節(jié)點(diǎn)上。
jboss的session復(fù)制與HTTP集群是相互配合、相互獨(dú)立的兩個(gè)系統(tǒng)。session復(fù)制是節(jié)點(diǎn)間的橫向聯(lián)系,HTTP集群是負(fù)載均衡器與節(jié)點(diǎn)的縱向聯(lián)系。
l $JBOSS_HOME/ server/default/deploy/jboss-web-cluster.sar /META-INF/jboss-service.xml和 $JBOSS_HOME/ server/default/deploy/cluster-service.xml
注意:集群的各節(jié)點(diǎn)需要在同一網(wǎng)段.
兩個(gè)文件都要修改,前者是web session復(fù)制的,后者是jboss EJB等集群
找到到全部注釋掉. jboss session復(fù)制有UDP和TCP兩種方式.UDP采用多播方式,但問(wèn)題比較多,所以采用TCP方式。
找到 到生效.并對(duì)該部分進(jìn)行以下修改:
將全部down_thread和up_thread的false都改為true.
在
在
l $JBOSS_HOME/ server/default/deploy/jboss-web-cluster.sar /META-INF/jboss-service.xm中的其他參數(shù)
ClusterName是集群名稱(chēng) 在同一局域網(wǎng)內(nèi),可以存在多個(gè)jboss集群,根據(jù)集群名稱(chēng)區(qū)分它們.所以,集群中各節(jié)點(diǎn)配置的集群名稱(chēng)必須一致,而機(jī)器IP則沒(méi)有特殊要求,只要它們能相互連通. 理論上,可以在一臺(tái)機(jī)器上安裝多個(gè)Jboss實(shí)例,分屬于不同的集群.但這會(huì)極大地增加復(fù)雜度,是不好的配置方式.嚴(yán)重不建議給自己找麻煩。
IsolationLevel是隔離等級(jí). 可選值包括:SERIALIZABLE, REPEATABLE_READ, READ_COMMITTED, READ_UNCOMMITTED, 和 NONE。這里的隔離級(jí)別和數(shù)據(jù)庫(kù)的隔離級(jí)別有同樣的含義,對(duì)于大多數(shù)WEB應(yīng)用程序來(lái)講通常設(shè)置為REPEATABLE_READ。
CacheMode是緩存模式。 由于session復(fù)制是通過(guò)緩存實(shí)現(xiàn)的,所以實(shí)際上是復(fù)制模式.可選值包括:REPL_SYNC 和REPL_ASYNC,確定改變是應(yīng)該同步還是異步復(fù)制。缺省值是REPL_ASYNC.使用同步復(fù)制,確保在請(qǐng)求完成之前傳播改變,session同步?jīng)]有滯后,但效率低。
11.3. 配置應(yīng)用程序
在應(yīng)用程序的web.xml的段中增加。
在jboss-web.xml中增加以下內(nèi)容:
trms
SET_AND_NON_PRIMITIVE_GET
SESSION
true
l 客戶(hù)端jndi.properties內(nèi)容為
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=192.168.101.19:1099, 192.168.101.20:1099
11.4. Apache負(fù)載均衡
11.4.1. 下載mod_jk
http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/ 到%apache%\modules 下
11.4.2. 修改%apache%\conf\httpd.conf
在文件末尾添加: Include conf/mod_jk2.conf
11.4.3. 在%apache%\conf下新建文件mod_jk2.conf
文件內(nèi)容如下:
# Load mod_jk module. Specify the filename
# of the mod_jk lib you’ve downloaded and
# installed in the previous section
LoadModule jk_module modules/mod_jk.so
# Where to find workers.properties
JkWorkersFile conf/workers2.properties
# Where to put jk logs
JkLogFile logs/mod_jk.log
# Set the jk log level
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 /* router
其中JkMount /* router的意思是,把所有的請(qǐng)求都發(fā)給router處理。可以通過(guò)修改url來(lái)控制發(fā)送某些request。
11.4.4. 在%apache%\conf下新建文件workers2.properties
其內(nèi)容為:
# The advanced router LB worker
worker.list=router
# Define the first node...
worker.server1.port=8009
worker.server1.host=192.168.101.19
worker.server1.type=ajp13
worker.server1.lbfactor=1
worker.server1.redirect=server2
# Define the first node...
worker.server2.port=8009
worker.server2.host=192.168.101.20
worker.server2.type=ajp13
worker.server2.lbfactor=1
# Define prefered failover node for server1
worker.server2.redirect=server1
# Now we define the load-balancing behaviour
worker.router.type=lb
worker.router.balance_workers=server2,server1
worker.router.sticky_session=0
# Add the status worker to the worker list
worker.list=jkstatus
# Define a 'jkstatus' worker using status
worker.jkstatus.type=status
# Add the jkstatus mount point
JkMount /jkmanager/* jkstatus
# Enable the JK manager access from localhost only
JkMount jkstatus
Order deny,allow
Deny from all
Allow from 127.0.0.1
其中對(duì)于node的命名規(guī)則是worker.節(jié)點(diǎn)名.xxxx。所以上述文件定義了兩個(gè)節(jié)點(diǎn):server1和server2。8009端口是jboss默認(rèn)的ajp端口,另外需要注意的是worker.server2.lbfactor參數(shù),它是節(jié)點(diǎn)的負(fù)載加權(quán),它的值越大,獲得負(fù)載的機(jī)會(huì)就越大。可以根據(jù)node的硬件性能進(jìn)行調(diào)整。worker. router.sticky_session參數(shù)是指定是否使用粘性session。配置了http session復(fù)制就可以不需要粘性session。上面配置的是不使用粘性session。worker.server1.redirect=為failover轉(zhuǎn)移到哪個(gè)worker
11.4.5. 配置JBOSS支持粘性mod_jk
修改$JBOSS_HOME/ server/default/deploy/jboss-web.deployer/META-INF/jboss-service.xml
false 改為ture
11.4.6. 配置JBOSS支持粘性session
修改$JBOSS_HOME/ server/default/deploy/jboss-web.deployer/META-INF/jboss-service.xml
改為
注意:jvmRoute的值必須和mod_jk中的節(jié)點(diǎn)名字正確對(duì)應(yīng),否則無(wú)法正確路由
1. 修改虛擬機(jī)的參數(shù)... 1
2. 啟動(dòng)... 1
3. 停止... 2
4. 配置控制臺(tái)安全... 2
5. 數(shù)據(jù)庫(kù)連接池... 2
6. 配置服務(wù)器日志... 3
7. 配置服務(wù)端lib包... 4
8. 配置EJB調(diào)用... 4
9. 應(yīng)用部署... 6
10. 客戶(hù)端調(diào)用... 6
11. JBOSS集群... 6
11.1. 部署JBOSS集群服務(wù)... 8
11.2. 配置Jboss節(jié)點(diǎn)... 8
11.3. 配置應(yīng)用程序... 10
11.4. Apache負(fù)載均衡... 10
11.4.1. 下載mod_jk. 10
11.4.2. 修改%apache%\conf\httpd.conf10
11.4.3. 在%apache%\conf下新建文件mod_jk2.conf11
11.4.4. 在%apache%\conf下新建文件workers2.properties. 11
11.4.5. 配置JBOSS支持粘性mod_jk. 12
11.4.6. 配置JBOSS支持粘性session. 12-