JBOSS4.2.2 EJB WEB 群集配置与部署全过程

  目录

完整参考资料 JBOSS4指南 

http://docs.jboss.org/jbossas/jboss4guide/r5/jboss4guide.zip

 

1.   修改虚拟机的参数

run.batrun..conf 文件中的jvm堆大小,如果是用SunHPJDK需要设置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]

 

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

 

如启动所有配置并绑定IP192.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,中的IsloatedCallByValue  true

                    true             true             true   

3.修改 deploy/jboss-web.deployer/META-INF/jboss-service.xml中的Java2ClassLoadingCompliance  UseJbossWebLoadertrue

            true             true

 

9.   应用部署

EJBjar包和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的配置来部署集群则不需这一步,只有下面12两步是default配置要多做的工作。

 

1.  $JBOSS_HOME /server/all/deploy 下的cluster-service.xmljboss-web-cluster.sar复制到$JBOSS_HOME /server/default/deploy

2.  $JBOSS_HOME /server/all/lib 下的jgroups.jarjbossha.jar复制到$JBOSS_HOME /server/default/lib

 

11.2.    配置Jboss节点

session复制配置

jboss session复制是jboss session同步的一种实现。原理是在各Jboss节点间建立横向联系,每个节点都将本节点的session变化同步到其他所有节点上。

jbosssession复制与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复制有UDPTCP两种方式.UDP采用多播方式,但问题比较多,所以采用TCP方式。

找到 >生效.并对该部分进行以下修改:

  • 将全部down_threadup_threadfalse都改为true.
  • 后填入本机和集群其他全部Jboss节点的IP[7810],比如

 

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 [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 /* 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。所以上述文件定义了两个节点:server1server28009端口是jboss默认的ajp端口,另外需要注意的是worker.server2.lbfactor参数,它是节点的负载加权,它的值越大,获得负载的机会就越大。可以根据node的硬件性能进行调整。worker. router.sticky_session参数是指定是否使用粘性session。配置了http session复制就可以不需要粘性session。上面配置的是不使用粘性sessionworker.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

 

 name="jboss.web" defaultHost="localhost"> 改为

 name="jboss.web" defaultHost="localhost"  jvmRoute="server1"

注意: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

你可能感兴趣的:(JAVA,jboss,ejb,web,session,数据库连接池,集群)