[Java lista] JMS kerdes

zamek zamek at vili.pmmf.hu
2009. Aug. 18., K, 10:23:53 CEST


hello,

István Viczián írta:
> Szia,
> 
> Aham, az nehezen fog menni, mert az EJB-t csak a konténer hívhatja, az
> onMessage-en keresztül, a session bean nem tudja hívni.
> Én az MDB-t a process indítására gondoltam, de azt látom, hogy már
> megoldottad. A státusz visszaadását mi úgy oldottuk meg, hogy
> adatbázisba írtuk, és a session bean mindig onnan kérdezgette. Ez
> ezért is jó, mert ha pl. clusterezett környezeted van, az egyik
> node-on fut a processz, de a státusz lekérés a másik node-on fut,
> akkor csak az adatbázis, ami közös.
> No meg persze a JMS, és mér értem, hogy mit szeretnél. Én ettől
> függetlenül inkább az adatbázisosat javasolnám. 
Azert szeretnem ezt, mert igy lehet egy komponens, ami csak java 
(package) es nem kell adatbazis ugyekkel kuzdeni.
Kulonbozo adatbazisok (autoincrement/sequence, stb).

>A JMS-es megoldásnál
> szerintem az a probléma, hogy a konténer kezel tranzakciókat, és hiába
> küldesz be egy csomó üzenetet, csak commit-nál megy el. Ezt úgy
> oldhatod meg, hogy a státusz üzenetet külön tranzakcióba teszed, pl.
> csinálsz egy új metódust RequiresNew tranzakciós attribútummal, csak
> vigyázz, hogy mindenképp proxy-n keresztül hívjad (vagy másik bean,
> vagy ugyanazon bean SessionContext.getBusinessObject()-en keresztül).
Ezt lehetne kicsit reszletesebben? Odaig eljutottam, hogy hiaba mondom a 
session generalasnal, hogy:

this.statusSession = this.statusConnection.createTopicSession(true, 
Session.SESSION_TRANSACTED);

a send elszall:

MQJMSRA_DS4001: commit():Illegal for a non-transacted 
Session:sessionId=1981059560489603328

a send igy nez ki:

@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
protected void sendStatus (Message message) throws Exception {
    message.setJMSCorrelationID(this.processId);
    TopicPublisher publisher = statusSession.createPublisher(statusQueue);
    publisher.publish(message,DeliveryMode.PERSISTENT, 
Message.DEFAULT_PRIORITY, Message.DEFAULT_TIME_TO_LIVE);
    this.statusSession.commit();
    publisher.close();
}

probaltam szerezni sajat transaction-t:

   @Resource
     private UserTransaction statusTransaction;

amikor kiadom a statusTransaction.begin()-t,
java.lang.IllegalStateException: Operation not allowed.
hiba jon.


-- 
  thx,
----------------------------------
Zoltan Zidarics programmer
PTE-PMMFK H-7621 Pecs, Boszorkany u. 2. Hungary
E-Mail: zamek at vili.pmmf.hu
----------------------------------



További információk a(z) Javalist levelezőlistáról