2011-08-17 3 views
2

HAR 하이버 네이트 아카이브로 패키지 된 애플리케이션을 JBoss AS5에서 AS7로 마이그레이션 할 예정입니다. 여러 가지 질문이 있는데 응용 프로그램을 성공적으로 마이그레이션하기 위해 여러 가지 장애물이 있음을 알고 있습니다. 나는 스스로 연구하는 것을 꺼리지 않습니다. 그러나이 시점에서 가능한 것이 무엇인지, 또는 내가 취해야 할 방향과 포인터 나 의견을 고맙게 여기는 방향을 확신하지 못합니다.HAR 하이버 네이트 아카이브를 JBoss 7로 마이그레이션

JBoss AS7이 HAR 절전 모드 아카이브를 지원하지 않는다는 것을 알고 있습니다. 따라서이 기능을 사용하려면 일종의 변경을해야합니다. 내 애플 리케이션은 hibernate3을 필요로한다. 우리는 최대 절전 모드 주석의 새로운 스타일을 엔티티를 정의하기 위해 HAR에 * hbm.xml 파일을 사용하고 있지 않습니다

<hibernate-configuration xmlns="urn:jboss:hibernate-deployer:1.0"> 

    <session-factory name="java:/hibernate/SessionFactory" bean="jboss.har:service=Hibernate"> 
     <property name="datasourceName">java:/MySqlDS</property> 
     <property name="dialect">org.hibernate.dialect.MySQLDialect</property> 

<!-- <property name="sessionFactoryInterceptor">org.jboss.test.hibernate.SimpleInterceptor</property> --> 
<!-- <property name="hbm2ddlAuto">create</property> --> 
     <depends>jboss:service=Naming</depends> 
     <depends>jboss:service=TransactionManager</depends> 
    </session-factory> 

</hibernate-configuration> 

처럼 내 HAR이

HAR 
| 
|-com 
| |-business classes 
|  |-*class files and *hbm.xml files 
| 
|-META-INF 
    |-hibernate.xml 

내 hibernate.xml 파일과 같이 구성되어 보인다. 내가 가지고있는 몇 가지 질문은 다음과 같습니다.

-is 거기에 JAR로 내 HAR을 패키징하고 AS7 내에서 사용할 수있는 비즈니스 클래스 다시 작성 문제없이 엔터티를 정의하기 위해 주석을 사용할 수있는 방법이 있습니다. * hbm.xml 파일 대신에?
하이버 네이트 주석과 persistence.xml을 사용하도록 코드를 변환하는 방법에 대한 안내서가 있습니까? 나는 조사하는 것을 꺼리지 만, 지금 내가 무엇을 연구해야하는지 잘 모르겠습니다.

+0

이> 난 당신이에서 것을 알고 어디 보스 AS7는 HAR 아카이브 내가 당신에게 수 최대 절전 모드를 지원하지 않는 것으로 알고 여기의 persistence.xml은? – sheidaei

+0

이 문제를 해결 한 적이 있습니까? 지금 당장 같은 문제가 발생합니다. –

답변

1

HAR 아카이브는 JBoss 7에 더 이상 존재하지 않습니다. 사실 ServiceMBeanSupport조차도 존재하지 않습니다. 하나의 가능성은 SessionFactory를 생성하고 그것을 JNDI에 주입시키는 메커니즘을 사용하는 것이다. 또 다른 가능성은 새로운 JPA API를 "사용하고 사용하지 않는"것입니다. "사용"이란 persistence.xml 파일에서 Hibernate 구성을 정의하고 사용 가능한 매핑 탐지 기능을 사용하는 것을 의미합니다. 이렇게하면 긴 목록에있는 모든 매핑과 클래스를 어딘가에 하드 코딩 할 필요없이 META-INF/persistence.xml 파일이 추가 된 .har 파일을 .jar 파일로 평이하게 이름을 바꿀 수 있습니다. "사용하지 않는다"는 말은 JPA가 초기화되었지만 기존의 SessionFactory를 대신 사용한다는 의미입니다. 이전 API를 사용할 때 새로운 API로 변경할 이유가 없기 때문입니다. 그러나 또 다른 문제는 JBoss 7이 Hibernate 4에 번들되어 있으며 마이그레이션이 간단하지 않을 수 있다는 것입니다. 그러나 응용 프로그램에서 최대 절전 모드를 3.5로 묶을 가능성은 여전히 ​​있습니다.

<persistence 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_2_0.xsd" 
 
     version="2.0"> 
 
    <persistence-unit name="X"> 
 
    <description>X</description> 
 
    <jta-data-source>java:/XOracleDS</jta-data-source> 
 
    <properties> 
 
    \t <!-- This tells JBoss to use Hibernate 3 (as low as 3.5) bundled into the application --> 
 
     <property name="jboss.as.jpa.providerModule" value="hibernate3-bundled" /> 
 
     <!--<property name="jboss.as.jpa.managed" value="false"/>--> 
 
     <!-- This will bind the session factory to JNDI as we require --> 
 
     <property name="hibernate.session_factory_name" value="java:/hibernate/XOracleSessionFactory"/> 
 
     <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/> 
 
     <!-- This is one of the trickiest parts as Hibernate 3.5 does not has a RegionFactory and we must use the one from ehcache to bridge the gap --> 
 
     <property name="hibernate.cache.region.factory_class" value="net.sf.ehcache.hibernate.EhCacheRegionFactory"/> 
 
     <!-- very important to allow same names as in JBoss 4 --> 
 
     <property name="hibernate.cache.region_prefix" value=""/> 
 
     <property name="hibernate.cache.provider_class" value="net.sf.ehcache.hibernate.SingletonEhCacheProvider"/> 
 
     <!-- This will make use of JBoss managed transactions. The factory is already present in JNDI --> 
 
     <property name="hibernate.transaction.factory_class" value="org.hibernate.transaction.JTATransactionFactory"/> 
 
     <property name="hibernate.jdbc.batch_size" value="20"/> 
 
     <property name="hibernate.show_sql" value="false"/> 
 
     \t <property name="hibernate.format_sql" value="false"/> 
 
     \t <property name="hibernate.cache.use_query_cache" value="true"/> 
 
     \t <property name="hibernate.cache.use_second_level_cache" value="true"/> 
 
    </properties> 
 
    </persistence-unit> 
 
</persistence>

관련 문제