Hibernate gebruiken binnen JBoss

Pagina: 1
Acties:

  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Ik heb hibernate als een MBean geregistreerd binnen JBoss:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<server>
    <mbean code="org.hibernate.jmx.HibernateService" name="jboss.jca:service=HibernateFactory,name=HibernateFactory">
        <depends>jboss.jca:service=RARDeployer</depends>
        <depends>jboss.jca:service=LocalTxCM,name=jdbc/adressbookservice</depends>
        <!-- Make it deploy ONLY after DataSource had been started -->
        <attribute name="MapResources">mappings/adress.hbm.xml</attribute>
        <attribute name="JndiName">java:/hibernate/HibernateFactory</attribute>
        <attribute name="Datasource">java:/jdbc/adressbookservice</attribute>
        <attribute name="Dialect">org.hibernate.dialect.MySQLDialect</attribute>
        <attribute name="TransactionStrategy">org.hibernate.transaction.JTATransactionFactory</attribute>
        <attribute name="TransactionManagerLookupStrategy">org.hibernate.transaction.JBossTransactionManagerLookup</attribute>
        <!-- <attribute name="UseOuterJoin">false</attribute>-->
        <!-- <attribute name="ShowSql">false</attribute>-->
        <attribute name="UserTransactionName">UserTransaction</attribute>
    </mbean>
</server>


Dit betekend echter wel dat ik een lossen .SAR archive krijg. Is dit de normale manier van werken? Welke manieren zijn er nogmeer?

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line


Verwijderd

Wat wij normaal doen is in JBOSS een JNDI datasource aanmaken, cfg volgens JBOSS example: <jbossdir>/docs/examples/jca/mysql-ds.xml (ik zie dat je MySQL gebruikt)

En verder de configuratie in jboss-web.xml (datasource) en spring framework (application context): datasource, hibernate settings & mappings, transactions, ...

Ben ook nog maar net met J2EE en de combo: JBOSS, Struts, Spring, Hibernate aan de slag en vond de Spring Live tutorial met bijbehorende blank application (Equinox) zeer behulpzaam:

http://www.sourcebeat.com/TitleAction.do?id=7

(Sample chapter2 == Spring+Struts+Hibernate+JUnit+Ant tutorial, sourcecode uit Chap2 == Equinox)

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 13-04 14:23

Eelke Spaak

- Vlad -

ronaldmathies schreef op zondag 29 januari 2006 @ 22:51:
Dit betekend echter wel dat ik een lossen .SAR archive krijg. Is dit de normale manier van werken? Welke manieren zijn er nogmeer?
Dat is de normale manier van werken, tot en met JBoss 4.0.0 (geloof ik). Vanaf 4.0.1 kan je een HAR maken in plaats van een Hibernate SAR. Een HAR is een Hibernate ARchive; als je dit deployt zoekt JBoss automatisch welke entities in je archive zitten en maakt 'ie zelf een Hibernate configuratie aan.

TheStreme - Share anything with anyone


  • momania
  • Registratie: Mei 2000
  • Laatst online: 14-04 16:40

momania

iPhone 30! Bam!

Eelke Spaak schreef op maandag 30 januari 2006 @ 16:13:
[...]

Dat is de normale manier van werken, tot en met JBoss 4.0.0 (geloof ik). Vanaf 4.0.1 kan je een HAR maken in plaats van een Hibernate SAR. Een HAR is een Hibernate ARchive; als je dit deployt zoekt JBoss automatisch welke entities in je archive zitten en maakt 'ie zelf een Hibernate configuratie aan.
klopt.

En ipv een jboss-service.xml noem je hem gewoon een hibernate-service.xml :)

Je moet nog wel gewoon de sessionfactory naam, driver, etc opgeven, maar je mappings zelf iig niet meer.

vb hibernate-service.xml:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE server PUBLIC "-//JBoss//DTD MBean Service 3.2//EN" "http://www.jboss.org/j2ee/dtd/jboss-service_3_2.dtd">

<server>
    <mbean code="org.jboss.hibernate.jmx.Hibernate" name="jboss.har:service=MyHibernate">
        <attribute name="DatasourceName">java:/MyDS</attribute>
        <attribute name="SessionFactoryName">java:/hibernate/MySessionFactory</attribute>
        <attribute name="Dialect">org.hibernate.dialect.Oracle9Dialect</attribute>

        <attribute name="CacheProviderClass">org.jboss.hibernate.cache.DeployedTreeCacheProvider</attribute>
        <attribute name="DeployedTreeCacheObjectName">jboss.cache:service=TomcatClusteringCache</attribute>

        <attribute name="ShowSqlEnabled">false</attribute>
        <attribute name="SqlCommentsEnabled">false</attribute>
        <attribute name="StatGenerationEnabled">true</attribute>
        <attribute name="MaxFetchDepth">1</attribute>
        
    </mbean>
</server>


Lekker makkelijk configureren zo en ook gelijk alle informatie beschikbaar via je jmx console (ook van de stats, want die jmx bean wordt automatisch gedeployed) :)
Nadeel is alleen als je van application server gaat wisselen dat je je configuratie alsnog moet veranderen, maar als je bijvoorbeeld Spring gebruikt is dat ook een fluitje van een cent.

Neem je whisky mee, is het te weinig... *zucht*


  • ronaldmathies
  • Registratie: Juni 2001
  • Niet online
Kijk dat is nog eens mooi. Ik maak opzich gebruik van JBoss 4.0.2, echter wil ik mijn code nu nog compatible houden met lagere versies.

Ik maakte trouwens een tikfout in mijn MBean:

<attribute name="Datasource">java:/jdbc/adressbookservice</attribute>

Moet :

<attribute name="Datasource">java:/jdbc/adressbookservice</attribute>

Zijn (let op de java:/jdbc t.o.v. java:jdbc).

3015 Wp-z 5360 Wp-nno op 2 x SMA-SB3600 TL-21, Warmtepomp: ERSC-VM2CR2 / PUHZ-SHW140 YHA, WTW Q350, EV Kia Ev6 GT-Line