Glassfish JSF / EAR Apache 2.2 proxy_ajp_mod Conteúdo enviado ausente (imagens / links / etc)

1

Divulgação total: como isso parece ser mais um problema de configuração, eu excluí isso da pilha (onde não estava recebendo nenhuma resposta) e repostado aqui.

O problema é como alterar o requestContextPath servido pelo Glassfish por trás do mod_proxy_ajp. O site / aplicativo funciona bem se você se conectar diretamente à porta Glassfish 8080, que é, em última análise, não o que eu quero fazer.

Portanto, preciso de ajuda com a configuração dos meus servidores e da implantação do jsf. Eu posso ver o problema, mas não sei como resolvê-lo. Tem a ver com o requestContextPath.

  • Simplificando, o Apache direciona para http://mysite.com/welcome.xhtml , o que é correto e o que eu quero, mas a página é menos as imagens e estilos.

  • O problema é que a própria Glassfish ainda está apontando para http://mysite.com/myapp/* . Portanto, todos os links que ele serve no aplicativo / site ainda se referem ao requestContextPath. Essa é a parte /myapp/* de http://mysite.com/myapp/welcome.xhtml .

  • Quando olho na origem da página, as imagens que são referidas com links relativos ainda apontam para o requestContextPath (ou seja, / myapp /). Isso é consertável, mas é uma dor real.

No entanto, com links de páginas, não consigo definir o caminho relativo.

  • Se eu passar o mouse sobre o link da página de contato, vejo http://mysite.com/myapp/contact.xhtml e, se eu clicar nele, obtenho o 404. Também é possível ver o caminho do contexto /myapp/ na origem da página.

  • Se eu digitar o URL http://mysite.com/contact.xhtml , obtenho a página menos seus links referidos (requestContextPath).

No Apache

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

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

Em Glassfish

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

Eu tentei ir ao Glassfish e configurar o aplicativo da web como o aplicativo da web padrão. Eu mudei o / em glassfish-web.xml (e verifiquei se era o mesmo no arquivo EAR).

Como posso obter o Glassfish para não incluir o contexto /myapp/ nos URLs? Isso tem que ser fácil se você souber como, mas eu não sei como, alguém pode ajudar aqui? Obrigado.

    
por Bill Rosmus 20.09.2012 / 18:11

1 resposta

0

Eu encontrei algo que funciona agora.

Como preliminar, acho que quando defini o aplicativo da web padrão na guia de segurança, também defini <context-root>/</context-root> no glassfish-web.xml ao mesmo tempo. Com certeza isso não funcionou.

O que deu certo é que configurei o aplicativo da Web do EAR como o aplicativo da Web padrão na tela de segurança do console glassfish e removi o <context-root>/</context-root> do glassfish-web.xml.

Então eu mudei as linhas proxypass em httpd.conf para:

ProxyPass / ajp://myapp-web/

ProxyPassReverse / ajp://myapp_Project-web

Funciona, mas meio que anula um dos propósitos de usar o proxy, que é permitir que o aplicativo da Web continue sendo executado em seu contexto, mas dê ao usuário algo fácil de vincular. Você só pode ter um aplicativo da Web padrão em um contexto, o que limita muito se você quiser adicionar mais sites ao gerenciamento de conteúdo com a Glassfish. Sem um log de reescrever isso é. Pena que eles não conseguiram descobrir algo para "apenas funcionar".

Eu ainda posso usar o apache para servir conteúdo estático e atuar como a porta da frente para conexões SSL, mas não estou muito satisfeito com essa abordagem. Se alguém souber de uma maneira melhor, ainda estou pronto para isso.

    
por 24.09.2012 / 23:14