GF 3.0.1 +虚拟服务器:www.myhost.com:8080 / projectname-war => www.myhost.com。怎么样?

时间:2011-01-05 03:31:08

标签: java-ee glassfish glassfish-3 application-server

修改

我需要将www.myhost.com:8080/myproject-war更改为www.myhost.com。这是我一直在尝试的:

我配置了Virtual Server: server。我仍然有默认的网络侦听器是http-listener-1和http-listner-2。我将默认Web模块更改为ScholarActive#ScholarActive-war.war(下拉列表中的唯一选项,因为我只部署了1个应用程序)。

对于docroot,我试试这个

${com.sun.aas.instanceRoot}/applications/ScholarActive/ScholarActive-war_war

或者

${com.sun.aas.instanceRoot}/applications/ScholarActive/

两者都不起作用。 docroot需要指出什么才能实现?

我尝试做的是:当我输入localhost:8080 / ScholarActive-war,然后我的应用程序加载,我想这样做,如果我输入locahost:8080,它也会加载应用程序,然后还剩下什么将端口更改为80.但没有运气。有什么想法吗?

5 个答案:

答案 0 :(得分:6)

如果您可以以root身份运行glassfish,只需编辑domain.xml文件,将端口8080更改为端口80。

如果您不想以root身份运行glassfish(因为您不应该这样),那么您可以使用apache前面的glassfish。我在博客上写了running both glassfish v2 and v3 behind apahce httpd

或者,您可以使用iptables将所有流量从端口80路由到端口8080,如下所示:

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080 

至于问题的第二部分 - 删除上下文根,只需要使用“/”上下文根部署应用程序。还有几种方法可以实现这一目标。您可以在部署期间或之后使用管理员Web控制台为Web应用程序设置上下文根。您可以通过命令行设置它:

asadmin deploy --contextroot "/" webapp.war

或者您可以将sun-web.xml文件的context-root设置为/.

或者,您可以为虚拟服务器设置默认Web模块,类似于Web管理控制台是端口4848的默认Web模块。我从未尝试过这个。


回答编辑过的问题: 要从glassfish管理控制台(localhost:4848)更改默认Web模块,请转到:

Configuration -> Virtual Servers -> server

在那里,您将看到“默认Web模块”的下拉列表。选择已部署的Web应用程序。此应用程序现在将响应根URL。在我自己尝试之后,我注意到我在登录后被重新路由到上下文根目录。这可以通过将我的webapp的上下文roop设置为“”/“或使用

来修复。

另一种可能性是在apache httpd中使用mod_proxy,并在端口8080上将端口80的“/”映射到“/ myWebApp”。这完全避免了上述混乱。

答案 1 :(得分:0)

在您的Web容器中,您应将/ myproject-war设置为根路径,然后将侦听端口从8080更改为80.重新启动Web容器,如果需要,可以通过http://localhost/浏览网页改为使用http://www.myhost.com,添加一行 在您托管文件的末尾www.myhost.com 127.0.0.1。这只适用于本地网站。

答案 2 :(得分:0)

我认为Glassfish web容器基于tomcat和tomcat,你可以调用你的web应用程序文件ROOT.WAR,它可以做你想要的。尝试调用您的网络应用ROOT.war,看看它是否符合您的要求,并告诉我们。


无法在web.xml中配置您想要的内容,因为它只包含供应商中立设置。您需要更改的设置是特定于应用程序服务器的。如果您编辑帖子并让我们知道您正在使用哪个应用程序服务器,我们可以为您指出如何做您想要的正确方向。

答案 3 :(得分:0)

我经常使用apache和mod_proxy或mod_jk来使用tomcat / jboss / jetty。这样,apache侦听端口80/443,并在端口8080/8443(或8009 for mod_jk)上与j2ee服务器通话。

答案 4 :(得分:0)

此页面为我提供了解决方案。

http://blogs.oracle.com/alexismp/entry/glassfish_tip_have_your_application

但是,我的安全身份验证是jdbcRealm,在我登录后,glassfish会自动将my-project-war附加到我的URL上。所以

www.myhost.com将提示我登录

我登录后立即成为

www.myhost.com/my-project-war

为什么会这样?