Java 持久性配置问题

Java 持久性配置问题,java,hibernate,jetty,derby,javadb,Java,Hibernate,Jetty,Derby,Javadb,我有一个web应用程序(基于GWT/Vaadin),到目前为止,我通过 mvn码头:运行 现在我想在另一个web服务器(也是Jetty)上运行它,并解决数据库连接问题 WAR文件中没有persistence.xml文件。这是失败的原因吗 如果是,我应该如何配置持久性 а)我使用的是Java DB(Derby) b) 抑制和 c) 现在按如下所示配置DB连接 ? 提前谢谢 德米特里 private void tryToOpenSession(final String aConnectionStri

我有一个web应用程序(基于GWT/Vaadin),到目前为止,我通过

mvn码头:运行

现在我想在另一个web服务器(也是Jetty)上运行它,并解决数据库连接问题

WAR文件中没有persistence.xml文件。这是失败的原因吗

如果是,我应该如何配置持久性

а)我使用的是Java DB(Derby)

b) 抑制和

c) 现在按如下所示配置DB连接

?

提前谢谢

德米特里

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] java.lang.NoClassDefFoundError:无法初始化类org.apache.derby.jdbc.EmbeddedDriver 在java.lang.Class.forName0(本机方法)~[na:1.6.0\u 20] 在java.lang.Class.forName(Class.java:186)~[na:1.6.0\u 20] 在org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:80)~[hibernate-core-3.6.0.Final.jar:3.6.0.Final] 在org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:143)~[hibernate-core-3.6.0.Final.jar:3.6.0.Final] 在org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:84)~[hibernate-core-3.6.0.Final.jar:3.6.0.Final] 在org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:459)~[hibernate-core-3.6.0.Final.jar:3.6.0.Final] 在org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:91)~[hibernate-core-3.6.0.Final.jar:3.6.0.Final] 在org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2833)~[hibernate-core-3.6.0.Final.jar:3.6.0.Final] 在org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2829)~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]
在org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1840)~[hibernate-core-3.6.0.Final.jar:3.6.0.Final]上,Exception明确指出,
org.apache.derby.jdbc.EmbeddedDriver
或其某些依赖项在类路径中找不到。通常,您需要将所需的jar文件放入
/WEB-INF/lib
(或在
pom.xml
中声明它们,以使Maven自动放入它们)。

我将堆栈跟踪添加到问题文本中。您解决过这个问题吗?我也有同样的问题,还没有。我得到一个建议,不仅要包含derby.jar文件,还要包含derby-tools.jar。我还没有试过。在生成的WAR文件中,在pcc.WAR\WEB-INF\lib\目录中,有一个JAR文件derby-10.6.2.1.JAR,在org\apache\derby\jdbc\目录中有EmbeddedDriver.class文件。为什么没有加载?