长时间使用机器后,中间安装了一些开源软件,也更改过一些端口,导致JBOSS莫名其妙的不能启动。
第一步:启动后报error为,8083端口已经被占用。使用cmd查netstat -ano ,因为JBOSS未能启动不能找到ipd为3660的端口使用。
于是计划分别查看修改oracle,mysql,tomcat,sql,weblogic端口号。
并且只修改JBOSS的空端口为8082.
重新启动后报错发现
ERROR [[/]] Exception sending context initialized event to listener instance of class org.jboss.web.jsf.integration.config.JBossJSFConfigureListener。并且跟随大量的deploy error。
第二步:网络上搜索资料,试图解决问题,但是大都文不对题。于是打算自己找问题。先从JBOSS官网上下载了最新的4.2.2版本,然后安装。重新修改%jboss_home%\server\default\conf下jboss_service.xml的8083为8082.并且修改环境变量的jboss_home以及拷贝mysql的jdbc包到jboss中去,修改相应的xml文件路径。全部改完后,再次启动发现问题一样。
第三步:大致上排除了jboss本身的问题,开始考虑jvm的问题。由于我主机上还有jdk1.6和jdk1.4,所以简单更换java_home为jdk1.6,可以正常启动。但是没有听说jdk1.5和jboss4.2有冲突。所以继续探究。
第四步:由于其他的基于java的工具都可以正常使用,jdk不应该少包,于是怀疑是多包。于是卸载jdk1.5,果然在%java_home%\jre\lib\ext下还剩余有包servlet-api.jar。看来就是这个多余的包造成的影响,自己也确曾有过直接往jdk内放包。然后装jdk1.5.4(没有找到updata6),更改环境变量,jboss正常启动。
第五步:将那个多余的包,重新放回,老问题又回来了。于是确定了问题所在。自己这个问题几乎查遍了google和百度,几乎没有好的解答。于是特意写下来给大家分享。
第六步:查servlet-api.jar是tomcat的一个包文件,在单纯使用tomcat开发jsp时需要引入。这里应该是和jboss的某个包文件冲突造成的。又证实同样的问题在weblogic也存在。
收获:
1,jboss确实不是一个好伺候的主子。
2,不要轻易往jvm内加包,可以在classpath上体现出来,方便查证修改。