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, но не слишком доволен этим подходом. Если кто-то знает лучший способ, я все еще готов.