[Java lista] NetBeans + Maven + MavenIde + Spring + JPA + Hibernate
Tamás Magyar
magyusz at gmail.com
2007. Júl. 17., K, 17:05:54 CEST
> - Minden Tomcat indulás (mióta az Acegi is benne van):
> java.lang.OutOfMemoryError: PermGen space, próbálkoztam a Netbeans
> Server Manager-ében a -Xmx -Xms -XX:MaxPermSize kapcsolókkal, semmi,
> feltételezem, mivel a Maven(IDE) indít Tomcat-et, az vághatja felül a
> kapcsolókat
Megerősítem a gyanút, hogy az Acegi okozza. Megfelelően nagy PermGen
mérettel, megfelelően (végesen) nagy számra növelhető a Tomcat restart
nélküli sikeres redeployok száma.
Nagyon ismerős probléma:
"- Tranzakciókezelés deklaratív módon, XML-ben és annotation-nel is
ugyanaz: az init-method nincs tranzakciós környezetben, ott nem tudok
semmit perzisztálni. Ötlet? Kezelhetem kézzel, de akkor mi értelme
van..."
Volt egy kollégám, aki szerint biztosan meg lehet valahogy oldani... :)
Sok kísérlet, fórumozás, keresés, nyomozás volt részemről már
ezügyben. Az Interceptor ThreadLocal-lal dolgozik. Közvetlen
összefüggést a HTTPProcessor szálakkal és az
OpenSessionInViewInterceptoron keresztüli közvetettet sem sikerült
kiderítenem, hogy miért nem hajlandó a main szálon (pl. initben) vagy
saját / akármilyen csoda tool (pl. Quartz, JDK5 scheduleing) által
kreált szálon (pl. aszinkron feldolgozásnál) ugyanolyan szépen
működni, mint a HTTP kiszolgáló szálakon (ott soha semmi gond nem
volt). A kisérletezés nagy része még Spring1-en történt, de mivel a
Spring2 projektben sem sikerült belőni (csak a HTTP kiszolgáló
szálakon működött korrekten), saját tranzakció kezelést választottunk,
szokatlan volt (sok kézi kódolás, amit addig a Spring megcsinált), de
működött.
A Spring szerintem úgy gondolta, hogy ha a main szálon dolgozol (az
init ott fut le), akkor minek Neked deklaratív tranzakció. Sajnos
rosszul gondolta.
Magyusz
További információk a(z) Javalist levelezőlistáról