当前位置: 首页 > 知识库问答 >
问题:

为什么Tomcat在WAR文件位置的上下文路径上创建我的应用程序?

单于承
2023-03-14

我有一个带有Tomcat实例的远程服务器,我正试图在根上下文中将WAR文件部署到该实例上。这是WAR文件的完整路径:

C: \Users\adminsg\Desktop\doj\war\ROOT。战争

当我使用文件选择器上传WAR时,它会将WAR部署到上下文路径/C: UsersadminsgDesktopdojwarROOT,并且会中断路径。当我将ROOT. war移动到与Tomcat实例相同的驱动器时,也发生了同样的事情。

我所做的唯一更改是将文件大小限制增加到100MB,以适应更大的应用程序。我以前从未遇到过这种情况,我已经在Tomcat服务器上部署了几十个应用程序

有没有办法让Tomcat停止以这种方式创建上下文路径,或者是我使用手动上下文路径部署器进行部署的唯一选择?

编辑

错误似乎是与HTTPServletManager上载()方法中的Part.getSubmittedFileName()方法有关。此错误仅发生在远程服务器上,而不是在我的本地机器上。

共有1个答案

公冶翰池
2023-03-14

我想出了一个涉及编辑Tomcat代码的解决方法。我将问题缩小到Application ationPart.getSubmittedFileName()方法,其中第152行:

fileName=HttpParser。unquote(fileName.trim())

正在删除文件路径中的反斜杠。我删除了这一行,上传工作正常。

如果有更好的方法,请回答问题。谢谢

 类似资料:
  • 我已经通过安装插件准备了我的第一个vaadin应用程序,并创建了vaadin项目。构建成功并部署到wildFly后,尝试使用下面的localhost:port/myapp/和localhost:port//myapp/myuiservlet运行应用程序时也不起作用

  • 我们使用Spring Boot,我创建了一个WAR,而不是一个JAR,以部署在普通的Tomcat服务器上。似乎所有的工作都很好,只是上下文路径设置不正确。我的index.html中的任何相对路径都不工作。 在浏览器中加载应用程序时, 试图从http://localhost:port/app.min.css而不是http://localhost:port/contextpath/app.min.cs

  • 我正在尝试找到一种方法来显式指定部署到Glassfish的Web应用程序的上下文路径3.1.2.2但到目前为止我还没有运气。有人能对此提供指导吗?背景如下: 我有一个Web应用程序,它由两个单独的Netbean(7.0)项目组成。第一个是Web服务,称为FOWS。第二个是使用FOWS网络服务的面向用户的Web应用程序。它被称为FooApp。 我最近将glassfish升级到3.1.2.2,希望解决

  • 我有一个作为WAR部署的spring boot web应用程序。现在,当我将它部署到我的Tomcat7服务器时,它使用war文件的名称作为上下文,例如/myArtifactid-1.5.4.snapshot/。我想指定上下文路径,但是 似乎只适用于嵌入式Tomcat。我添加了一个meta-inf/context.xml,其中仅包含以下内容 但这并没有起到任何作用。

  • 据我所知,基于Spring的web应用程序初始化如下: 步骤1:定位的实现,即。 步骤2:< code > SpringServletContainerInitializer 创建< code>DispatcherServlet和< code > context loader listener 第3步:创建。创建。 步骤 1 由 Servlet 3.0 规范定义。步骤2,3完全由Spring定义。

  • 我有一个spring boot应用程序abc.myapp.war,它部署在外部tomcat服务器上。默认情况下,tomcat使用war文件名作为部署的应用程序的上下文路径,因此它变成http://localhost:8080/abc.myapp,但我希望有一个自定义的上下文路径,如http://localhost:8080/abc/myapp。我阅读了其他帖子,他们建议在tomcat的server