解决captcha在linux下不显示:
提示信息:"Can't connect to X11 window server"这是由于Linux的图形处理需要一个X Server服务器。
解决办法:
1.如果服务器上安装有图形界面,可以通过设置环境变量:DISPALY=127.0.0.1:0.0解决。
2. 如果没有安装图形界面,可以在Java运行时加上参数:-Djava.awt.headless=true。
3. 使用PJA库来代替本地图形处理库。
因为解决方法1,3依赖系统环境和第三方类库,所以我们使用第2种方案,使用JDK自带的图形处理服务,具体做法如下:
VI编辑Jboss目录bin目录下的run.conf
JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true"
在run.conf最后一行添加就可以了,Tomcat or Weblogic解决方法类似。
另外,如果抛出HeadlessException, 在simple captcha的bugs里有描述。
其实并不复杂,因为引用了GraphicsEnvironment和GraphicsDevice,找不到linux图形处理环境,而我们前面已经选择使用JDK自带的图形处理服务,所以只要注解就行了:
在 DefaultWordRenderer.java 里 包路径为/com/newegg/lab/common/captcha/text注释掉下面3行代码
Java代码
- // GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
- // GraphicsDevice gd = ge.getDefaultScreenDevice();
- // GraphicsConfiguration gc = gd.getDefaultConfiguration();
重新编译后打包,测试后成功。
或者以后升级到最新版,也许captcha开发者会修正此Bug。
Jboss for Linux 开机自启动配置:
例:
1,下载Jboss-4.2.2.GA.zip
2,解压缩unzip Jboss-4.2.2.GA.zip
3,拷贝到指定的目录cp Jboss-4.2.2.GA /usr/java/jboss-4.2.2.GA
4,拷贝jboss启动文件到系统启动目录下
cp /usr/java/jboss-4.2.2.GA/bin/jboss_init_redhat.sh /etc/rc.d/init.d/jboss
备注:jboss_init_redhat.sh 是针对Redhat的脚本,bin目录下还有针对其他OS的
5,增加jboss用户:(如果下面JBOSS_USER设置为root,即这步可以忽略)
groupadd -g 200 jboss
useradd -u 200 -g jboss jboss
6,编辑vi /etc/rc.d/init.d/jboss
为了使jboss适应所有ip,在文件开头加JBOSS_HOST=${JBOSS_HOST:-"0.0.0.0"}
修改对应的java_path,jboss_home,JBOSS_USER
如下:
JBOSS_HOST=${JBOSS_HOST:-"0.0.0.0"}
JBOSS_HOME=${JBOSS_HOME:-"/usr/java/jboss-4.2.2.GA"}
#define the user under which jboss will run, or use 'RUNASIS' to run as the current user
JBOSS_USER=${JBOSS_USER:-"root"}
#make sure java is in your path
JAVAPTH=${JAVAPTH:-"/usr/java/jdk1.6.0_14/bin"}
JBOSS_CONF=${JBOSS_CONF:-"default"}(部署目录的设置,有all,default,minimal三种,如果是jboss集群需设置为all)
7,配置系统自启动文件(两种方法,选一种即可)
(1)JBoss启动sh文件设定
# ln -s /etc/init.d/jboss /etc/rc0.d/K20jboss
# ln -s /etc/init.d/jboss /etc/rc3.d/S80jboss
# ln -s /etc/init.d/jboss /etc/rc5.d/S80jboss
3.设置运行权限
# chmod -f 755 /etc/init.d/jboss
(2)修改rc.local
编辑vi /etc/rc.d/rc.local 添加下面这一行
/etc/rc.d/init.d/jboss start
配置完成,重新启动即可。
如果想要把Jboss配置成服务,编辑vi /etc/rc.d/init.d/jboss,修改如下相应的地方
#define the classpath for the shutdown class
JBOSSCP=${JBOSSCP:-"$JBOSS_HOME/bin/shutdown.sh -S"}
#define the script to use to start jboss
JBOSSSH=${JBOSSSH:-"$JBOSS_HOME/bin/run.sh -c $JBOSS_CONF -b $JBOSS_HOST"}
JBOSS_CMD_START="cd $JBOSS_HOME/bin; $JBOSSSH"
JBOSS_CMD_STOP=${JBOSS_CMD_STOP:-"cd $JBOSS_HOME/bin; $JBOSSCP"}
配置完成后即可用serivce jboss start启动,service jboss stop停止。
Jboss for Linux配置优化:
1,优化JBOSS内存配置:(服务器物理内存以2G为例)
vi /usr/java/jboss-4.2.2.GA/bin/run.conf
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms512m –Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"
fi
这些是配置JBoss运行的JVM优化参数。
-Xms512m 初始的java内存堆大小 512M
-Xmx1024m 最大的java内存堆大小 1024M
-XX:PermSize=256m GC预留的内存,如果你的应用有大量的Class被动态载入或卸载,你应该把这个参数设大些
-XX:MaxPermSize=256m 最大的GC预留内存
-Dsun.rmi.dgc.client.gcInterval=3600000 RMI客户端GC发生周期的设定
-Dsun.rmi.dgc.server.gcInterval=3600000 RMI服务端GC发生周期的设定
2,去掉和应用无关的部署,加快jboss运行速度
bsh-deployer.xml
client-deployer-service.xml
ear-deployer.xml
ejb-deployer.xml
http-invoker.sar
jboss-bean.deployer
jboss-ws4ee.sar
jms
jsr88-service.xml
schedule-manager-service.xml
scheduler-service.xml
sqlexception-service.xml
uuid-key-generator.sar