IDEA IntelliJ Jetty Plugin を使い始めようとしています。このアプリケーションでは、JNDI DataSource を使用して実際のデータベースにアクセスします。
したがって、開発用に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 class="org.mortbay.jetty.webapp.WebAppContext">
<!-- Add an JNDI resource -->
<New class="org.mortbay.jetty.plus.naming.Resource">
<Arg>datasource_pbv</Arg>
<Arg>
<New class="org.apache.commons.dbcp.BasicDataSource">
<Set name="DriverClassName">oracle.jdbc.driver.OracleDriver</Set>
<Set name="Url">jdbc:oracle:thin:@dbserver:1521:DATABASE</Set>
<Set name="Username">user</Set>
<Set name="Password">pass</Set>
</New>
</Arg>
</New>
</Configure>
そのように jetty.xml で Jetty WebAppDeployer を再構成したので、 jetty - env.xmlを読み取って処理するorg.mortbay.jetty.plus.webapp.EnvConfiguration を使用します。
<Configure id="Server" class="org.mortbay.jetty.Server">
...
<Array id="plusConfig" type="java.lang.String">
<Item>org.mortbay.jetty.webapp.WebInfConfiguration</Item>
<Item>org.mortbay.jetty.plus.webapp.EnvConfiguration</Item>
<Item>org.mortbay.jetty.plus.webapp.Configuration</Item>
<Item>org.mortbay.jetty.webapp.JettyWebXmlConfiguration</Item>
<Item>org.mortbay.jetty.webapp.TagLibConfiguration</Item>
</Array>
...
<Call name="addLifeCycle">
<Arg>
<New class="org.mortbay.jetty.deployer.WebAppDeployer">
...
<Set name="configurationClasses"><Ref id="plusConfig"/></Set>
</New>
</Arg>
</Call>
...
</Configure>
残念ながら、これは IDEA Jetty プラグインでは機能しません。IDEA Jetty プラグインは、context-config.xmlと、EnvConfiguration を追加しない後続のwar-exploded.xmlを生成します。したがって、Jetty IDEA プラグインを使用してデプロイする場合、jetty-env.xml は無視されます。
IDEA Jetty プラグインを使用してデプロイするときにカスタム JNDI エントリを提供するにはどうすればよいですか?