几个小时后,我试图找到我在 Java EE 程序上产生的一些错误。它使用 HSQLDB 数据源。当服务器(JBoss 7.1.1 最终版)启动时,可以找到数据库并正确创建所有需要的表。但在部署结束时我收到以下错误:
21:36:43,502 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 2) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014771: Services with missing/unavailable dependencies" => ["jboss.persistenceunit.\"BusinessLogic.jar#BusinessLogic\"jboss.naming.context.java.DefaultDSMissing[jboss.persistenceunit.\"BusinessLogic.jar#BusinessLogic\"jboss.naming.context.java.DefaultDS]"]}}}
DefaultDS 是我的数据源。除了我的standalone.xml
:
<datasource jta="true" jndi-name="java:jboss/DefaultDS" pool-name="DefaultDS" enabled="true" use-java-context="true" use-ccm="true">
<connection-url>jdbc:hsqldb:${jboss.server.data.dir}${/}localDB</connection-url>
<driver>hsqldb</driver>
<security>
<user-name>sa</user-name>
<password></password>
</security>
<pool>
<prefill>false</prefill>
<use-strict-min>false</use-strict-min>
<flush-strategy>FailingConnectionOnly</flush-strategy>
</pool>
<security>
<user-name>sa</user-name>
</security>
</datasource>
我使用 JPA 和我的连接到这个数据库persistence.xml
:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="BusinessLogic">
<!-- Durch "java:/DefaultDS" wird dem JBoss angewiesen, die integrierte HSQLDB,
die als "Default Datasource" eingebunden ist, für die Persistenz der
Applikation zu verwenden -->
<jta-data-source>java:/DefaultDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
<!--Die Eigenschaft "hibernate.hbm2ddl.auto" legt fest, wie mit bereits
bestehenden Tabellen verfahren werden soll. "create-drop" bedeutet,
dass alle Tabellen bei einem Deployment der Applikation gelöscht und
neu angelegt werden. Sobald sich an Ihrer Entity Beans nichts mehr
ändert, kann hier auch "update" gewählt werden, damit bleiben einmal
angelegte Daten erhalten. -->
<property name="hibernate.hbm2ddl.auto" value="create-drop"/> <!-- create-drop -->
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.show_sql" value="false" />
</properties>
</persistence-unit>
</persistence>
正如我所说,在服务器开始时,JPA 正在正确创建所有表,所以我假设 JDBC 驱动程序没问题并且数据库正在工作。