1 votos

Glassfish JSF/EAR Apache 2.2 proxy_ajp_mod Contenido Referido Faltante (imágenes/enlaces/etc)

Divulgación completa: Dado que esto parece ser más un problema de configuración, lo eliminé de Stack (donde no estaba recibiendo ninguna respuesta) y lo volví a publicar aquí.

El problema es cómo cambiar el requestContextPath servido por Glassfish detrás de mod_proxy_ajp. El sitio/aplicación funciona bien si se conecta directamente al puerto 8080 de Glassfish, lo cual en última instancia no es lo que quiero hacer.

Entonces necesito ayuda con la configuración para mis servidores e implementación de jsf. Puedo ver el problema pero no sé cómo resolverlo. Tiene que ver con el requestContextPath.

  • En pocas palabras, Apache redirige a http://misitio.com/welcome.xhtml lo cual es correcto y lo que quiero, pero la página carece de las imágenes y estilos.

  • El problema es que Glassfish mismo sigue apuntando a http://misitio.com/myapp/*. Por lo tanto, todos los enlaces que sirve en la app/sitio siguen refiriéndose a través del requestContextPath. Es decir la parte /myapp/* de http://misitio.com/myapp/welcome.xhtml.

  • Cuando miro en el código fuente de la página, las imágenes a las que se hace referencia con enlaces relativos siguen apuntando al requestContextPath (es decir, /myapp/). Esto se puede arreglar pero es realmente molesto.

Sin embargo, con los enlaces de la página no puedo establecer la ruta relativa.

  • Si paso el cursor sobre el enlace de la página de contacto veo http://misitio.com/myapp/contact.xhtml, y si hago clic en él, obtengo un error 404. También puedes ver el context path /myapp/ en el código fuente de la página.

  • Si escribo la URL http://misitio.com/contact.xhtml obtengo la página sin sus enlaces referidos (requestContextPath).

En Apache

ProxyPass / ajp://pequeñorservidorwalters:8009/myapp-web/

ProxyPassReverse / ajp://pequeñorservidorwalters:8009/myapp_Project-web

En Glassfish

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

He intentado ingresar a Glassfish y establecer la aplicación web como la aplicación web predeterminada. He cambiado el / en glassfish-web.xml (y verifiqué que fuera el mismo en el archivo EAR).

¿Cómo puedo hacer que Glassfish no incluya el context /myapp/ en las URL? Esto debería ser fácil si sabes cómo, pero no sé cómo, ¿alguien puede ayudar aquí? Gracias.

0voto

Bill Rosmus Puntos 359

Encontré algo que funciona en este momento.

Como preliminar, creo que cuando establecí la aplicación web predeterminada en la pestaña de seguridad también había establecido / en el archivo glassfish-web.xml al mismo tiempo. Seguro que esto no funcionó.

Lo que funcionó es que establecí la aplicación web del EAR como la aplicación web predeterminada en la pantalla de seguridad de la consola de glassfish y eliminé / de glassfish-web.xml.

Luego cambié las líneas de proxypass en httpd.conf a:

ProxyPass / ajp://myapp-web/

ProxyPassReverse / ajp://myapp_Project-web

Funciona, pero de alguna manera va en contra de uno de los propósitos de usar un proxy, que es permitir que la aplicación web siga funcionando en su contexto pero dar al usuario algo fácil de enlazar. Solo puedes tener una aplicación web predeterminada en un contexto, por lo que te limita severamente si quieres agregar más sitios al estilo de administración de contenido con Glassfish. Sin un montón de reescrituras. Una lástima que no pudieran encontrar una manera de hacer que funcione de forma sencilla.

Aún puedo usar apache para servir contenido estático y actuar como la puerta de entrada para conexiones SSL, pero no estoy muy contento con este enfoque. Si alguien conoce una mejor manera, aún estoy dispuesto a probarlo.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X