Eclipse Tomcat создает 3 дублированных пула соединений JNDI - PullRequest
0 голосов
/ 06 апреля 2011

На одной рабочей станции разработчика с Eclipse Helios SR2, Windows 7 и Tomcat 6.0.32 у нас очень странный случай дублирования пулов соединений JNDI

  • Бегущий кот от Eclipse
  • server.xml

>

<Context docBase="path to web app" path="/ds-web" reloadable="true">
    <Resource
        name="jdbc/ds"
        username="ds"
        password="pass"
        type="javax.sql.DataSource" 
        url="jdbc:postgresql://localhost:5432/ds"  
        auth="Container" 
        driverClassName="org.postgresql.Driver" 
        factory="org.apache.commons.dbcp.BasicDataSourceFactory" 
        logAbandoned="true" 
        maxActive="30" 
        maxIdle="10" 
        maxWait="1000" 
        removeAbandoned="true" 
        removeAbandonedTimeout="60"
        validationQuery="SELECT 1"
        testOnBorrow="true"
        testOnReturn="true"/>

</Context>
  • При запуске сервера на консоли мы видим следующие 3 раза подряд

AbandonedObjectPool is used
(org.apache.commons.dbcp.AbandonedObjectPool@11aa58b)
    LogAbandoned: true
    RemoveAbandoned: true
    RemoveAbandonedTimeout: 60
  • Приложению не удается найти ресурс JNDI
  • Если мы удалим <Resource> в server.xml, то консоль покажет, что пул соединений вообще не создан
  • На другом компьютере разработчика с таким же оборудованием и ОС у нас нет этой проблемы

Есть идеи? Спасибо

Марк

Ответы [ 3 ]

0 голосов
/ 06 апреля 2011

Мы переустановили postgresql на машине, и проблема была каким-то образом решена.

Мы думаем, что что-то в оригинальной конфигурации postgresql испортилось, и tomcat не удалось каким-то образом подключиться к BD.Я предполагаю, что tomcat просто «пробовал 3 раза», таким образом, тройной вывод.

Еще одна неразгаданная тайна ...

0 голосов
/ 11 февраля 2014

переместить

<Resource
    name="jdbc/ds"
    username="ds"
    password="pass"
    type="javax.sql.DataSource" 
    url="jdbc:postgresql://localhost:5432/ds"  
    auth="Container" 
    driverClassName="org.postgresql.Driver" 
    factory="org.apache.commons.dbcp.BasicDataSourceFactory" 
    logAbandoned="true" 
    maxActive="30" 
    maxIdle="10" 
    maxWait="1000" 
    removeAbandoned="true" 
    removeAbandonedTimeout="60"
    validationQuery="SELECT 1"
    testOnBorrow="true"
    testOnReturn="true"/>

в server.xml, а именно

<GlobalNamingResources>

элемент

в файле conf / context.xml, который вы вместо этого задали бы

<ContextLink name="jdbc/ds" global="jdbc/ds"/>

и, таким образом, три контекста будут совместно использовать один и тот же пул.

0 голосов
/ 06 апреля 2011

Мое предложение, скопируйте все <Context> из server.xml и создайте пустую context.xml внутри папки META-INF веб-приложения и вставьте туда <Context>, скопированный из server.xml.

Перезапустите приложение и посмотрите, работает ли это.

...