Мога ли да задам настройките за групиране на JNDI връзки на Tomcat в моето приложение Spring-MyBatis?

Околна среда:
Tomcat 7
JNDI
Spring-MyBatis
Без JTA - само обединяване на общите права

Проблем: Обединяването на връзките не може да работи, както е обявено. Не мога да намеря нито един пример за това, който да не използва самостоятелен мениджър на транзакции или който да не поставя всички настройки във войната, което прави JNDI безсмислен. Казват ми, че JTA е пресилен за това приложение и че трябва да се придържаме към обединяването на общите ресурси. Това има смисъл, но не виждам начин да конфигурирам обединяване, ако го направим по този начин.

И така... как да конфигурирам обединяване на връзки, без да поставям настройките във военния файл И без да използвам самостоятелен мениджър на транзакции? Може ли това да стане без пълен Java EE сървър за приложения? Ние просто преминаваме към Tomcat от друг продукт, който всъщност е пълен Java EE, така че мисля, че това може да е Container vrs. Проблем със сървъра за приложения.

Странната част е, че можем и сме използвали JNDI, но обединяването определено е грешно.

Ето един пример, който вероятно работи, но защо да се занимавате с JNDI, ако настройките ще бъдат в META-INF/context.xml?:

Пример за MyBatis JNDI


person user447607    schedule 15.11.2012    source източник
comment
Ако JTA е пресилен, тогава JNDI също е пресилен.   -  person Adam Gent    schedule 16.11.2012
comment
...което не означава, че моите архитекти не го изискват. ;-) Те преминават от пълен JEE сървър към Tomcat и просто все още не го разбират.   -  person user447607    schedule 07.12.2012


Отговори (1)


Дори и с context.xml, това все още е настройка на ниво контейнер. Но това е удобен начин за внедряване на всичко в една единица, вместо да се налага да създавате пул за свързване, преди да разположите WAR файла.

JNDI има за цел да запази общата конфигурация на вашето приложение. Ако вземете своя WAR и го внедрите в WebSphere, например, той ще игнорира файла context.xml. Но WebSphere ще види, че имате JDNI resource-ref във вашия web.xml и ще ви преведе през създаването на източника на данни. Същата идея като Tomcat, просто различен начин да се направи.

Ако сте 100% сигурни, че това приложение ще работи само в Tomcat, тогава не трябва да използвате JNDI. Но това ще ви спести проблеми по-късно, ако се преместите в друг контейнер.

person AngerClown    schedule 30.11.2012
comment
Tomcat е изискването, така че Tomcat трябва да бъде. ;-) - person user447607; 07.12.2012
comment
Оттогава разбрах това. Проблемът беше, че собственото обединяване на MyBatis причинява странни събития, ако оставите конфигурационния файл на MyBatis. Наличието на такъв в Spring конфигурация е контраинтуитивно, но въпреки това е необходимо, ако искате пулове, управлявани от контейнери. Моят е почти празен. - person user447607; 07.12.2012