jetty-env.xml mit DataSource führt zum Fehlschlagen von WebAppContext auf mvn jetty: run

Ich habe ein sehr einfaches Webapp-Projekt mit Maven und Steg, das bis jetzt sehr gut funktioniert hat. Jetzt muss ich jedoch das MySQL-Verbindungspooling mit JNDI einrichten, da die Datenbankverbindungen immer eine Zeitüberschreitung aufweisen.

Hier ist zunächst der relevante Inhalt meiner pom.xml:

<modelVersion>4.0.0</modelVersion>
...
<packaging>war</packaging>
...
<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jetty-version>8.1.0.v20120127</jetty-version>
</properties> 
<dependencies>
    ...
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.20</version>
    </dependency>
    <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jetty-version}</version>
        <type>maven-plugin</type>
    </dependency>
</dependencies>
...
<build>
    <plugins>
    <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-maven-plugin</artifactId>
        <version>${jetty-version}</version>
        <configuration>
                <scanIntervalSeconds>10</scanIntervalSeconds>
            </configuration>
        </plugin>
    </plugins>
    ...
</build>

Jetzt habe ich eine jetty-env.xml im Ordner / src / main / webapp / WEB-INF mit folgendem Inhalt erstellt:

<Configure class="org.eclipse.jetty.webapp.WebAppContext">  
    <New id="project-db" class="org.eclipse.jetty.plus.jndi.Resource">
        <Arg>jdbc/db</Arg>
        <Arg>
            <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource">
                <Set name="url">jdbc:mysql://www.example.com:3306/mydb</Set>
                <Set name="username">dbuser</Set>
                <Set name="password">dbpass</Set>
            </New>
        </Arg>
    </New>
</Configure>

Aber das Problem ist, dass ich nicht einmal testen kann, ob diese Verbindung funktioniert, da das Jetty-Maven-Plugin das Ziel nicht erreicht

mvn jetty:run

mit folgendem Fehler:

WARN:oejw.WebAppContext:Failed startup of context o.m.j.p.JettyWebAppContext
{/,file:/D:/documents/programmierung/workspace/battleships-trunk/src/main/webapp/}
,file:/D:/documents/programmierung/workspace/battleships-trunk/src/main/webapp/

java.lang.IllegalArgumentException: Object of class 
'org.mortbay.jetty.plugin.JettyWebAppContext' is not of type 
'org.eclipse.jetty.webapp.WebAppContext'. 
Object Class and type Class are from different loaders.

Wie kann ich das zum Laufen bringen? Ich muss Jetty Version 8.x verwenden, da ich WebSocket-Unterstützung benötige und auf dem Remote-Produktivserver Jetty 8 ausgeführt wird.

BEARBEITEN Bevor Pavel Veller antwortete, habe ich Folgendes versucht: Den zusammengestellten Krieg auf dem fernen Jetty8-Server bereitgestellt und nur den gleichen Fehler erhalten, der jetzt wie folgt lautet:

java.lang.IllegalArgumentException: Object of class 
'org.eclipse.jetty.webapp.WebAppContext' is not of type 
'org.eclipse.jetty.webapp.WebAppContext'. 
Object Class and type Class are from different loaders.

Es scheint also, als ob mehrere Klassenladeprogramme in Konflikt stehen.

EDIT2 Auf Wunsch von Pavel habe ich den Fehler mit einer vereinfachten Web-App nachgebildet, die Sie finden könnenhier auf Dropbox. Es ist ein gezipptes Eclipse-Maven-Projekt.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage