Вопрос о конфигурации персистентности - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть веб-приложение (на основе GWT / Vaadin), которое я до сих пор запускал через

Причал Mvn: пробег

Теперь я хочу запустить его на другом веб-сервере (также Jetty) и получить проблемы с подключением к базе данных.

В файле WAR нет файла persistence.xml. Может ли это быть причиной сбоя?

Если да, как мне настроить постоянство, если

а) Я использую Java DB (Derby),

б) Хибенат и

c) теперь настройте соединение с БД, как показано ниже

Заранее спасибо

Дмитрий

private void tryToOpenSession(final String aConnectionString)
        throws Throwable {
    ...

    state = PersistenceState.OPENING_CONNECTION;
    final Configuration cnf = new Configuration();
    cnf.setProperty(Environment.DRIVER,
            "org.apache.derby.jdbc.EmbeddedDriver");
    cnf.setProperty(Environment.URL, aConnectionString);
    cnf.setProperty(Environment.DIALECT, DerbyDialect.class.getName());
    cnf.setProperty(Environment.SHOW_SQL, "true");
    cnf.setProperty(Environment.HBM2DDL_AUTO, "update");
    cnf.setProperty(Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");

    cnf.addResource("persistence/Entity1.hbm.xml");
    cnf.addResource("persistence/Entity2.hbm.xml");
    ...
    cnf.addResource("persistence/EntityN.hbm.xml");

    sessionFactory = cnf.buildSessionFactory();

    session = getSession();

    ...

    state = PersistenceState.CONNECTION_OPEN;
}

UPD: вот исключение:

java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.EmbeddedDriver
    at java.lang.Class.forName0(Native Method) ~[na:1.6.0_20]
    at java.lang.Class.forName(Class.java:186) ~[na:1.6.0_20]
    at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:80) ~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:143) ~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]
    at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:84) ~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]
    at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:459) ~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:91) ~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]
    at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2833) ~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2829) ~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840) ~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]

1 Ответ

1 голос
/ 01 апреля 2011

Исключение ясно говорит о том, что org.apache.derby.jdbc.EmbeddedDriver или некоторые его зависимости не могут быть найдены в пути к классам.Обычно вам нужно поместить необходимые файлы jar в /WEB-INF/lib (или объявить их в pom.xml, чтобы Maven автоматически их поместил).

...