大魚

          JBOSS4.2.2 EJB WEB 群集配置與部署全過程

          1. 修改虛擬機的參數(shù)run.bat或run..conf 文件中的jvm堆大小,如果是用Sun或HP的JDK需要設(shè)置MaxPermSize
          如:
          set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1024m -XX:MaxPermSize=128m
          2. 啟動執(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

          如啟動所有配置并綁定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. 配置控制臺安全5. 數(shù)據(jù)庫連接池將$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

          注釋按日期滾動的日志












          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頁面直接調(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. 客戶端調(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負載均衡集群結(jié)構(gòu)圖

          11.1. 部署JBOSS集群服務(wù)
          用 $JBOSS_HOME \server\all的配置來部署集群則不需這一步,只有下面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é)點
          session復(fù)制配置
          jboss session復(fù)制是jboss session同步的一種實現(xiàn)。原理是在各Jboss節(jié)點間建立橫向聯(lián)系,每個節(jié)點都將本節(jié)點的session變化同步到其他所有節(jié)點上。
          jboss的session復(fù)制與HTTP集群是相互配合、相互獨立的兩個系統(tǒng)。session復(fù)制是節(jié)點間的橫向聯(lián)系,HTTP集群是負載均衡器與節(jié)點的縱向聯(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é)點需要在同一網(wǎng)段.
          兩個文件都要修改,前者是web session復(fù)制的,后者是jboss EJB等集群
          找到全部注釋掉. jboss session復(fù)制有UDP和TCP兩種方式.UDP采用多播方式,但問題比較多,所以采用TCP方式。
          找到 生效.并對該部分進行以下修改:
          將全部down_thread和up_thread的false都改為true.



          l $JBOSS_HOME/ server/default/deploy/jboss-web-cluster.sar /META-INF/jboss-service.xm中的其他參數(shù)
          ClusterName是集群名稱 在同一局域網(wǎng)內(nèi),可以存在多個jboss集群,根據(jù)集群名稱區(qū)分它們.所以,集群中各節(jié)點配置的集群名稱必須一致,而機器IP則沒有特殊要求,只要它們能相互連通. 理論上,可以在一臺機器上安裝多個Jboss實例,分屬于不同的集群.但這會極大地增加復(fù)雜度,是不好的配置方式.嚴重不建議給自己找麻煩。
          IsolationLevel是隔離等級. 可選值包括:SERIALIZABLE, REPEATABLE_READ, READ_COMMITTED, READ_UNCOMMITTED, 和 NONE。這里的隔離級別和數(shù)據(jù)庫的隔離級別有同樣的含義,對于大多數(shù)WEB應(yīng)用程序來講通常設(shè)置為REPEATABLE_READ。
          CacheMode是緩存模式。 由于session復(fù)制是通過緩存實現(xiàn)的,所以實際上是復(fù)制模式.可選值包括:REPL_SYNC 和REPL_ASYNC,確定改變是應(yīng)該同步還是異步復(fù)制。缺省值是REPL_ASYNC.使用同步復(fù)制,確保在請求完成之前傳播改變,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 客戶端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負載均衡
          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的意思是,把所有的請求都發(fā)給router處理。可以通過修改url來控制發(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


          其中對于node的命名規(guī)則是worker.節(jié)點名.xxxx。所以上述文件定義了兩個節(jié)點:server1和server2。8009端口是jboss默認的ajp端口,另外需要注意的是worker.server2.lbfactor參數(shù),它是節(jié)點的負載加權(quán),它的值越大,獲得負載的機會就越大。可以根據(jù)node的硬件性能進行調(diào)整。worker. router.sticky_session參數(shù)是指定是否使用粘性session。配置了http session復(fù)制就可以不需要粘性session。上面配置的是不使用粘性session。worker.server1.redirect=為failover轉(zhuǎn)移到哪個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é)點名字正確對應(yīng),否則無法正確路由



          1. 修改虛擬機的參數(shù)... 1
          2. 啟動... 1
          3. 停止... 2
          4. 配置控制臺安全... 2
          5. 數(shù)據(jù)庫連接池... 2
          6. 配置服務(wù)器日志... 3
          7. 配置服務(wù)端lib包... 4
          8. 配置EJB調(diào)用... 4
          9. 應(yīng)用部署... 6
          10. 客戶端調(diào)用... 6
          11. JBOSS集群... 6
          11.1. 部署JBOSS集群服務(wù)... 8
          11.2. 配置Jboss節(jié)點... 8
          11.3. 配置應(yīng)用程序... 10
          11.4. Apache負載均衡... 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-

          posted on 2010-04-14 16:33 大魚 閱讀(903) 評論(0)  編輯  收藏 所屬分類: JBOSS

          主站蜘蛛池模板: 伊川县| 银川市| 东乡族自治县| 淮北市| 鄱阳县| 凌海市| 河西区| 崇义县| 台南市| 涪陵区| 高陵县| 建宁县| 弋阳县| 吉木乃县| 秦安县| 巴林左旗| 抚州市| 黔南| 仁布县| 石台县| 龙胜| 华阴市| 吉林省| 岑巩县| 长乐市| 香格里拉县| 南部县| 南开区| 宣恩县| 射洪县| 石嘴山市| 女性| 邵武市| 鱼台县| 湘西| 都安| 岗巴县| 汝城县| 泌阳县| 苍山县| 黎川县|