2012-02-02 5 views
0

マイセットアップでプロジェクトを休止:データベースで動作するように休止状態使用使用EJB

  1. ライブラリ。ライブラリで動作するローカルインタフェースを持つ(ETM)
  2. EJBコンポーネント。 (ETMEJB)EJBを使用してサーブレットと
  3. ウェブアプリ。 (ETMWeb)
  4. EJB(ローカルリストアイテム)のインタフェースETMEJBClient
  5. すべてがEAR内にあります。 (ETMEAR)

ETMEAR:

  • --ETM
  • --ETMEJB
  • --ETMEJBClient
  • --ETMWeb

私はライブラリを使用(ETM )正常なJavaアプリケーションから正常に動作します。私はhibernate.cfg.xmlのではないと思い

Caused by: org.hibernate.HibernateException: Connection cannot be null 
when 'hibernate.dialect' not set 

私は、全体のことは(JBoss 7.1)を展開しようとすると、私が得る: http://pastebin.com/gDmiFfhL

私はそれがに沸く何推測があります見つかりました。どこに置くべきですか?

私はすでにアプリケーションのあらゆる部分のソースのすべてのルートにコピーを入れています(それは愚かですが、私は絶望的です)。それは助けになりません。

多分これは何か他のものでしょうか?

ありがとうございます!

私は詳細を提供できるかどうか教えてください。

EDIT:私のhibernate.cfg.xmlのは、(Javaアプリケーションからライブラリにアクセスするための作品): EDITの@ouapdouap:私は持続性に私のすべての設定を移行

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 

<hibernate-configuration> 
    <session-factory> 
    <!-- We're using MySQL database so the dialect needs to MySQL as well--> 
    <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property> 

    <!-- Database connection settings --> 
    <property name="connection.driver_class">org.hsqldb.jdbcDriver</property> 
    <property name="connection.url">jdbc:hsqldb:/data/Documents/etm</property> 
    <property name="connection.username">sa</property> 
    <property name="connection.password"></property> 

    <!-- JDBC connection pool (use the built-in) --> 
    <property name="connection.pool_size">1</property> 

    <!-- Disable the second-level cache --> 
    <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

    <!-- This will drop our existing database and re-create a new one. 
     Existing data will be deleted! --> 
    <property name="hbm2ddl.auto">create</property>   

    <!-- Echo all executed SQL to stdout --> 
    <property name="show_sql">true</property> 

    <!-- Names the annotated entity class --> 
    <mapping class="com.leonty.etm.domain.Contract"/>  
    <mapping class="com.leonty.etm.domain.Employee"/> 
<mapping class="com.leonty.etm.domain.Job"/> 
<mapping class="com.leonty.etm.domain.Time"/> 

+0

を? – sebastiencol

+0

私はpersistence.xmlを使用していません - データベースにアクセスする私のライブラリは分離されており(ETM)、hibernate.cfg.xmlを使用しています これは正しい設定ですか? – Leonti

答えて

0

再フォーマットコードセクション。 XML

私はにそれを置く: ETMEJB /のejbModule/META-INF/persistence.xmlの

今、私の耳が展開します。

私は、EJBのMETA-INFではなく、ETMライブラリのMETA-INFからpersistence.xmlを読み込みます。このため、2つのディレクトリに同じファイルを置く必要があります。

ETMEJB/ejbModule/META-INF/persistence.xml - デプロイメントが成功しました。 ETM/src/META-INF/persistence。XML - 私は最初のEntityManagerFactoryを作成することによって、私の休止状態のオブジェクトを使用しようとすると、アプリケーションが

を実行しているとき、私は例外以下の取得に使用:あなたのpersistence.xmlファイルを投稿することができます

20:50:47,905 ERROR [SchemaExport] schema export unsuccessful 
java.sql.SQLException: You cannot set autocommit during a managed transaction! 
    at org.jboss.resource.adapter.jdbc.BaseWrapperManagedConnection.setJdbcAutoCommit(BaseWrapperManagedConnection.java:582) 
+0

問題は、デフォルトでJTAに切り替わっていることが判明しました。したがって、を入力すると、autocommitもtrueに設定されます。 「自動」を「更新」に変更したときに問題が解決されました。 – Leonti

関連する問題