JCA ConnectionManager.allocateConnection
Krankila Norbert Ing.
norbert_krankilla na kb.cz
Čtvrtek Duben 9 15:19:46 CEST 2009
Tak hacik bol v tom, ze IBM WebSphere forcuje UnShared Connection, pokial resource adapter nepodporuje ziadnu transakciu.
Po zmene v ra.xml: <transaction-support>LocalTransaction</transaction-support> a doimplementovanych drobnostiach podla runtime exceptions to uz funguje ako ma.
Zaznam v trace.log:
[4/8/09 16:15:39:049 GMT+01:00] 00000023 3 UOW= source=com.ibm.ejs.j2c.ConnectionFactoryBuilderImpl org=IBM prod=WebSphere component=Application Server thread=[WebContainer : 3]
Non-transactional resource adapter configured. Forcing res-sharing-scope to UNSHAREABLE.
________________________________________
Zdravicko,
mam problem rozbehat svoj resource adapter. Narazil som na to ze ConnectionManager.allocateConnection vo WAS 6.1 funguje inak nez som si predstavoval.
Po 10 volaniach connectoru mi aplikacny server zahlasi com.ibm.websphere.ce.j2c.ConnectionWaitTimeoutException z dovodu vycerpania connections.
Nechapem preco sa matchManagedConnection zavola len v prvom pripade a az po vytvoreni noveho ManagedConnection. Zaroven mi pride divne, ze pomocou close na Connection prevolavam ConnectionEventListener.connectionClosed pre vsetky listenery, ale nikdy sa mi nezavola ManagedConnection.removeAppConnection.
PREDPOKLAD: Predpokladal som, ze klient resource adapteru poziada o connection nasledovne (zjednodusene):
1. ConnectionFactory.getConnection(parametre):
1.1. ConnectionManager.allocateConnection( ManagedConnectionFactory, parametre):
--- nasledujuce kroky vykona aplikacni server: ---
1.1.1. managedConnection = matchManagedConnection(parametre)
1.1.2. if (null == managedConnection) {
1.1.2.1 managedConnection = new ManagedConnection(parametre)
1.1.2.2 managedConnection.addConnectionEventListener(...)
1.2. Connection c = ManagedConnection.getConnection
1.3. return c;
REALITA: Co mna desi je zapis v logu:
1. ConnectionFactory.getConnection(parametre)
1.1. ConnectionManager.allocateConnection( ManagedConnectionFactory, parametre)
1.1.1. managedConnection = new ManagedConnection(parametre)
1.1.2. managedConnection = matchManagedConnection(parametre)
1.1.3. managedConnection.addConnectionEventListener(...)
...
1. ConnectionFactory.getConnection(parametre)
1.1. ConnectionManager.allocateConnection( ManagedConnectionFactory, parametre)
1.1.1. new ManagedConnection(parametre)
1.1.2. managedConnection.addConnectionEventListener(...)
...
1. ConnectionFactory.getConnection(parametre)
1.1. ConnectionManager.allocateConnection( ManagedConnectionFactory, parametre)
1.1.1. new ManagedConnection(parametre)
1.1.2. managedConnection.addConnectionEventListener(...)
...
Tento e-mail je urcen pouze pro jeho adresata/adresaty a muze obsahovat duverne informace, jejichz ochrana muze byt vyzadovana pravnimi predpisy.
Jestlize jste zpravu obdrzel(a) omylem, neprodlene informujte jejiho odesilatele a tuto zpravu, jeji prilohy a pripadne kopie ihned vymazte. Jakakoli forma uziti, zverejneni, reprodukce, kopirovani, distribuce a sireni teto zpravy je v takovem pripade zakazana.
Komercni banka, a.s., neodpovida za mozne skody zpusobene neuplnym prenosem, moznou modifikaci ci zpozdenim teto zpravy behem prenosu od odesilatele k adresatovi.
This e-mail transmission is intended solely for the ordinary user of the e-mail address to which it was addressed. It may contain legally privileged and/or confidential information.
If you have received this e-mail in error or are not an intended recipient please inform the sender with-out delay and delete this e-mail, attachments and possible copies immediately. The unauthorised use, disclosure, distribution and/or copying of this e-mail or any information it contains is prohibited.
Komercni banka, a. s., does not accept liability for any damage caused by incomplete transmission, possible modification or delay of this e-mail during the transmission from the sender to the recipient.
Další informace o konferenci Konference