Я отлаживаю в IntelliJ, и, поскольку мне не удается запустить JBoss (из-за проблем с контекстом и именами виртуальных хостов), я использую Jetty 6.1.26. Я смог запустить и отладить, используя строку подключения к БД, которая не включала jndi.
Теперь мне нужно использовать Jndi, и я не могу заставить Jetty найти его. Я создал файл jetty-env.xml в каталоге WEB-INF следующим образом:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="wac" class="org.mortbay.jetty.webapp.WebAppContext">
<New id="jdbc.datasource" class="org.eclipse.jetty.plus.jndi.Resource">
<Arg><Ref id="wac"/></Arg>
<Arg>jdbc/datasourceArg>
<Arg>
<New class="oracle.jdbc.pool.OracleDataSource">
<Set name="URL">jdbc:oracle:thin:@localhost:1521:xe</Set>
<Set name="User">user</Set>
<Set name="Password">password</Set>
</New>
</Arg>
</New>
</Configure>
web.inf имеет эту ссылку:
<resource-ref>
<description>ConnectionPool DataSource Reference</description>
<res-ref-name>jdbc.datasource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
как таковой
и затем контекст приложения создает с ним bean-компонент:
<jee:jndi-lookup id="jndiDataSource" jndi-name="jdbc.datasource"/>
Когда я запускаю jetty, он сообщает, что не может найти источник данных, поэтому не может создать компонент и приложение не запускается.
Я подозреваю, что проблема в том, что Jetty на самом деле не читает XML-файл. Я положил туда мусор, чтобы увидеть и убедиться, что при запуске вообще не было ошибок.
Я добавил плюс к моей пристани xml
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
<Set name="contexts"><Ref id="Contexts"/></Set>
<Set name="webAppDir"><SystemProperty name="jetty.home" default="."/>/webapps</Set>
<Set name="parentLoaderPriority">false</Set>
<Set name="extract">true</Set>
<Set name="allowDuplicates">false</Set>
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home" default="."/>/etc/webdefault.xml</Set>
<Set name="configurationClasses"><Ref id="plusConfig"/></Set>
</New>
</Arg>
</Call>
и я ссылался на плюс xml из настройки сервера Jetty в IntelliJ.
Я в своем уме. Все в Интернете говорит мне, что Jetty автоматически сканирует этот каталог на наличие этого файла, но, похоже, для меня этого не происходит.