抱歉,如果不解释整个情况,我想不出更具描述性的标题。
我正在使用IIS7与Tomcat7。 我使用GWT创建了一个Web应用程序,将其打包成war文件并将其部署在Tomcat上 输入我的网站网址,说“www.myapp.com”,我会看到Tomcat默认页面。我怀疑这是因为在%TOMCAT_HOME%/ webapps / ROOT目录中有什么问题。我可以通过“www.myapp.com/myapp”访问我的webapp,我期待的所有功能都在那里。
如何配置Tomcat以便可以通过“www.myapp.com”而不是“www.myapp.com/myapp”访问我的webapp?
我已经尝试通过为我的webapp添加新的'host'标记来在%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>
从上面添加Host标签,输入“www.myapp.com”会立即将我带到我的网络应用程序。问题是,当我在应用程序中执行调用servlet的操作时(我正在使用GWT RPC),我得到错误:
com.google.gwt.user.client.rpc.StatusCodeException:404
服务器错误 404 - 找不到文件或目录。
您要查找的资源可能已被删除,名称已更改或暂时不可用。
我不知道为什么我在输入“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
答案 0 :(得分:3)
您有两种选择。
将WAR重命名为ROOT.war。
将您的WAR移出Tomcat的appBase,然后添加一个新文件$ CATALINA_BASE / Catalina / localhost / ROOT.xml,其中包含以下内容:
&lt; Context docBase =“path / to / WAR”/&gt;
这假定您使用的是引擎和主机的默认名称。如果不是,请相应地调整路径。它是$ CATALINA_BASE /&lt; engine_name&gt; /&lt; host_name&gt; /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
答案 1 :(得分:-1)
来自Tomcat 7 docs :
http://tomcat.apache.org/tomcat-7.0-doc/config/host.html
如果您使用的是标准Host实现,请执行以下操作 如果,第一次启动Catalina时会自动执行操作 deployOnStartup属性设置为true(这是默认值 值):
Any XML file in the Host's xmlBase directory (by default $CATALINA_BASE/conf/[engine_name]/[host_name]) is assumed to be a
上下文XML描述符,包含Context元素(及其元素) 关联的子元素)用于单个Web应用程序。网络 与每个上下文XML描述符相关联的应用程序 文件将首先部署。
The docBase attribute of this <Context> element must only be set if the docBase is outside the Host's appBase. For web applications
位于Host的appBase内,docBase将是其名称 用于Web应用程序的“.xml”替换为“.war”的XML文件 存档或删除了“.xml”的XML文件的名称 。目录
The path attribute must not be set. The context path used will be a slash character ("/") followed by the name of the XML file (less the
.xml扩展名)。可以使用#定义多级上下文路径, 例如foo #bar.xml,用于/ foo / bar的上下文路径。默认网络 具有/的上下文路径的应用程序可以使用a来定义 文件名为ROOT.xml。
Any web application archive file within the Host's appBase directory that has not already been deployed as a result of a context
XML描述符,没有相同的相应目录 name(不带“.war”扩展名),不排除 接下来将部署deployIgnore。使用的上下文路径是a 斜杠字符(“/”)后跟Web应用程序存档名称 少了“.war”的延伸。这条规则的一个例外是a 名为“ROOT.war”的Web应用程序存档将部署一个 /的上下文路径。可以使用#定义多级上下文, 例如使用名为foo #bar.war的WAR作为/ foo / bar的上下文路径。
If the unpackWARs attribute is true, the web application archive file will be expanded to a directory of the same name (without the
“。war”extension“。
Note: If you re-deploy an updated WAR file while Tomcat is stopped, be sure to delete the associated expanded directory before
重新启动Tomcat,以便重新扩展更新的WAR文件 当Tomcat重新启动时。
If copyXML is true (it is false by default), any web application archive file within the Hosts's appBase directory that does not have a
相应的上下文XML描述符(扩展名为“.xml”) 将扫描主机的xmlBase中的“.war”扩展名 如果它包含一个上下文XML描述符(位于 /META-INF/context.xml)并且如果找到一个描述符将是 复制到xmlBase目录并重命名。
将部署未被deployIgnore排除的Finally, any sub-directory within the Host's appBase that has not already been deployed as a result of a context XML descriptor and is
。使用的上下文路径 将是斜杠字符(“/”),后跟目录名称,除非 目录名是ROOT,在这种情况下,上下文路径将为/。 可以通过使用#来定义多级上下文,例如,使用目录 名为foo#bar的上下文路径为/ foo / bar。
将扫描主机的xmlBase中的上下文XML描述符以查看是否 它包含一个上下文XML描述符(位于 /META-INF/context.xml)并且如果找到一个描述符将是 复制到xmlBase目录并重命名。If copyXML is true (it is false by default), any directory within the Hosts's appBase directory that does not have a corresponding
所有这些要点:
a web application archive named "ROOT.war" will be deployed with a context path of /.