2013-02-20 86 views
0

我試圖讓JNDI資源創建與Jetty 9 Maven插件一起工作。相同的配置正常工作與碼頭8但產生與碼頭9。這裏的java.lang.IllegalStateException: No suitable constructor是相關文件:Jetty 9 Maven插件和JNDI沒有合適的構造函數

的pom.xml:

<?xml version="1.0"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
    http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.example</groupId> 
    <artifactId>jetty-jndi</artifactId> 
    <version>1.0</version> 
    <build> 
    <plugins> 
     <plugin> 
     <!-- <groupId>org.mortbay.jetty</groupId> 
     <version>8.1.9.v20130131</version> --> 
     <groupId>org.eclipse.jetty</groupId> 
     <version>9.0.0.RC0</version> 
     <artifactId>jetty-maven-plugin</artifactId> 
     <configuration> 
      <webAppConfig> 
      <jettyEnvXml>src/test/resources/jetty-ds-dev.xml</jettyEnvXml> 
      </webAppConfig> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>org.hsqldb</groupId> 
     <artifactId>hsqldb</artifactId> 
     <version>2.2.9</version> 
    </dependency> 
    </dependencies> 
</project> 

的src /測試/資源/碼頭-DS-dev.xml :

<?xml version="1.0"?> 
<Configure id="Server" class="org.eclipse.jetty.webapp.WebAppContext"> 
    <New id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg>jdbc/test</Arg> 
    <Arg> 
     <New class="org.hsqldb.jdbc.JDBCDataSource"> 
     <Set name="DatabaseName">mem:foo</Set> 
     <Set name="User">SA</Set> 
     </New> 
    </Arg> 
    </New> 
</Configure> 

與實際誤差:

2013-02-20 10:22:23.464:WARN:oejx.XmlConfiguration:main: Config error at <New id="DSTest" class="org.eclipse.jetty.plus.jndi.Resource">|??<Arg>jdbc/test</Arg>|??<Arg>|???<New class="org.hsqldb.jdbc.JD 
BCDataSource">|????<Set name="DatabaseName">mem:foo</Set>|????<Set name="User">SA</Set>|???</New>|??</Arg>|?</New> java.lang.IllegalStateException: No suitable constructor: <New id="DSTest" class="org 
.eclipse.jetty.plus.jndi.Resource"> 
       <Arg>jdbc/test</Arg> 
       <Arg> 
         <New class="org.hsqldb.jdbc.JDBCDataSource"> 
           <Set name="DatabaseName">mem:foo</Set> 
           <Set name="User">SA</Set> 
         </New> 
       </Arg> 

改變註釋兩行ð擁有(恢復Jetty 8)和應用程序啓動正確。

回答

7

您需要在您的碼頭-DS-dev.xml文件以下行的第2行:

<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd"> 

不知道爲什麼它有8個工作沒有指定的configure.dtd有,但絕對應該是那裏,並在版本9_0。

問候 月

+0

看起來它需要在碼頭9. DOCTYPE現在工程 - 謝謝了! – condit 2013-02-20 22:34:23

相關問題