0

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 エントリを提供するにはどうすればよいですか?

4

1 に答える 1

0

私自身は確認していませんが、IDEA Jetty の統合は に依存しているContextDeployerため、次のように動作するはずです ( に追加されている場合jetty.xml):

<Call name="addLifeCycle">
  <Arg>
    <New class="org.mortbay.jetty.deployer.ContextDeployer">
        ...              
        <Set name="configurationClasses"><Ref id="plusConfig"/></Set>
    </New>
  </Arg>
</Call>
于 2012-11-21T08:32:39.947 に答える