2013-04-24 3 views
1

У меня возникла ситуация, когда я хочу создать входной поток из локальной машины (скажем, каталог файла C: \ Users \ temp \ file.txt) на удаленный сервер с Windows Server 2008.InputStream с локальной машины на tomcat развернуто webapp

Как я могу заставить веб-приложение использовать локальную версию файла, потому что я пробовал это перед компиляцией в WAR-файл.

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

И когда я пытаюсь использовать InputStream, он падает. Я считаю, что он ссылается на сервер C: \ Users \ temp \ file.txt, которого не существует.

Я знаю, что это «немой» вопрос, но любые предложения были бы чрезвычайно полезными.

+0

В зависимости от того, что это за текстовый файл, вы можете рассмотреть возможность размещения его в папке ресурсов. Во всяком случае, неплохо попытаться сохранить независимость веб-приложений. Таким образом, у любой из машин ваших коллег или на различных серверных средах нет проблем с этим. – Erich

ответ

0

Если вы пытаетесь получить доступ к файлам, хранящимся на одном компьютере, с другого компьютера, вам придется как-то «разделить» файл. Существует несколько довольно простых способов сделать это:

  1. Настроить сетевую файловую систему. Популярным выбором является Samba или an S3 bucket mounted as a drive. Это имеет то преимущество, что все файлы выглядят «локальными» для чтения файла, поэтому вы должны использовать FileInputStream, как обычно.
  2. Поделиться через HTTP. Настройте HTTP-сервер, например Apache, на хост с файлом, скопируйте файл в общий веб-каталог и используйте URL или HTTP-клиент, например Apache HTTPComponents Client, для доступа к файлу по его URL-адресу. (Вы также можете использовать этот подход с помощью FTP или других сервисов.)

Общий доступ к файлам - это немного хлопот, но как только у вас установлена ​​общая файловая система или веб-сервер, файлы - это cinch.

-1

Использование в файлах свойств хоста помогает в этом сценарии. Как правило, вы хотите содержать все различия между средами в ваших файлах свойств.

Отъезд PropertyPlaceholderConfigurer для обработки файлов с изменением свойств.

Вы бы расширить, что для обработки {ENV} заполнитель и выполнить его с весны, подобной этой

<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 
+0

От того, как он задал вопрос, я не думаю, что файл находится на одной машине. Будет ли доступ к удаленному файлу? – sigpwned

+0

Вы можете получить доступ к удаленному файлу, если он находится на смонтированном диске, используя эту технику. Если диск/папка не подключена к серверу, ему придется сделать что-то более сложное, как FTP, или, как вы упомянули в своем ответе, HTTP/cloud – Erich

 Смежные вопросы

  • Нет связанных вопросов^_^