由于工作需要,现有的web应用必须跑在linux+JDK+jBoss的环境下。早在写此文之前,公司已经成功部署JDK+jBoss在CentOS上,应用运行也正常,但唯一的问题是,验证码不能显示。具体报错为X11FontManager类不能初始化,找遍全网未找到相关问题的原因。大多数说不能访问X Server,使用JDK自带的图形处理类。即设置-Djava.awt.headless=true。全网这方面提议最多。虽然不太懂jBoss的机制,但看了standalone.sh脚本,显示已经开启了-Djava.awt.headless=true,因此我不觉得是这个问题。
standalone.sh运行时的提示信息,显示已经启用了-Djava.awt.headless=true ,因此可以忽略这个问题。
仔细查了一下X11FontManager类,后来得知是Open JDK的一个类。因此,我怀疑是因为安装的SUN JDK与Open JDK引起的混用问题导致的。带着这个疑问,重新安装了一台CentOS,先卸载默认的Open JDK,再安装SUN JDK,最终解决问题。
另外一个问题是,之前安装的环境每次都得用终端命令启动(standalone.sh)时需要加参数 ./standalone.sh -Djboss.bind.address=0.0.0.0”,才可以通过IP来访问jBosse服务器,百思不得其解,互联网的解决方案较多,但jBoss AS 7.1.1的解决方案没有。但最终还是找到了设置的配置文件,去掉了每次加参数启动的方式。
软件版本
CentOS 6 + JDK 7u6 + jBoss AS 7.1.1
详细的部署过程:
删除默认Open JDK:
个人建议使用X11 window窗口删除Open JDK,个人认为terminal终端使用起来较不方便。操作步骤:系统-》管理-》添加/删除软件
在查找栏输入“Open”点击查找,出来很多Open选项,找到关于Open JDK 相关的全部打勾,记得好像是3个,点击应用则删除了。
安装SUN JDK:
下载CentOS可用的JDK版本,由于CentOS的安装程序以“*.rpm”结尾,因此在“Oracle”公司下载linux x86(x64)视系统版本,选择下载64位或32位,并且以“*.rpm”结尾的文件;具体地址:
下载后直接双击安装,安装是傻瓜化的结束之后设置环境变量相关的信息,如下步骤:
在/etc/profile文件末尾添加内容如下:
export JAVA_HOME=/usr/java/jdk1.7.0_06
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
运行:
source /etc/profile
update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_06/bin/java 60
update-alternatives --config java
显示如下信息:
1 /usr/lib/jvm/jre-1.4.2-gcj/bin/java
2 /usr/java/jdk1.7.0_03/bin/java
输入2敲回车
java -version
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_03-b04)
Java HotSpot(TM) 64-Bit Server VM (build 22.1-b02, mixed mode)
OK。JDK安装完毕
至jBoss下载jBoss AS 7.1.1 final()
解压,将其文件夹放到/usr下面
运行/usr/jboss-as-7.1.1.Final/bin下的standalone.sh
此时在linux火狐浏览器下输入地址::8080/
可以看到jboss运行的页面
但此时,同一局域网的其它用户却不能访问您的jboss服务器。
需要做如下2个设置:
1.系统防火墙的设置
系统-》管理-》防火墙,选择可信接口,选择右边的eth+(网卡)打勾,最后点击应用。
2.jBoss配置文件设置
/usr/jboss-as-7.1.1Final/standalone/configuration
打开standalone.xml文件。
修改此节点address内容
<interfaces>
<interface>
<inet-address value="${jboss.bind.address:0.0.0.0}"/>
</interface>
</interfaces>
OK,重新启一下CentOS,直接运行standalone.sh吧;结束了。。。