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

时间:2017-03-21 18:21:50

标签: tomcat war tomcat8

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

  

C:\用户\ adminsg \桌面\ DOJ \战争\ ROOT.war

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

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

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

修改

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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