Я установил Postgres 9.0.1 SQL-сервер и Tomcat 5.5.28 на своем локальном ПК. Оба работают нормально. Но я не смог настроить Tomcat, чтобы сделать DataSource доступным через JNDI. Я думаю, что следовал инструкциям JNDI HOW-TO со страниц Tomcat к письму (а также попробовал другие инструкции с других страниц). Но каждый раз, когда Tomcat запускается, он отображает сообщение об ошибке:
SEVERE: Null component Catalina:type=DataSource,path=/MyApp,host=localhost,class=javax.sql.DataSource,name="jdbc/postgres"
Тем не менее Tomcat запускается, но код моей базы данных не будет работать, потому что мой InitialContext.lookup заканчивается ничем.
Драйвер postgres "postgresql-8.4-701.jdbc4.jar" копируется в следующие папки:
I: \ Apache Software Foundation \ Tomcat 5.5 \ common \ lib
I: \ Apache Software Foundation \ Tomcat 5.5 \ webapps \ MyApp \ WEB-INF \ lib
Вот мой MyApp / META-INF / context.xml:
<Context path="/MyApp" docBase="MyApp" crossContext="true" reloadable="true" debug="1">
<Resource name="jdbc/postgres"
auth="Container"
type="javax.sql.DataSource"
username="postgres"
password="xxx"
driverClassName="org.postgresql.Driver"
url="jdbc:postgresql://localhost/MyDatabase"
maxWait="1000"
maxActive="20"
maxIdle="10">
</Resource>
</Context>
Вот выдержка из моего MyApp / WEB-INF / web.xml:
<web-app>
…
<resource-ref>
<description>
Postgres resource reference to a factory
</description>
<res-ref-name>
jdbc/postgres
</res-ref-name>
<res-type>
javax.sql.DataSource
</res-type>
<res-auth>
Container
</res-auth>
</resource-ref>
</web-app>
Eclipse развертывает мой проект как WAR, а Tomcat при запуске взрывает WAR-файл в виде папки. Теперь странная вещь: если я не запускаю Tomcat вручную, но с помощью Eclipse, все работает !!! Tomcat не выдает сообщение об ошибке выше.
Я обнаружил, что Eclipse использует свой собственный server.xml, context.xml и т. Д. При запуске самого Tomcat, но даже после сравнения этих файлов с обычными конфигурационными файлами Tomcat единственное отличие, которое я обнаружил до сих пор, это следующая дополнительная строка на сервере Eclipse. xml перед закрывающим тегом "host":
<Context docBase="MyApp" path="/MyApp" reloadable="true" source="org.eclipse.jst.j2ee.server:MyApp"/>
Но даже когда я копирую эту строку в собственный файл Tomcat server.xml (без атрибута «source»), он не работает без Eclipse. Так что Eclipse должен сделать что-то «дополнительное», что делает возможным поиск источника данных, в то время как «нормальная» конфигурация Tomcat дает сбой. Поскольку мне нужно развернуть WAR-файл на другом сервере (без Eclipse), мне нужна помощь, чтобы запустить его без Eclipse. Я думаю, что мой код в порядке, так как он отлично работает с Tomcat Eclipse, но моя конфигурация Tomcat 5.5 должна быть неисправна. Есть идеи?