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?

War es hilfreich?

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top