Glassfish JSF/EAR Apache 2.2 proxy_ajp_mod Указанное содержимое отсутствует (изображения / ссылки / и т. Д.)

Полное раскрытие: так как это, кажется, больше проблема конфигурации, я удалил это из стека (где он не получил никакого ответа) и разместил здесь.

Проблема в том, как изменить requestContextPath, обслуживаемый Glassfish за mod_proxy_ajp. Сайт / приложение работает нормально, если подключиться напрямую к порту Glassfish 8080, что в конечном итоге не то, что я хочу сделать.

Поэтому мне нужна помощь с настройкой для моих серверов и развертыванием jsf. Я вижу проблему, но не знаю, как ее решить. Это связано с requestContextPath.

  • Проще говоря, Apache направляет http://mysite.com/welcome.xhtml что правильно и что я хочу, но страница минус изображения и стили.

  • Проблема в том, что сам Glassfish все еще указывает на http://mysite.com/myapp/*, Таким образом, все ссылки, которые он обслуживает в приложении / сайте, все еще ссылаются через requestContextPath. Это /myapp/* часть http://mysite.com/myapp/welcome.xhtml,

  • Когда я смотрю на исходный код страницы, изображения, на которые ссылаются относительные ссылки, все еще указывают на requestContextPath (то есть /myapp/). Это поправимо, но настоящая боль.

Однако со ссылками на страницы я не могу установить относительный путь.

  • Если я наведу курсор мыши на ссылку на странице контакта, я увижу http://mysite.com/myapp/contact.xhtmlи если я нажму на него, я получу 404. Вы можете увидеть /myapp/ контекстный путь в исходном тексте страницы также.

  • Если я введу в URL http://mysite.com/contact.xhtml Я получаю страницу минус ее ссылки (requestContextPath).

На Apache

ProxyPass / ajp://littlewalterserver:8009/myapp-web/

ProxyPassReverse / ajp://littlewalterserver:8009/myapp_Project-web

На стеклянной рыбе

asadmin create-network-listener --listenerport 8009 --protocol http-listener-1 --jkenabled true jk-connector

Я попытался зайти в Glassfish и установить веб-приложение в качестве веб-приложения по умолчанию. Я изменил / в glassfish-web.xml (и проверил, чтобы убедиться, что это было то же самое в файле EAR).

Как я могу заставить Glassfish не включать /myapp/ контекст в URL? Это должно быть легко, если вы знаете, как, но я не знаю как, кто-то может помочь здесь? Благодарю.

1 ответ

Я нашел то, что работает прямо сейчас.

Предварительно, я думаю, что когда я установил веб-приложение по умолчанию на вкладке безопасности, я также установил <context-root>/</context-root> в glassfish-web.xml одновременно. Наверняка это не сработало.

Сработало то, что я установил веб-приложение EAR в качестве веб-приложения по умолчанию на экране безопасности консоли Glassfish и удалил <context-root>/</context-root> из glassfish-web.xml.

Затем я изменил строки прокси-сервера в httpd.conf на:

ProxyPass / ajp://myapp-web/

ProxyPassReverse / ajp://myapp_Project-web

Это работает, но в некотором роде побеждает одну из целей использования прокси, которая заключается в том, чтобы позволить веб-приложению продолжать работать в его контексте, но дать пользователю что-то простое для ссылки. У вас может быть только одно веб-приложение по умолчанию в контексте, что сильно ограничивает вас, если вы хотите добавить больше сайтов для управления контентом с помощью Glassfish. Без лога переписывания то есть. Жаль, что они не могли что-то понять, чтобы заставить это "просто работать".

Я все еще могу использовать Apache для обслуживания статического контента и выступать в качестве входной двери для соединений SSL, но не слишком доволен этим подходом. Если кто-то знает лучший способ, я все еще готов.

Другие вопросы по тегам