JNDIリソースの作成をJetty9Mavenプラグインで機能させようとしています。同じ構成がJetty8で正しく機能しますが、java.lang.IllegalStateException: No suitable constructor
Jetty9でを生成します。関連するファイルは次のとおりです。
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 / test / resources / jetty-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>
コメントを2行下に変更すると(Jetty 8を復元するため)、アプリケーションが正しく起動します。