Jetty JNDI Fehler innerhalb Maven Jetty Plugin
-
29-09-2019 - |
Frage
Ich versuche, eine JNDI-Datenquelle zu konfigurieren, die von einem Aufruf der Maven Jetty Plugin verwendet werden können. Ich versuche, diese außerhalb der WAR-Datei zu tun, so dass jeder, der später unser Webapp mit Jetty bereitstellen könnte nicht eine Konfigurationsdatei innerhalb der WEB-INF-Verzeichnisses des IST zu bearbeiten hat. Ich habe eine jetty.xml Datei wie folgt:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<!-- Atomikos XA aware (but not XA capable) JDBC data source -->
<New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>jdbc/myDataSource</Arg>
<Arg>
<New class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
.......
</New>
</Arg>
</New>
</Configure>
ich referenziert dann diese Datei aus dem Maven Plugin wie folgt:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<jettyConfig>config/jetty.xml</jettyConfig>
</configuration>
</plugin>
Allerdings, wenn ich versuche, die Webapp über mvn Anlegestelle laufen: run-Krieg ich die folgende Fehlermeldung erhalten:
Embedded error:
Object is not of type class org.mortbay.jetty.webapp.WebAppContext
Wenn ich das Top-Level-<Configure>
Element auslassen und nur versuchen, eine neue JNDI Ressource direkt über zu erstellen:
<New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">
Dann bekomme ich einen ähnlichen Fehler:
Embedded error:
Object is not of type class org.mortbay.jetty.plus.naming.Resource
Was soll das?
Lösung
Neben Pascal Thivent Antwort, Ihr jetty.xml
sieht tatsächlich wie jetty-env.xml
, so können Sie configure Maven-Anlegestelle-Plugin mit <jettyEnvXml>
zu verwenden:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<jettyEnvXml>config/jetty.xml</jettyEnvXml>
</configuration>
</plugin>
Andere Tipps
Nach der Dokumentation , erklärten Namenseinträge im jetty.xml
sein sollte < em> jvm oder Server scoped:
Wie Sie sehen können, die natürlichste Konfigurationsdateien, in denen zu erklären, Namenseinträge von jedem Rahmen sind:
- jetty.xml - Jvm oder Server Anwendungsbereich
- WEB-INF / Anlegestelle-env.xml oder ein Kontext XML-Datei - Webapp Rahmen
So Ihre jetty.xml
etwas wie folgt enthalten:
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure id="Server" class="org.mortbay.jetty.Server">
<!-- Atomikos XA aware (but not XA capable) JDBC data source -->
<New id="sbeDataSource" class="org.mortbay.jetty.plus.naming.Resource">
<Arg>jdbc/myDataSource</Arg>
<Arg>
<New class="com.atomikos.jdbc.nonxa.AtomikosNonXADataSourceBean">
.......
</New>
</Arg>
</New>
</Configure>