Я установил GlassFish 3.1.1 и настроил его для работы с Apache Webserver 2.2.x, используя mod_jk.Все отлично работает при использовании порта 8080. Например, пример приложения hello.war , развернутого на GlassFish, прекрасно работает с:
http://www.mydomain.com:8080/hello/
Мой вопрос: что мне нужно изменить (или добавить) таким образом, чтобы я мог получить доступ к приложению hello.war, используя такой адрес (и используя порт 80; чтобы я мог в конечном итоге закрыть порт 8080):
http://www.mydomain.com/hello/
Цель состоит в том, чтобы получить весь внешний трафикПройдите через порт 80 веб-сервера Apache для доступа к GlassFish.Используя инструкции этого сайта в качестве вдохновения, я изменил httpd.conf, добавив в него следующие строки (внутри уже существующих тегов VirtualHost для www.mydomain.com)
JkMount /hello/* worker1
JkMount /hello worker1
Затем перезапускаюApache веб-сервер и перейдите по адресу:
http://www.mydomain.com/hello
и веб-сайт зависает (вращающееся колесо в течение 30 с).В чем может быть проблема?Между Apache и Glassfish нет брандмауэра, нет балансировки нагрузки и кластеризации.Это новый сервер CentOS 6.2 со всеми новыми установками.
Для справки, мой файл httpd.conf включает в себя следующее (помимо прочего):
LoadModule jk_module /etc/httpd/modules/mod_jk.so
JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile /etc/httpd/logs/mod_jk.log
JkLogLevel debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories
JkRequestLogFormat "%w %V %T"
...
Listen 0.0.0.0:80
, а файл glassfish-jk.properties:
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
ОБНОВЛЕНИЕ: 2/11/2012 20:30 Я исправил первоначальную проблему, опубликованную выше.Проблема возникла потому, что (1) была ошибка GlassFish (см. Ответ Кевина ниже об этом открытии), и (2) мне каким-то образом удалось непреднамеренно настроить несколько прослушивателей http, которые прослушивали один и тот же порт 8009. Когда я удалил всеСлушатели, а затем создали одного слушателя, которого я хотел, я смог решить первоначальную цель этой публикации.Однако при просмотре server.log я вижу другую проблему ...
Когда я запускаю сервер GlassFish, я выполняю следующие команды (примечание: порт 4850 - это просто административная веб-консоль, предоставляемая GlassFish;он должен быть там для некоторых команд (не знаю точно, какие именно), но, кажется, он ничем не мешает, будучи рядом со всеми):
# ./asadmin
asadmin> asadmin start-domain --port 4850
asadmin> deploy /path/to/file/hello.war --port 4850
asadmin> create-http-listener --listenerport 8009 --listeneraddress 0.0.0.0 --defaultvs server gf_listener --port 4850
asadmin> create-network-listener --protocol http-listener-1 --listenerport 8009 --jkenabled true jk-connector --port 4850
asadmin> set server-config.network-config.network-listeners.network-listener.jk-connector.jk-configuration-file=/home/glassfish/glassfish3/glassfish/domains/domain1/config/glassfish-jk.properties --port 4850
asadmin> restart-domain --port 4850
Приведенные выше команды взяты непосредственно из Руководство администратора GlassFish (нажмите на ссылку PDF, перейдите на страницу 150. Откроется раздел «Включение mod_jk», см. Шаги 5 и 6 на странице 151).
Я включил фрагмент из журнала сервера GlassFish ниже, показывающий один тип СЕРЬЕЗНОЙ ошибки и ПРЕДУПРЕЖДЕНИЕ для макс. Потоков, слишком низких.
[#|2012-02-11T20:23:23.666-0800|INFO|glassfish3.1.1|javax.enterprise.system.core.com.sun.enterprise.v3.services.impl|_ThreadID=14;_ThreadName=Thread-2;|Grizzly Framework 1.9.36 started in: 43ms - bound to [0.0.0.0:8080]|#]
[#|2012-02-11T20:23:23.666-0800|INFO|glassfish3.1.1|javax.enterprise.system.core.com.sun.enterprise.v3.services.impl|_ThreadID=11;_ThreadName=Thread-2;|Grizzly Framework 1.9.36 started in: 6ms - bound to [0.0.0.0:3700]|#]
[#|2012-02-11T20:23:23.666-0800|INFO|glassfish3.1.1|javax.enterprise.system.core.com.sun.enterprise.v3.services.impl|_ThreadID=12;_ThreadName=Thread-2;|Grizzly Framework 1.9.36 started in: 24ms - bound to [0.0.0.0:4850]|#]
[#|2012-02-11T20:23:23.668-0800|INFO|glassfish3.1.1|javax.enterprise.system.core.com.sun.enterprise.v3.services.impl|_ThreadID=15;_ThreadName=Thread-2;|Grizzly Framework 1.9.36 started in: 2ms - bound to [0.0.0.0:7676]|#]
[#|2012-02-11T20:23:23.691-0800|INFO|glassfish3.1.1|javax.enterprise.system.core.com.sun.enterprise.v3.admin.adapter|_ThreadID=10;_ThreadName=Thread-2;|The Admin Console is already installed, but not yet loaded.|#]
[#|2012-02-11T20:23:23.781-0800|INFO|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=10;_ThreadName=Thread-2;|WEB0169: Created HTTP listener [http-listener-1] on host/port [0.0.0.0:8080]|#]
[#|2012-02-11T20:23:23.788-0800|INFO|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=10;_ThreadName=Thread-2;|WEB0169: Created HTTP listener [http-listener-2] on host/port [0.0.0.0:8181]|#]
[#|2012-02-11T20:23:23.793-0800|INFO|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=10;_ThreadName=Thread-2;|WEB0169: Created HTTP listener [admin-listener] on host/port [0.0.0.0:4850]|#]
[#|2012-02-11T20:23:23.803-0800|INFO|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=10;_ThreadName=Thread-2;|WEB0170: Apache mod_jk/jk2 attached to virtual-server [server] listening on port [8,009]|#]
[#|2012-02-11T20:23:23.806-0800|INFO|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=10;_ThreadName=Thread-2;|WEB0170: Apache mod_jk/jk2 attached to virtual-server [server] listening on port [8,009]|#]
[#|2012-02-11T20:23:23.826-0800|INFO|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=10;_ThreadName=Thread-2;|WEB0171: Created virtual server [server]|#]
[#|2012-02-11T20:23:23.828-0800|INFO|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=10;_ThreadName=Thread-2;|WEB0171: Created virtual server [__asadmin]|#]
[#|2012-02-11T20:23:24.316-0800|INFO|glassfish3.1.1|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=10;_ThreadName=Thread-2;|WEB0172: Virtual server [server] loaded default web module []|#]
[#|2012-02-11T20:23:24.416-0800|SEVERE|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|No class name for worker.worker1 worker|#]
[#|2012-02-11T20:23:24.416-0800|SEVERE|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|No class name for worker.worker1 worker|#]
[#|2012-02-11T20:23:24.416-0800|SEVERE|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|No class name for worker worker|#]
[#|2012-02-11T20:23:24.416-0800|SEVERE|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|No class name for worker.worker1 worker|#]
[#|2012-02-11T20:23:24.417-0800|INFO|glassfish3.1.1|org.apache.jk.common.ChannelSocket|_ThreadID=10;_ThreadName=Thread-2;|JK: ajp13 listening on /0.0.0.0:8009|#]
[#|2012-02-11T20:23:24.426-0800|WARNING|glassfish3.1.1|org.apache.tomcat.util.threads.ThreadPool|_ThreadID=10;_ThreadName=Thread-2;|threadpool.max_threads_too_low|#]
[#|2012-02-11T20:23:24.428-0800|INFO|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|Jk running ID=0 time=0/25 config=null|#]
[#|2012-02-11T20:23:24.434-0800|SEVERE|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|No class name for worker.worker1 worker|#]
[#|2012-02-11T20:23:24.434-0800|SEVERE|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|No class name for worker.worker1 worker|#]
[#|2012-02-11T20:23:24.435-0800|SEVERE|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|No class name for worker worker|#]
[#|2012-02-11T20:23:24.435-0800|SEVERE|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|No class name for worker.worker1 worker|#]
[#|2012-02-11T20:23:24.435-0800|INFO|glassfish3.1.1|org.apache.jk.common.ChannelSocket|_ThreadID=10;_ThreadName=Thread-2;|JK: ajp13 listening on /0.0.0.0:8009|#]
[#|2012-02-11T20:23:24.436-0800|WARNING|glassfish3.1.1|org.apache.tomcat.util.threads.ThreadPool|_ThreadID=10;_ThreadName=Thread-2;|threadpool.max_threads_too_low|#]
[#|2012-02-11T20:23:24.436-0800|INFO|glassfish3.1.1|org.apache.jk.server.JkMain|_ThreadID=10;_ThreadName=Thread-2;|Jk running ID=0 time=0/3 config=null|#]
and so on...
Кто-нибудь знает, как устранить СЕРЬЕЗНЫЕ ошибкидля No class name for worker.worker1 worker
и как устранить threadpool.max_threads_too_low
ПРЕДУПРЕЖДЕНИЕ?
К какому пулу потоков они относятся?Например, когда я набираю: asadmin> list-threadpools server, я получаю следующее:
admin-thread-pool
http-thread-pool
thread-pool-1
Я изменил размер http-thread-pool со значения по умолчанию 5 на значение 200, затем перезапустилGlassFish и посмотрел на файл server.log и ... ничего не меняется (все равно получаю то же сообщение об ошибке выше).Максимальное количество потоков для admin-thread-pool составляет 50, а для thread-pool-1 - 200. Есть идеи, как это исправить?