GF 3.0.1 + виртуальный сервер: www.myhost.com:8080/projectname-war => www.myhost.com. Как?

ИЗМЕНИТЬ

Мне нужно изменить www.myhost.com:8080/myproject-war на www.myhost.com. Вот что я пытался:

Я настраиваю файл Virtual Server: server. У меня все еще есть сетевые прослушиватели по умолчанию: http-listener-1 и http-listner-2. Я меняю веб-модуль по умолчанию на ScholarActive#ScholarActive-war.war (единственный вариант в раскрывающемся списке, так как я развертываю только 1 приложение).

Для docroot я пробую это

${com.sun.aas.instanceRoot}/applications/ScholarActive/ScholarActive-war_war

или это

${com.sun.aas.instanceRoot}/applications/ScholarActive/

Оба не работают. На что должен указывать docroot, чтобы это работало?

что я пытаюсь сделать, так это: когда я набираю localhost:8080/ScholarActive-war, мое приложение загружается, я хочу сделать так, чтобы, если я наберу locahost:8080, оно также загрузило приложение, а затем то, что осталось, изменилось порт на 80. Но не повезло. Есть идеи?


person Thang Pham    schedule 05.01.2011    source источник
comment
Вы отбросили половину своего вопроса в своем eidt, что сделало большую часть ответа ниже теперь неактуальным. Возможно, вам следовало рассмотреть возможность публикации вашего редактирования как нового вопроса.   -  person Brian Leathem    schedule 13.01.2011
comment
Извините, я не хотел этого делать.   -  person Thang Pham    schedule 15.01.2011


Ответы (5)


Если вы согласны запускать Glassfish от имени пользователя root, просто отредактируйте файл domain.xml, изменив порт 8080 на порт 80.

Если вы не хотите запускать стеклянную рыбу от имени пользователя root (а вы этого не должны делать), вы можете использовать стеклянную рыбу с помощью apache. Я писал в блоге о http://blog.bleathem.ca/2010/01/glassfish-v2-and-v3-on-same-host-behind.html.

В качестве альтернативы вы можете использовать iptables для маршрутизации всего трафика с порта 80 на порт 8080 следующим образом:

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080 

Что касается 2-й части вопроса - удаление корня контекста, это просто вопрос развертывания вашего приложения с корнем контекста "/". Есть снова несколько способов добиться этого. Вы можете установить корневой контекст для своего веб-приложения с помощью веб-консоли администратора, во время или после его развертывания. Вы можете установить его через командную строку:

asadmin deploy --contextroot "/" webapp.war

Или вы можете установить корневой контекст вашего файла sun-web.xml в /.

В качестве альтернативы вы можете установить веб-модуль по умолчанию для виртуального сервера, аналогично тому, как веб-консоль администратора является веб-модулем по умолчанию для порта 4848. Я никогда не пробовал этого.


Отвечая на отредактированный вопрос: чтобы изменить веб-модуль по умолчанию, из консоли администратора Glassfish (localhost: 4848) перейдите к:

Configuration -> Virtual Servers -> server

Там вы увидите раскрывающийся список для «Веб-модуля по умолчанию». Выберите развернутое веб-приложение. Это приложение теперь будет отвечать на корневой URL-адрес. После того, как я попробовал это сам, я заметил, что после входа в систему меня перенаправили в корень контекста. Возможно, это можно исправить, установив для контекста моего веб-приложения значение «»/» или используя


Еще одна возможность - использовать mod_proxy в apache httpd и отображать " /" порта 80 в "/myWebApp" на порту 8080. Это позволяет полностью избежать описанной выше путаницы.

person Brian Leathem    schedule 10.01.2011
comment
Спасибо. Я читаю это сейчас. Наконец-то я чувствую, что могу решить эту проблему. - person Thang Pham; 11.01.2011
comment
Прямо сейчас я соглашусь с запуском gf от имени пользователя root. Позже я буду инвестировать в ваш блог. У меня есть вопрос, и я надеюсь, что вы можете мне помочь. Прямо сейчас я успешно загружаю свой проект, когда набираю myhost.com. Однако я использую jdbcRealm в качестве аутентификации безопасности. сразу после входа в систему Glassfish автоматически добавляет my-project-war к моему URL-адресу. Итак, мой URL-адрес стал myhost/myproject-war/index.jsf. Теперь, если я вручную изменю свой адрес на myhost.com/index.jsf, он все равно будет работать. Мне вообще не нужно имя проекта по адресу. Я пытаюсь изменить корень контекста на / в файле sun-web.xml, но безуспешно. Любая идея, как это исправить - person Thang Pham; 12.01.2011
comment
Извините, я пропустил 2-ю часть вашего вопроса. Я отредактировал свой ответ с несколькими предложениями. - person Brian Leathem; 12.01.2011
comment
Iptables был очень полезен! - person Quaternion; 13.01.2011

В вашем веб-контейнере вы должны установить /myproject-war в качестве корневого пути, а затем изменить порт прослушивания с 8080 на 80. Перезапустите веб-контейнер, вы можете просматривать веб-страницы через http://localhost/, если вы хотите использовать вместо этого http://www.myhost.com, добавьте строка типа www.myhost.com 127.0.0.1 в конце файла hosts. Это работает только для локального веб-сайта.

person George    schedule 05.01.2011
comment
Мне нужно, чтобы это работало на моем удаленном хосте. Вы тоже умеете? - person Thang Pham; 06.01.2011

Чаще всего я использую tomcat/jboss/jetty с apache и mod_proxy или mod_jk. Таким образом, apache прослушивает порт 80/443 и обращается к серверу j2ee через порт 8080/8443 (или 8009 для mod_jk).

person Jubal    schedule 05.01.2011
comment
Можете ли вы объяснить больше о том, как это сделать. У меня есть сервер Apache. Как мне заставить его говорить с сервером Glassfish через порт 8080 - person Thang Pham; 10.01.2011

Я думаю, что веб-контейнер Glassfish основан на tomcat с tomcat, вы можете назвать файл своего веб-приложения ROOT.WAR, который делает то, что вы хотите. Попробуйте вызвать свое веб-приложение ROOT.war и посмотреть, делает ли оно то, что вам нужно, и сообщите нам об этом.


Невозможно настроить то, что вы хотите, из web.xml, поскольку он содержит только нейтральные настройки поставщика. Параметры, которые необходимо изменить, зависят от сервера приложений. Если вы отредактируете свой пост и сообщите нам, какой сервер приложений вы используете, мы сможем указать вам правильное направление в том, как делать то, что вы хотите.

person ams    schedule 05.01.2011
comment
Я думаю, что это Glassfish v2. В v2 его роль заключалась в обслуживании HTTP-запросов перед веб-контейнером на основе Tomcat. В v3 Grizzly используется как расширяемое микроядро, которое обрабатывает почти все операции в реальном времени, включая отправку HTTP-запросов к веб-расширениям Grizzly. Так что я не думаю, что это сработает. - person Thang Pham; 10.01.2011

Эта страница предоставляет мне решение.

http://blogs.oracle.com/alexismp/entry/glassfish_tip_have_your_application

Однако моя аутентификация безопасности jdbcRealm, сразу после входа в систему Glassfish автоматически добавляет my-project-war к моему URL-адресу. Так

www.myhost.com предложит мне войти

сразу после входа в систему стало

www.myhost.com/мой-проект-война

почему это?

person Thang Pham    schedule 12.01.2011