2016-12-05 10 views
0

В настоящее время я использую встроенную базу данных Derby, которая создается при первом использовании источника GlobalNamingResource, указанного в файле server.xml tomcat 8.0 (в Windows 7).Каково расположение хранилища встроенной базы данных Derby, созданной как GlobalNamingResource в tomcat?

В настоящее время я могу использовать его в Java-коде, но если я хочу получить к нему доступ с помощью других инструментов, таких как Eclipse Data Source Explorer, я не могу найти его нигде в своих файловых системах (в Windows 7).

относительно часть моего server.xml выглядит следующим образом:

<Resource auth="Container" 
    driverClassName="org.apache.derby.jdbc.EmbeddedDriver" 
    maxActive="100" maxIdle="30" maxWait="10000" 
    name="jdbc/myDB" password="" username="" 
    type="javax.sql.DataSource" 
    url="jdbc:derby:Databases/myDerbyDB;create=true" /> 

context.xml содержит следующее:

<ResourceLink name="jdbc/myDBLink" global="jdbc/myDB" 
    auth="Container" type="javax.sql.DataSource" /> 

Пользы Java кода (немного сокращен):

DataSource ds = (DataSource) env.lookup("java:/comp/env/jdbc/myDBLink"); 

Это отлично работает при перезагрузке моего сервера tomcat. Доступ к базе данных можно получить с помощью Hibernate, EclipseLink, чистого JDBC, ... и данные в нем сохраняются. Состояние документации, которое должно храниться где-то ниже CATALINA_HOME, но там я не могу найти ничего похожего на DB Derby. Также, когда я просматриваю все свои диски, я не могу найти папку с именем myDerbyDB или папку Databases, содержащую что-то связанное.

Так что мой вопрос: где Derby хранит мои данные?

+1

Какой инструмент вы используете для поиска ваших дисков? Учитывая, что JDBC Connection URL, вы абсолютно должны быть в состоянии найти эту папку. Возможно, вы используете Tomcat на другом сервере, и вы ищете неправильный сервер? Попробуйте найти папку с именем «seg0» или файл с именем «db.lck». Когда вы говорите, что можете получить доступ к базе данных через «чистый JDBC», вы имеете в виду, что вы обращаетесь к ** той же ** базе данных? Если да, то какой URL-адрес JDBC-соединения вы используете в этой программе «чистого JDBC» и можете ли вы определить, где ** он ** хранит базу данных? –

+1

Ваша база данных будет находиться в '$ WORKING_DIR \ Базах данных \ myDerbyDB'. Если вы используете Tomcat в качестве службы Windows, тогда '$ WORKING_DIR' будет зависеть от того, как это устанавливает механизм службы Windows. Возможно, вам не удастся найти его, если служба работает как некоторая идентификация пользователя, которая не является вашим обычным логином. –

+0

Derby запускается во встроенном режиме в качестве глобального ресурса в tomcat (что означает не глобальное с точки зрения системы). Сам Tomcat запускается Eclipse. Я использовал проводник Windows для поиска папок, названных как база данных (например, myDerbyDB).Интересно, что когда я ищу «seg0», я получаю результат и указывает путь установки eclipse (в моем примере: D: \ jee-neon \ eclipse \ Databases \ \ seg0). Это не отображалось при поиске с именами Базы данных. Спасибо за подсказку. – themole

ответ

0

Итак, с комментариями Брайана и Стива, я нашел ответ на свой вопрос.

Для Tomcat удалось Derby Embedded базы данных, с кот работает в Eclipse, под виндой, то derby.system.home, кажется, относится к установке папку Eclipse, не это рабочее пространство.

Так что, когда ваш Eclipse IDE установлен ниже

D:\eclipse 

URL-адрес JDBC

jdbc:derby:Databases/myDerbyDB 

будет относиться к базе данных Derby, расположенный в

D:\eclipse\Databases\myDerbyDB 

Благодаря Стив и Брайан!