Frage

Hier ist meine Konfiguration:. Hibernate 3.3.1.GA, JBoss 5.1.0.GA, JBoss Cache 3.2.0.GA

Ich mache Hibernate Konfiguration wie hier beschrieben: http://www.jboss.org/community/wiki/ClusteredJPAHibernateSecondLevelCachinginJBossAS5

<hibernate-configuration>

    <session-factory>

         <property name="cache.use_second_level_cache">true</property>
         <property name="cache.use_query_cache">true</property>
         <property name="cache.region.factory_class">org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactoryctory</property>
         <property name="cache.region.jbc2.cachefactory>java:CacheManager</property>
         <property name="cache.region.jbc2.cfg.entity">mvcc-entity</property>
         <property name="cache.region.jbc2.cfg.query">local-query</property>
         <property name="cache.region_prefix">tempdb</property>

         ... other non-caching related configuration

    </session-factory>

</hibernate-configuration>

aber Fehler erhalten, die angegebene Eigenschaft ist ungültig:

Caused by: java.lang.IllegalArgumentException: No such property cache for bean org.jboss.hibernate.jmx.Hibernate available [statisticsServiceName, beanName, defaultSchema, defaultCatalog, sessionFactoryName, querySubstitutions, secondLevelCacheEnabled, password, version, statGenerationEnabled, maxFetchDepth, username, useStructuredCacheEntriesEnabled, datasourceName, dirty, streamsForBinaryEnabled, getGeneratedKeysEnabled, hbm2ddlAuto, minimalPutsEnabled, instance, jdbcBatchSize, jdbcScrollableResultSetEnabled, cacheRegionFactoryClass, dialect, scanForMappingsEnabled, runningSince, cacheRegionPrefix, class, cacheProviderClass, sessionFactoryRunning, batchVersionedDataEnabled, harUrl, queryCacheEnabled, sessionFactoryInterceptor, deployedCacheManagerJndiName, showSqlEnabled, reflectionOptimizationEnabled, jdbcFetchSize, listenerInjector, sqlCommentsEnabled, deployedCacheJndiName, controller]

Also, ich kann nicht "cache.region.factory_class" Eigenschaft verwenden, sondern nur "cacheRegionFactoryClass" (die in Ausnahme gezeigt wird).

Ich kann keine andere Eigenschaften wie cache.region verwenden. * Und somit nicht Second Level Cache für meine Hibernate konfigurieren kann.

Kann jemand mir einen Link, wie JBoss Cache 3.2 mit JBoss 5.1 konfigurieren? Ich bin besonders interessiert in JndiSharedJBossCacheRegionFactory und JndiMultiplexedJBossCacheRegionFactory.

War es hilfreich?

Lösung

Die Beantwortung auf meine eigene Frage.

Es stellte sich heraus, dass Sie nicht JBoss Cache mit Hibernate in JBoss 5.1 verwenden können, wenn Sie als mbean Ruhezustand starten, das heißt Konfiguration Hibernate-Datei in deploy-Ordner des JBoss-Servers setzen.

Dies geschieht, weil mbean keine Parameter akzeptieren wie „hibernate.cache. *“ (Und das ist genau das, was Ausnahme ist etwa).

Also meine Lösung ist Hibernate von Java-Code zu initialisieren und Fahrt von hibernate.xml erhalten.

Configuration configuration = new Configuration();
Properties properties = configuration.getProperties();

properties.put("hibernate.connection.datasource", "java:/MSSQLDMDS");
properties.put("hibernate.dialect", "org.hibernate.dialect.SQLServerDialect");
properties.put("hibernate.transaction.factory_class", "org.hibernate.transaction.JTATransactionFactory");
properties.put("hibernate.current_session_context_class", "org.hibernate.context.JTASessionContext");
properties.put("hibernate.transaction.manager_lookup_class", "org.hibernate.transaction.JBossTransactionManagerLookup");

properties.put("hibernate.cache.use_second_level_cache", "true");
properties.put("hibernate.cache.use_query_cache", "false");
properties.put("hibernate.cache.region.factory_class", "org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory");
properties.put("hibernate.cache.region.jbc2.cachefactory", "java:CacheManager");
properties.put("hibernate.cache.region.jbc2.cfg.entity", "mvcc-entity");

File mappings = getHibernateMappingDir();
configuration.addDirectory(mappings);

sessionFactory = configuration.buildSessionFactory();

Andere Tipps

@Yury Litvinov, sind diese Eigenschaften neue Eigenschaften, die nicht zugeordnet haben, in den Ruhezustand MBean-Attribute, da die Hibernate MBean wird nicht mehr gepflegt. Ich würde nicht empfehlen, Hibernate als MBean bereitstellen.

Nach einigen Untersuchungen konnte ich Hibernate + JBossCache mit dieser Konfiguration starten.

<hibernate-configuration xmlns="urn:jboss:hibernate-deployer:1.0">
   <session-factory name="java:/hibernate/SessionFactory" bean="jboss.har:service=Hibernate">
      <property name="datasourceName">java:/MSSQLDMDS</property>
      <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>      
      <property name="hbm2ddlAuto">create</property>

      <property name="secondLevelCacheEnabled">true</property>
      <property name="queryCacheEnabled">false</property>

      <property name="cacheProviderClass">org.hibernate.cache.jbc2.JndiMultiplexedJBossCacheRegionFactory</property>
      <property name="deployedCacheManagerJndiName">java:CacheManager</property>      

      <depends>jboss.cache:service=CacheManager</depends>
      <depends>jboss:service=Naming</depends>
      <depends>jboss:service=TransactionManager</depends>
   </session-factory>
</hibernate-configuration>

Allerdings bin ich immer noch nicht (immer die gleichen Fehler) folgenden Parameter angeben: "Hibernate.cache.region.jbc2.cfg.entity", "hibernate.cache.region.jbc2.cfg.collection", "hibernate.cache.region.jbc2.cfg.query".

Ohne diese Parameter spezifiziert ich nicht, welche Cache-Instanz steuern kann, wird für das Caching Einträge, Sammlungen und Abfragen verwendet werden.

Ich habe einen Blick auf diese gehabt und sind zu dem Schluss gekommen, dass der JBoss AS-Mechanismus für das Parsen und eine hibernate.cfg.xml Datei übermäßig zerbrechlich und anfällig ist die Bereitstellung veraltet in Bezug auf Konfigurationsoptionen, die Hibernate zu fallen unterstützt. Ich habe geöffnet https://jira.jboss.org/jira/browse/JBAS- 7411 mit einem Vorschlag eines möglichen Weg, dies zu verbessern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top