2012-11-20 88 views
0

我正在嘗試使用IDEA IntelliJ Jetty插件。在我們的應用程序中,我們使用JNDI數據源來訪問實際的數據庫。使用IDEA配置DataSource IntelliJ Jetty插件(jetty-env.xml)

對於發展我們因此產生碼頭-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> 

我重新配置碼頭WebAppDeployer碼頭。 xml那樣,所以它使用org.mortbay.jetty.plus.webapp.EnvConfiguration它讀取和處理jetty-env.xml

<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 Plugin會生成一個context-config.xml和後續的war-exploded.xml,它不會添加EnvConfiguration。 因此,在使用Jetty IDEA插件進行部署時,會忽略jetty-env.xml。

在使用IDEA Jetty插件進行部署時,如何使這項工作或其他方式提供自定義JNDI條目?

回答

0

我沒有檢查自己,但因爲IDEA碼頭一體化依賴於ContextDeployer,下面應該工作(如果添加到jetty.xml):

<Call name="addLifeCycle"> 
    <Arg> 
    <New class="org.mortbay.jetty.deployer.ContextDeployer"> 
     ...    
     <Set name="configurationClasses"><Ref id="plusConfig"/></Set> 
    </New> 
    </Arg> 
</Call>