tomcat - 如何让 Apache Tomcat 从 'www.myapp.com' 而不是 'www.myapp.com/myapp' 为我的网页提供服务?

标签 tomcat servlets iis-7 tomcat7

抱歉,在不解释整个情况的情况下,我想不出更具描述性的标题。

我正在使用 IIS7 和 Tomcat7。 我使用 GWT 创建了一个 Web 应用程序,将其打包成 war 文件并将其部署在 Tomcat 上。
输入我的网站网址,例如“www.myapp.com”,我会看到 Tomcat 默认页面。我怀疑这是因为那是 %TOMCAT_HOME%/webapps/ROOT 目录中的内容。我可以通过“www.myapp.com/myapp”访问我的网络应用程序,并且我期望的所有功能都在那里。

如何配置 Tomcat,以便可以通过“www.myapp.com”而不是“www.myapp.com/myapp”访问我的 Web 应用程序?

我尝试通过为我的 web 应用程序添加新的“主机”标签来在 %TOMCAT_HOME%/conf 中配置 server.xml:

        <Host name="myapp.com" debug="0" appBase="webapps/myapp" unpackWARs="true">
              <Alias>www.myapp.com</Alias>
              <Context path="" docBase="." debug="0" reloadable="true"/> 
        </Host>

从上面添加主机标签,输入“www.myapp.com”现在可以直接进入我的网络应用程序。问题是,当我在应用程序中执行某些调用 servlet 的操作(我正在使用 GWT RPC)时,我收到错误:

com.google.gwt.user.client.rpc.StatusCodeException: 404

Server Error 404 - File or directory not found.

The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable.

我不知道为什么会收到此错误,之前在没有添加“主机”标签的情况下输入“www.myapp.com/myapp”时效果很好。

我是 Tomcat 新手,不知道如何解决这个问题。 任何帮助将不胜感激。 谢谢

编辑:

a) server.xml 中的主机部分(我的默认主机为 www.myapp.com):

<Host name="localhost"  appBase="C:/Tomcat 7.0/webapps" unpackWARs="true" autoDeploy="true"></Host>


<Host name="www.myapp.com" appBase="C:/Tomcat 7.0/myapp" unpackWARs="true" autoDeploy="true">       </Host>

b)workers.properties(我尝试将此处的主机更改为www.myapp.com,但无济于事):

worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13

c) uriworkermap.properties:

/*=worker1

最佳答案

您有两个选择。

  1. 将您的 WAR 重命名为 ROOT.war。

  2. 将 WAR 移出 Tomcat 的 appBase,然后添加一个包含以下内容的新文件 $CATALINA_BASE/Catalina/localhost/ROOT.xml:

这假设您使用引擎和主机的默认名称。如果没有,请相应调整路径。它是 $CATALINA_BASE///ROOT.war

现在您正在使用选项 1 的多个主机,您需要执行以下操作,因为 appBase != docBase。如果尝试对它们使用相同的值,就会发生各种不好的事情。

有多种方法可以从您现有的解决方案中获得可行的解决方案。我建议如下: 1. 创建一个名为 C:/Tomcat 7/webapps-myapp/ROOT 的目录 2.将C:/Tomcat 7/myapp的内容复制到这个新目录 3.删除C:/Tomcat 7/myapp 4.将MyApp主机的appBase更改为“webapps-myapp”(或完整路径)

这会将 C:/Tomcat 7/myapp 中的应用程序部署为 myapp 虚拟主机中的 ROOT(默认)应用程序。这假设您已将 myapp 应用程序部署到 C:/Tomcat 7/myapp

关于tomcat - 如何让 Apache Tomcat 从 'www.myapp.com' 而不是 'www.myapp.com/myapp' 为我的网页提供服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373799/

相关文章:

windows - Tomcat 7 service.bat 文件丢失

java - servlet 到 SQL Server 的许多连接,它们一起工作,导致 javaw.exe 过度上升

java - 类型 Dynamic Web Module 3.0 需要 Java 1.6 或更新版本,java 插件错误

java - 如何使用JSP/Servlet将文件上传到服务器?

java - 为什么此 URL 从 Tomcat 返回错误 400?

iis-7 - 如何在 IIS 经典模式池下托管 ASP.NET 5 (vNext) MVC 6 项目

asp.net - MVC + IIS7 = CSS 问题

java - 当并发 session 过多时,Java Web 容器的内存会发生什么变化?

java - 如何在 Tomcat 上使用 MongoDB 实现 Java EE 容器安全

asp.net - Windows Azure VM SSL 和 Cloudapp.net