完全公开:由于这似乎是更多的configuration问题,我从堆栈中删除(没有得到任何答复),并转发到这里。
问题是如何更改由Glassfish在mod_proxy_ajp后面提供的requestContextPath。 如果直接连接到Glassfish 8080端口,网站/应用程序运行良好,这最终不是我想要做的。
所以我需要帮助configuration我的服务器和jsf部署。 我可以看到这个问题,但不知道如何解决它。 它与requestContextPath有关。
简单地说,Apache直接到http://mysite.com/welcome.xhtml这是正确的,我想要什么,但页面是减去图像和样式。
问题是Glassfish本身仍然指向http://mysite.com/myapp/* 。 所以它在app / site中提供的所有链接仍然通过requestContextPath引用。 这是http://mysite.com/myapp/welcome.xhtml的/myapp/*部分。
当我查看页面源时,使用相对链接引用的图像仍然指向requestContextPath(即/ myapp /)。 这是可以解决的,但真正的痛苦。
但是,对于页面链接,我无法设置相对path。
如果我将鼠标hover在联系页面链接上,则可以看到http://mysite.com/myapp/contact.xhtml ,如果单击它,则获得404。您也可以在页面源代码中看到/myapp/ contextpath。
如果我inputURL http://mysite.com/contact.xhtml我得到的页面减去其引用的链接(requestContextPath)。
在Apache上
ProxyPass / ajp://littlewalterserver:8009/myapp-web/ ProxyPassReverse / ajp://littlewalterserver:8009/myapp_Project-web
在Glassfish上
asadmin create-network-listener --listenerport 8009 --protocol http-listener-1 --jkenabled true jk-connector
我曾尝试去Glassfish和设置为默认的Web应用程序的Web应用程序。 我已经改变了/在glassfish-web.xml(并检查,以确保它在EAR文件中是相同的)。
我如何让Glassfish不在URL中包含/myapp/ context? 如果你知道怎么做,这一定很容易,但是我不知道怎么样,有人可以帮忙吗? 谢谢。
我发现了一些现在可以工作的东西。
作为一个初步的,我认为当我在安全选项卡中设置默认的Web应用程序时,我也同时在glassfish-web.xml中设置了<context-root>/</context-root> 。 肯定这不起作用。
有效的是,我将EAR的Web应用程序设置为glassfish控制台安全性屏幕中的默认Web应用程序,并从glassfish-web.xml中删除<context-root>/</context-root> 。
然后我将httpd.conf中的proxypass行改为:
ProxyPass / ajp://myapp-web/ ProxyPassReverse / ajp://myapp_Project-web
它的工作原理,但它有一种使用代理的目的之一是允许Web应用程序继续在其上下文中运行,但给用户容易链接。 在上下文中只能有一个默认的Web应用程序,所以如果您想要使用Glassfish添加更多的内容pipe理网站,就会严重受到限制。 没有重写的日志。 太糟糕了,他们无法弄清楚什么是“正常工作”。
我仍然可以使用apache来提供静态内容,并充当SSL连接的前门,但是对于这种方法并不太满意。 如果有人知道更好的方法,我仍然为它。