0

几个小时后,我试图找到我在 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 驱动程序没问题并且数据库正在工作。

4

2 回答 2

0

试试这个

在你的 persistence.xml 尝试改变

java:/DefaultDS 到 java:jboss/DefaultDS

于 2013-04-29T18:11:46.783 回答
0

您在standalone.xml 和persistence.xml 文件中为数据源使用了两个不同的JNDI 名称。尝试给两个完全相同的名称,例如 java:/jdbc/DefaultDS 并重试。

于 2013-04-29T18:20:37.860 回答