从本地机器到tomcat的InputStream部署了webapp

时间:2013-04-24 19:23:43

标签: java web-applications web inputstream

我有一种情况,我想从本地机器(假设文件目录是C:\ Users \ temp \ file.txt)创建一个inputStream到具有Windows Server 2008的远程服务器。

如何让网络应用程序使用该文件的本地版本,因为我在编译成WAR文件之前尝试了这个。

File f = new File("C:\Users\temp\file.txt");

当我尝试使用InputStream时,它会崩溃。我相信它是引用服务器的C:\ Users \ temp \ file.txt,它不存在。

我知道这是一个“愚蠢”的问题,但任何建议都会非常有用。

2 个答案:

答案 0 :(得分:0)

如果您尝试从另一台计算机访问存储在一台计算机上的文件,则必须以某种方式“共享”该文件。有几种相当简单的方法可以做到这一点:

  1. 设置联网文件系统。一个受欢迎的选择是Sambaan S3 bucket mounted as a drive。这样做的好处是,所有文件都显示为“本地”,以便读取文件,因此您可以使用正常的FileInputStream
  2. 使用HTTP共享。在主机上使用文件设置Apache之类的HTTP服务器,将文件复制到Web共享目录,然后使用URL或者像Apache HTTPComponents Client这样的HTTP客户端通过其URL访问该文件。 (您也可以使用此方法与FTP或其他服务。)
  3. 首先,共享文件有点麻烦,但是一旦设置了共享文件系统或Web服务器,共享大量文件就很容易了。

答案 1 :(得分:-1)

在这种情况下,使用每个主机属性文件会有所帮助。通常,您希望包含环境与属性文件之间的所有差异。

查看PropertyPlaceholderConfigurer以了解处理切换属性文件。

你可以扩展它以处理{ENV}占位符并从Spring执行它,类似于

<bean id="propertyConfigurer" class="com.yourcompany.PerHostPropertiesConfigurer">
    <property name="filename" value="appname-{ENV}.ini" />
</bean>
appname-LOCAL.ini中的

有这个

text.filename=C:\Users\temp\file.txt

并在appname-PROD.ini中将其更改为已安装的驱动器或其他本地路径,从服务器的角度可以访问此类

text.filename=Z:\Users\temp\file.txt