سؤال

وهنا هو التكوين لي: السبات 3.3.1.GA، جبوس 5.1.0.GA، جبوس ذاكرة التخزين المؤقت 3.2.0.GA

وأنا أفعل التكوين السبات كما هو موضح هنا: 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>

ولكن الحصول على خطأ محدد الممتلكات غير صالح:

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]

وهكذا، لا يمكنني استخدام "cache.region.factory_class" الملكية ولكن فقط "cacheRegionFactoryClass" (الذي يظهر في استثناء).

وأنا لا يمكن استخدام أي خصائص أخرى مثل cache.region. * وبالتالي لا يمكن configurate مخبأ المستوى الثاني لبلدي السبات.

ويمكن لأي شخص أن تعطيني وصلة كيفية configurate جبوس ذاكرة التخزين المؤقت 3.2 مع جبوس 5.1؟ انا مهتمة بصفة خاصة في JndiSharedJBossCacheRegionFactory وJndiMultiplexedJBossCacheRegionFactory.

هل كانت مفيدة؟

المحلول

وردا على سؤالي الخاص.

واتضح أنه لا يمكنك استخدام جبوس ذاكرة التخزين المؤقت مع إسبات في جبوس 5.1 إذا كنت تبدأ السبات كما mbean، أي وضع السبات ملف التكوين في مجلد نشر من خادم جبوس.

ويحدث هذا لأن mbean لا يقبل المعلمات مثل "hibernate.cache. *" (وهذا هو بالضبط ما هو استثناء حول).

وحتى بلدي الحل هو تهيئة السبات من التعليمات البرمجية جافا والحصول على ركوب hibernate.xml.

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();

نصائح أخرى

وYury يتفينوف، هذه الخصائص هي الخصائص الجديدة التي لم يتم تعيينها إلى السبات سمات MBean لأنه لم يعد الحفاظ على السبات MBean. أنا لا أوصي بأن تقوم بنشر السبات باعتبارها MBean.

وبعد بعض التحقيقات تمكنت من بدء السبات + JBossCache مع هذا التكوين.

<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>

ولكن، ما زلت لا يمكن تحديد (الحصول على نفس الخطأ) المعلمات التالية: "hibernate.cache.region.jbc2.cfg.entity"، "hibernate.cache.region.jbc2.cfg.collection"، "hibernate.cache.region.jbc2.cfg.query".

ودون تحديد هذه المعايير لا أستطيع السيطرة على ما المثال مخبأ سيتم استخدامها لإدخالات التخزين المؤقت، ومجموعات والاستفسارات.

ولقد كان لي نظرة على هذا وقد وصلنا إلى استنتاج مفاده أن جبوس AS آلية لتحليل ونشر ملف hibernate.cfg.xml غير مفرط هشا وعرضة للسقوط من التاريخ فيما يتعلق بخيارات التكوين التي السبات يدعم. لقد فتحت https://jira.jboss.org/jira/browse/JBAS- 7411 مع اقتراح وسيلة ممكنة لتحسين هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top