2013-02-20 89 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

相关问题