В настоящее время я использую встроенную базу данных 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 хранит мои данные?
Какой инструмент вы используете для поиска ваших дисков? Учитывая, что JDBC Connection URL, вы абсолютно должны быть в состоянии найти эту папку. Возможно, вы используете Tomcat на другом сервере, и вы ищете неправильный сервер? Попробуйте найти папку с именем «seg0» или файл с именем «db.lck». Когда вы говорите, что можете получить доступ к базе данных через «чистый JDBC», вы имеете в виду, что вы обращаетесь к ** той же ** базе данных? Если да, то какой URL-адрес JDBC-соединения вы используете в этой программе «чистого JDBC» и можете ли вы определить, где ** он ** хранит базу данных? –
Ваша база данных будет находиться в '$ WORKING_DIR \ Базах данных \ myDerbyDB'. Если вы используете Tomcat в качестве службы Windows, тогда '$ WORKING_DIR' будет зависеть от того, как это устанавливает механизм службы Windows. Возможно, вам не удастся найти его, если служба работает как некоторая идентификация пользователя, которая не является вашим обычным логином. –
Derby запускается во встроенном режиме в качестве глобального ресурса в tomcat (что означает не глобальное с точки зрения системы). Сам Tomcat запускается Eclipse. Я использовал проводник Windows для поиска папок, названных как база данных (например, myDerbyDB).Интересно, что когда я ищу «seg0», я получаю результат и указывает путь установки eclipse (в моем примере: D: \ jee-neon \ eclipse \ Databases \ \ seg0). Это не отображалось при поиске с именами Базы данных. Спасибо за подсказку. –
themole