2016-06-04 3 views
-1

Я работаю на веб-приложения с помощью NetBeans и MS Acces как моя база данных, в моем классе подключения я пытался получить путь мой файл Acces (находится внутри моего проекта) с помощью следующей команды:Как получить реальный путь к моему файлу?

File f = new File("softTech.accdb"); 
    String path = f.getAbsolutePath(); 

Проблема заключается в том, что, как только я запускаю проект и пытаюсь подключиться, пытаясь получить путь, система дает мне путь внутри пасты Tomcat.

Мне нужна ваша помощь, не знаю, что do Заранее спасибо

ответ

0

Если вы используете сервлеты, то следующий код должен Работа.

getServletContext().getRealPath("/yourFileName") 

В случае нормального класса Java, вы можете использовать

new File("yourFileName").getCanonicalPath(); 
+0

Не могу я получить его из класса Java? My conection в классе Java Я не могу использовать getServletContext(). GetRealPath ("/ yourFileName") – user3628479

+0

Я отредактировал ответ для нормального класса java. – RahulO

+0

Благодарю вас, но, опять же, это делает только путь Godammit внутри пасти tomcat: '( – user3628479

1

Есть две точки:

Во-первых: MS Access действительно худший выбор в качестве базы данных для веб-Java заявление.

MS Access - это настольная база данных, не предназначенная для использования на стороне сервера. Мост JDBC-ODBC никогда не предназначался для использования в производстве и был удален на Java 8. Альтернативный драйвер Ucanaccess хорош для сценариев обмена данными с базой данных MS Access, но использует чистую базу данных Java (HSQLDB) в качестве буфера и чтобы избежать использования исходного Jet Engine. Это само по себе является кошмаром исполнения.

Итак, вы должны рассмотреть возможность использования другой базы данных для своего веб-приложения. Существует множество альтернатив, таких как SQLite, Apache Derby или H2 в качестве встроенных механизмов баз данных или MySQL, PostgreSQL в качестве систем баз данных клиент-сервер. Все с поддержкой JDBC с поддержкой JDBC.

Второе: путь к базе данных или соединение не должны быть жестко закодированы внутри вашего веб-приложения. Необходимо настроить именованный источник данных на сервере приложений (например, Tomcat). И внутри вашего веб-приложения вы можете получить доступ к источнику данных через JNDI.

Пример: Настройка соединения с базой данных завода в Tomcat:

<Context ...> 
    ... 
    <Resource name="jdbc/EmployeeDB" 
      auth="Container" 
      type="javax.sql.DataSource" 
      username="dbusername" 
      password="dbpassword" 
      driverClassName="org.hsql.jdbcDriver" 
      url="jdbc:HypersonicSQL:database" 
      maxActive="8" 
      maxIdle="4"/> 
    ... 
</Context> 

Пример: Доступ источника данных с помощью JNDI:

Context initCtx = new InitialContext(); 
Context envCtx = (Context) initCtx.lookup("java:comp/env"); 
DataSource ds = (DataSource) 
    envCtx.lookup("jdbc/EmployeeDB"); 

Connection conn = ds.getConnection(); 
... use this connection to access the database ... 
conn.close(); 

примеры являются частью Tomcat documentation.

benifit - веб-приложение знает только имя логической базы данных. У вас может быть несколько установок Tomcat, например. один для тестирования с тестовой базой данных и одним продуктом. Вы можете использовать один и тот же файл WAR для обеих установок. Каждый Tomcat должен быть настроен только один раз.

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