1、升级到jboss 4.2.2后频繁出现OutOfMemoryError 解决方法:在启动的参数中增加: -XX:PermSize=64M -XX:MaxPermSize=256M 原因分析:查阅文档得知是因为jboss会把一些常用的java的package做缓存,而默认的缓存是很小的,所以会经常抛出 OutOfMemoryError。
2、位于JMSSession Thread中的BeanFactory初始化失败原因分析:跟踪代码后发现commons-logging相关类报出ClassCastException,根据这个分析可能是jboss使用的 commons-logging包版本和项目中使用的commons-logging包版本冲突了。解决方法:用项目的commons-logging包替换jboss中的commons-logging包。
3、JMS中报出的 ClassNotFound 原因分析:跟踪代码后发现是Jboss的EARClassloader只能加载到ear根目录下的lib,而加载不到war/WEB- INF/classes或lib下的类和资源文件,经菲青指点,应该是可以配置将两个classloader合并的。解决方法:打开{JBOSS_HOME}\server\default\deploy\jboss-web.deployer\META-INF下的 jboss-service.xml,将false修改为true,这样Jboss的EARClassloader就可以加载到war下的类和资源了。
4、 Java15Annotation抛出的NPE 原因分析:查看代码后分析Java15Annotation中使用了apache的bcel,而jboss aop也使用了,猜测是两个包版本的冲突。解决方法:用项目的bcel的包替换jboss 4.2.2的bcel的包。
5 新版的 jboss-web.deployer 替换了原来的 jbossweb-tomcat55.sar
有关一些配置文件的说明
cp -f $CONF_PATH/jboss-service.xml $SERVER_HOME/conf/jboss-service.xml (jboss启动 需要首先启动 jboss mbean service 包括 线程池 log4j服务 jndi jaas jta jmx URLDeploymentScanner 等 service)
cp -f $CONF_PATH/bindings.xml $SERVER_HOME/conf/bindings.xml (这里指定了jboss一系列绑定的 访问端口)
cp -f $CONF_PATH/login-config.xml $SERVER_HOME/conf/login-config.xml 这里配置了jmx的用户名密码需要的配置文件console-users.properties
cp -f $CONF_PATH/oracle*ds.xml $SERVER_HOME/deploy/. (数据源 )
cp -f $CONF_PATH/tomcat-jboss-service.xml .default/deploy/jbossweb-tomcat55.sar/META-INF/jboss-service.xml (这里 修改默认的 false 为 true)
cp -f $CONF_PATH/tomcat-server.xml .default/deploy/jbossweb-tomcat55.sar/server.xml (定义了 tomcat的 connector 的配置 注意添加 useBodyEncodingForURI="true")
cp -f $CONF_PATH/jmx_console_web.xml $SERVER_HOME/deploy/jmx-console.war/WEB-INF/web.xml (配合 下面的jboss-web.xml 控制jmx web登录安全)
cp -f $CONF_PATH/jmx_console_jboss_web.xml $SERVER_HOME/deploy/jmx-console.war/WEB-INF/jboss-web.xml (控制台 的登录安全 , 去掉了注释 security-domain)
cp -f $CONF_PATH/web_console_web.xml $SERVER_HOME/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml (配合 下面的 jboss-web.xml 使得登录控制台需要登录)
cp -f $CONF_PATH/web_console_jboss_web.xml $SERVER_HOME/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml (去掉注释了 security-domain)
cp -f $CONF_PATH/console-users.properties $SERVER_HOME/conf/props/. (访问jboss jmx 的用户名和密码)
apache+jboss的部署环境,出现多个用户访问的时候, 就会导致页面首页都不能访问,挂在那里,后台也没有错误日志,重启apache 后 又可以访问,但一旦多个用户访问 又导致前面的现象,仍然必须重启apache。后来发现 这个后台的apache版本是2.0的 而其他的 前台 都是 2.2的 ,我们升级为2.2后,就没有这个问题了 (应该是mod_jk的版本升级)!
jboss启动脚本要加 -b 0.0.0.0 后才可以让外部IP访问
JBoss4.2.x与jBoss4.0.x在整体架构上没有很大变化,只是在某些组件上做了升级以及bug修复。
主要修改点有:
1. JBoss4.2必须需要安装jdk5
2. JBoss Ejb3默认被安装
3. JBoss的web容器使用JBoss Web v2.x (集成tomcat6)
4. deploy/jboss-web.deployer 目录替换了原先的deploy/jbossweb-tomcat55.sar
5. JBoss Transactions v4.2为默认的事务管理器
6. JBoss WS提供web service功能
7. JGroups/JBossCache支持 channel multiplexing
8. JBoss Remoting更新到stable 2.2.x,JBossMQ(JBoss4.0使用)为默认JMS实现,但是可以使用JBoss Messaging替换。
9. EJB调用方式 由 rmi-invoker替换为JBoss Remoting 的 unified-invoker
10. log4j 和 commons-logging 升级到新版本