1

JNDIリソースの作成をJetty9Mavenプラグインで機能させようとしています。同じ構成がJetty8で正しく機能しますが、java.lang.IllegalStateException: No suitable constructorJetty9でを生成します。関連するファイルは次のとおりです。

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を復元するため)、アプリケーションが正しく起動します。

4

1 に答える 1

7

jetty-ds-dev.xml ファイルの 2 行目に次の行が必要です。

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

configure.dtd を指定せずに 8 で動作した理由はわかりませんが、バージョン 9_0 であることは間違いありません。

よろしく1月

于 2013-02-20T22:14:48.257 に答える