【问题标题】:Apache Tomcat - Access Files Outside WebrootApache Tomcat - 访问 Webroot 之外的文件
【发布时间】:2011-12-15 00:00:18
【问题描述】:

我在应用服务器 Apache 中部署了一个应用程序 雄猫。我的 GWT 应用程序需要访问文件夹“C: \Storage”。在开发模式下,应用程序运行起来就像一个魅力,但 在外部 Web 服务器(Apache Tomcat)中它不运行,崩溃 当它试图将文件从“C:\Storage”复制到“\docs”时。我认为这 可能是因为我试图访问 webroot 之外的文件。如何 我可以解决这种情况吗?使用apache commons libs来处理 文件?可能是权限?我需要一些启发,一些帮助会 非常感谢。 提前谢谢,

若昂·卡瓦莱罗。

【问题讨论】:

  • it does not run, crashes when it tries to copy files.. - 请提供您看到的例外情况 catalina.out 或您可能拥有的任何其他相关日志文件。
  • 您必须提供更多详细信息,例如异常堆栈跟踪。 \docs 到底是什么,它与 C:\storage 有什么关系?您的生产环境希望不是 Linux?
  • 也许你应该看看这个问题:stackoverflow.com/questions/579224/…

标签: java apache tomcat io web


【解决方案1】:

另一个(疯狂的)猜测:如果您部署战争而不解压缩为真实文件,getRealPath("/doc") 将返回 null。 (你在战争中没有文件)。所以你必须配置Tomcat: http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

upackWAR = true

【讨论】:

    【解决方案2】:

    感谢大家的回复。我实际上弄清楚了问题所在:路径。

    “\docs”是位于应用根目录中的文件夹。

    不幸的是,Apache 没有在 catalina.out 日志中写入任何异常(代码捕获了发生的异常)。

    只是我没有使用目标位置的绝对路径创建一个新文件(路径名),我只使用“docs/filename.txt”假设文件类可以识别完整路径,“知道”应用程序文件系统中的位置。我认为这是使用特定应用程序服务器要记住的情况,因为使用 eclipse/Jetty 它可以工作,但使用 Apache Tomcat 不能(我正在开发 GWT 应用程序)。

    但事实上,调试并不容易,外部服务器的调试模式在服务器端无法正常工作,我需要做这个奇怪的io操作的代码),并且系统.out.println 我设法帮助我找出问题并没有出现在 catalina.stdout 中(奇怪的是,我已经在 Apache Tomcat 上编译并部署了两次修改)。

    谢谢大家。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多