大魚

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

          1. 修改虛擬機的參數run.bat或run..conf 文件中的jvm堆大小,如果是用Sun或HP的JDK需要設置MaxPermSize
          如:
          set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx1024m -XX:MaxPermSize=128m
          2. 啟動執行$JBOSS_HOME\bin\run.sh 或run.bat
          執行 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. 停止執行$JBOSS_HOME\bin\ shutdown.sh 或shutdown.bat
          shutdown.sh -S
          4. 配置控制臺安全5. 數據庫連接池將$JBOSS_HOME \docs\examples\jca\oracle-ds.xml復制為$JBOSS_HOME\server\default\deploy\trms-ds.xml并修改連接參數。
          如下:



          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. 配置服務器日志$JBOSS_HOME\server\default\conf\jboss-log4j.xml

          注釋按日期滾動的日志












          7. 配置服務端lib包將應用程序的包復制到$JBOSS_HOME \server\default\lib下,并下刪與JBOSS沖突的應用包

          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調用從容器外能夠正常調用EJB,但是web 應用中spring bean調用EJB出現下面異常
          RemoteProxyFailureException: No matching RMI stub method found for: public abstract
          從JSP頁面直接調用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 參數值為'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. 應用部署將EJB的jar包和WEB的 war 復制到$JBOSS_HOME\server\default\deplay
          如果是集群環境則復制到$JBOSS_HOME\server\default\farm

          10. 客戶端調用l 將$JBOSS_HOME\client\jbossall-client.jar復制到lib目錄下
          l 修改jndi.properties內容為

          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集群的結構圖

          Web負載均衡集群結構圖

          11.1. 部署JBOSS集群服務
          用 $JBOSS_HOME \server\all的配置來部署集群則不需這一步,只有下面1、2兩步是default配置要多做的工作。

          1. 將$JBOSS_HOME \server\all\deploy 下的cluster-service.xml和jboss-web-cluster.sar復制到$JBOSS_HOME \server\default\deploy
          2. 將$JBOSS_HOME \server\all\lib 下的jgroups.jar、jbossha.jar復制到$JBOSS_HOME \server\default\lib

          11.2. 配置Jboss節點
          session復制配置
          jboss session復制是jboss session同步的一種實現。原理是在各Jboss節點間建立橫向聯系,每個節點都將本節點的session變化同步到其他所有節點上。
          jboss的session復制與HTTP集群是相互配合、相互獨立的兩個系統。session復制是節點間的橫向聯系,HTTP集群是負載均衡器與節點的縱向聯系。

          l $JBOSS_HOME/ server/default/deploy/jboss-web-cluster.sar /META-INF/jboss-service.xml和 $JBOSS_HOME/ server/default/deploy/cluster-service.xml
          注意:集群的各節點需要在同一網段.
          兩個文件都要修改,前者是web session復制的,后者是jboss EJB等集群
          找到全部注釋掉. jboss session復制有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中的其他參數
          ClusterName是集群名稱 在同一局域網內,可以存在多個jboss集群,根據集群名稱區分它們.所以,集群中各節點配置的集群名稱必須一致,而機器IP則沒有特殊要求,只要它們能相互連通. 理論上,可以在一臺機器上安裝多個Jboss實例,分屬于不同的集群.但這會極大地增加復雜度,是不好的配置方式.嚴重不建議給自己找麻煩。
          IsolationLevel是隔離等級. 可選值包括:SERIALIZABLE, REPEATABLE_READ, READ_COMMITTED, READ_UNCOMMITTED, 和 NONE。這里的隔離級別和數據庫的隔離級別有同樣的含義,對于大多數WEB應用程序來講通常設置為REPEATABLE_READ。
          CacheMode是緩存模式。 由于session復制是通過緩存實現的,所以實際上是復制模式.可選值包括:REPL_SYNC 和REPL_ASYNC,確定改變是應該同步還是異步復制。缺省值是REPL_ASYNC.使用同步復制,確保在請求完成之前傳播改變,session同步沒有滯后,但效率低。

          11.3. 配置應用程序
          在應用程序的web.xml的段中增加。
          在jboss-web.xml中增加以下內容:


          trms


          SET_AND_NON_PRIMITIVE_GET
          SESSION
          true





          l 客戶端jndi.properties內容為

          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
          文件內容如下:
          # 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的意思是,把所有的請求都發給router處理??梢酝ㄟ^修改url來控制發送某些request。

          11.4.4. 在%apache%\conf下新建文件workers2.properties
          其內容為:
          # 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的命名規則是worker.節點名.xxxx。所以上述文件定義了兩個節點:server1和server2。8009端口是jboss默認的ajp端口,另外需要注意的是worker.server2.lbfactor參數,它是節點的負載加權,它的值越大,獲得負載的機會就越大??梢愿鶕ode的硬件性能進行調整。worker. router.sticky_session參數是指定是否使用粘性session。配置了http session復制就可以不需要粘性session。上面配置的是不使用粘性session。worker.server1.redirect=為failover轉移到哪個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中的節點名字正確對應,否則無法正確路由



          1. 修改虛擬機的參數... 1
          2. 啟動... 1
          3. 停止... 2
          4. 配置控制臺安全... 2
          5. 數據庫連接池... 2
          6. 配置服務器日志... 3
          7. 配置服務端lib包... 4
          8. 配置EJB調用... 4
          9. 應用部署... 6
          10. 客戶端調用... 6
          11. JBOSS集群... 6
          11.1. 部署JBOSS集群服務... 8
          11.2. 配置Jboss節點... 8
          11.3. 配置應用程序... 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 大魚 閱讀(898) 評論(0)  編輯  收藏 所屬分類: JBOSS

          主站蜘蛛池模板: 太谷县| 汤阴县| 汶上县| 左贡县| 渭南市| 灵川县| 镶黄旗| 富民县| 奈曼旗| 新津县| 措勤县| 平阳县| 中山市| 永寿县| 广灵县| 财经| 屏东市| 胶南市| 宜黄县| 黑河市| 怀来县| 靖边县| 博爱县| 永修县| 政和县| 轮台县| 罗平县| 抚松县| 连南| 安溪县| 内丘县| 吴川市| 光泽县| 黄平县| 漠河县| 长汀县| 丘北县| 山阳县| 包头市| 绥棱县| 濮阳县|