|
|
|
неверный путь к файлу из tomcat
|
|||
|---|---|---|---|
|
#18+
Начал изучать Servlets/JSP. Написал несколько небольших веб-приложений/примеров в блокноте, скомпилировал командной строкой, развернул в tomcat 7.0. Всё нормально. Решил пойти дальше - перейти в NetBeans и написать приложение для работы с БД с использованием MVC, DAO... DAO при работе с консолью работало нормально. Настройки вынес в отдельный файл-db.properties. Структура папок: Код: sql 1. 2. 3. 4. 5. 6. db.properties Код: sql 1. 2. 3. 4. Подключаюсь к БД через класс ConnectorDao Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. Так вот, раньше при создании FileInputStream(PROPERTY_FILE_PATH) всё работало нормально и формировало правильный путь. Код: sql 1. А после того, как я начал делать веб-приложение, при вызове из сервлета путь стал следующим: Код: sql 1. Собственно вопросы: 1) как это всё работает, если в моя папка с проектом находится на рабочем столе, а в папке Tomcat webapps при деплое никакого проекта не появляется. Как тогда появляются веб-страницы в браузере? 2) как избавиться от моей проблемы с путями, чтобы достучаться к файлу properties? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2012, 16:04:07 |
|
||
|
неверный путь к файлу из tomcat
|
|||
|---|---|---|---|
|
#18+
Когда File, File*Stream создаются через относительный путь, то в качестве корня используете "текущая директория" - "user.dir User's current working directory" смотрите JavaDoc System.getProperties() и File JEE приложения деплоятся куда угодно и сервера запускаются как попало. Соответственно использование user.dir стоит избегать. Если у вас свойства меняются только в девмоде (т.е. после сборки тот кто отвечает за деплоймент их менять не должен) то оптимальный способ это метод Class.getResourceAsStream() - ваши свойства лежат с вашими классами и этот метод будет всегда работать, даже если код будет не в JEE приложении. Соответсвенно недостаток этого подхода в том что свойства живут внутри war архива и менять их во время каждого деплоя геморно. Это относится и к db.properties. Вы сущетсвенно упростите процесс деплоймента если будете использовать JNDI DataSource. Таким образом соединение с базой прописывается один раз и навсегда внутри сервера приложений. И само приложение менять не нужно только для того чтобы поменять настройки к базе. Здесь возникет другая проблема в том что вы можете только использовать пул, который предлагает сервер. И если вдруг он вам не подходит, например, из-за низкой производительности. Тогда нужно придумывать альтернативное решение. Как вариант - дефолтные настройки всё так же живут в коде и читаются через Class.getResourceAsStream(). При первом старте сервер их копирует в user.home или java.io.tmpdir. Там админ их может менять. А сервер их будет перезаписывать поверх дефолтных. Соответственно Админу не нужно менять сам сервер. И последнее - структура вашего проекта в некой IDE абсолютно не важна. Важно то как ваше приложение собирается в JEE модуль (war) и потом деплоится на сервер. IDE скрывает от вас этот процесс и это приводит к недопониманию. Соответсвенно для начала соберите war и задеплойте его в Tomcat самостоятельно. А когда разберетесь с процессом, то используейте IDE для тестового деплоймента. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2012, 16:18:34 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2131859]: |
0ms |
get settings: |
14ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
85ms |
get topic data: |
16ms |
get forum data: |
4ms |
get page messages: |
65ms |
get tp. blocked users: |
3ms |
| others: | 349ms |
| total: | 560ms |

| 0 / 0 |
