[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