Доступ к файлам, хранящимся на сервере с помощью веб-приложения Tomcat - PullRequest
0 голосов
/ 02 февраля 2012

В настоящее время у меня есть веб-приложение GWT, работающее на сервере Ubuntu 11.04 с Tomcat6. Приложение должно иметь возможность чтения и записи в файлы из определенной папки на сервере. При запуске приложения в режиме разработки через Eclipse (я полагаю, с использованием встроенного экземпляра Jetty) оно работает нормально. Однако при развертывании приложения на сервере Tomcat приложение не может читать / записывать файлы.

Какая правильная структура пути указывает на правильную папку на сервере? То есть как мне сообщить приложению доступ к папке / home / username / project?

Есть ли параметр конфигурации, который мне нужно настроить, чтобы Tomcat разрешил доступ к файлам?

Вот как я сейчас извлекаю файл (где String file = "./projects/filename"):

public Project getProjectFromFile(String file) {
    Project p = null;
    try {       
        InputStream fis = getResourceAsStream(file);
            FileInputStream fis = new FileInputStream(file);
            ObjectInputStream ois = new ObjectInputStream(fis);

            p = (Project) ois.readObject();

            ois.close();
    } catch (FileNotFoundException e) {
        System.err.println("getProjectFromFile FileNotFoundException: "
                + e.getMessage());          
    } catch (IOException e) {           
        System.err.println("getProjectFromFile IOException: " + e.getMessage());        
    } catch (ClassNotFoundException e) {            
        System.err.println("getProjectFromFile ClassNotFoundException: " 
                + e.getMessage());          
    } catch (Exception e) {         
        System.err.println("getProjectFromFile Exception: " + e.getMessage());
        e.printStackTrace();
    }
return p;
}

Я также открыт для предложений по любым предложениям. Спасибо

Ответы [ 2 ]

0 голосов
/ 02 февраля 2012

Прежде всего, когда вы работаете с сервлетами, всегда лучше использовать относительные пути и помещать любые файлы, которые вы пытаетесь загрузить (xml, png, html, css и т. Д.), Где-то в вашем каталоге war.

Как только вы это сделаете, вы сможете просто использовать относительный путь к файлу.Например, чтобы загрузить /home/path/to/your/eclipse/project/war/html/view/a_random_page.html в свой код, вы просто используете ./html/view/a_random_page.html в качестве пути к файлу, когда пытаетесь его загрузить.

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

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

0 голосов
/ 02 февраля 2012

Пожалуйста, убедитесь, что каталоги, которые вы хотите редактировать, принадлежат тому же пользователю, которого вы используете для запуска Apache-Tomcat (через catalina.sh, я полагаю), и разрешения для этих каталогов установлены соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...