使用HSQL 2.2.9作为数据源的JBoss 7.1部署错误

时间:2013-04-25 19:55:27

标签: java jpa jboss datasource hsqldb

几个小时后我试图找到我在Java EE程序中生成的一些错误。它使用HSQLDB数据源。当服务器(JBoss 7.1.1 final)启动时,可以找到数据库并正确创建所有需要的表。但最后在部署中我得到了以下错误:

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驱动程序没问题且数据库正在运行。

2 个答案:

答案 0 :(得分:0)

试试这个

在persistence.xml中尝试更改

的java:/ DefaultDS的 至 的java:JBoss的/ DefaultDS的

答案 1 :(得分:0)

您在standalone.xml和persistence.xml文件中使用两个不同的JNDI名称作为数据源。尝试给出两个完全相同的名称,例如java:/ jdbc / DefaultDS,然后再试一次。