实战Apache通过jk连接GlassFish v3 || Running GlassFish v3 with Apache httpd via jk

关于GlassFish的文档还真少,配置apache和GlassFishv3协同工作花了我一下午时间才摸索出来。

首先介绍下环境:

Ubuntu 910

Apache 2.2.9

JDK 6u17

GlassFish v3 with J2EE6

mod_jk-1.2.28-httpd-2.2.X.so

首先,把mod_jk-1.2.28-httpd-2.2.X.so改名为mod_jk.so,放置在apache的modules目录下

然后在apache的conf目录新建一个workers.properties文件,内容如下:

Define 1 real worker using ajp13

worker.list=worker1

Set properties for worker1 (ajp13)

worker.worker1.type=ajp13

worker.worker1.host=127.0.0.1

worker.worker1.port=8080

worker.worker1.lbfactor=1

worker.worker1.cachesize=128

worker.worker1.cache_timeout=600

worker.worker1.socket_keepalive=1

#worker.worker1.reclycle_timeout=300

需要注意的是,host和port。host就是GlassFish所在主机的ip,端口就是GlassFish打开jk支持的Network Listener所监听的端口。GlassFish如何打开jk支持下文会讲述。

然后修改apache的httpd.conf文件,加入一些jk相关的配置:

<IfModule !mod_jk.c>

LoadModule jk_module “modules/mod_jk.so”

</IfModule>

Where to find workers.properties

JkWorkersFile conf/workers.properties

Where to put jk logs

JkLogFile logs/mod_jk.log

Set the jk log level [debug/error/info]

JkLogLevel error

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”

JkShmFile logs/mod_jk.shm

如果你希望apache将所有请求都转向jk,那么只需要再加上:

JkMount /* worker1

这里的worker1就是上面workers.properties里配置的worker.list

当然你也可以只指定动态内容,如jsp和action:

JkMount /*.jsp worker1

JkMount /*.action worker1

不过GlassFish处理静态内容的性能已经不错了,而且还有缓存功能,所以我就暂时把所有请求都交给GlassFish了。

如果需要将某个域名的动态请求转发给jk,那么就在httpd.conf里加上:

NameVirtualHost *:80

<VirtualHost *:80>

ServerName www.test.com

JkMount /* worker1

</VirtualHost>

这样,www.test.com的请求都会转发到jk上,并且由jk转发到127.0.0.1:8080了(就是workers.properties配置的host和port上)

下面配置GlassFish v3:

通过浏览器进入GlassFish v3的admin console,展开configuration->network config->network listeners,页面会列出现有的所有监听的端口。例如默认的http-listener1监听8080,http-listener2监听8181,admin-listener监听4848。

点击listener1,进入listener1 的设置,勾选JK Listener: Enabled,如下图:


这样,GlassFish的8080端口就会处理jk发送过来的请求了。

如果在apache配置了Virtual Host转发到jk,那么GlassFish同样需要配置。以上文提到的www.test.com为例:

展开configuration->virtual servers,点击New添加,填写ID,Hosts,选择监听接口(这里选前面配置的http-listener-1)和默认部署的项目即可,如图:

经过这样配置后,就可以通过www.test.com访问GlassFish v3上部署的TomcatServletExample项目了。(前提是在hosts文件中将www.test.com指向apache所在机器的ip,本文是127.0.0.1)

加载评论框需要翻墙