2012-03-27 3 views
0

Ich habe ein Spring + Tiles-Projekt, das funktioniert gut und jetzt plante ich, es in Jetty zu verschieben, anstatt auf Tomcat zu implementieren. So konfigurierter Anlegesteuerserver, um {DispatcherServlet} zu verwenden, und setContextConfigLocation ("classpath: spring-application-context.xml"). In meinem Anwendungskontext XML habe ich Kacheln konfiguriert und meine Kacheln.xml-Datei befindet sich im WEB-INF-Verzeichnis, aber während der Initialisierung findet meine Anwendung sie nie, egal, ob sie im Klassenpfad ist oder nicht, sie kann sie nicht finden.Kann keine Konfigurationsdateien in Jetty + Spring + Tiles Einsatz finden

Mein Einsatz Verzeichnisstruktur

|- my_app.jar 
|- WEB-INF 
    |- tiles.xml 
    |- views 
     | - jsps's here 

meine Anwendungskontext xml

<context:component-scan base-package="com.jetty.spring"/> 

<mvc:annotation-driven/> 

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" /> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
    <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" /> 
</bean> 

<bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/tiles.xml</value> 
     </list> 
    </property> 
</bean> 

Jetty Server-Code

Server server = new Server(8080); 
Context context = new Context(server, "/", Context.SESSIONS); 

DispatcherServlet dispatcherServlet = new DispatcherServlet(); 
dispatcherServlet.setContextConfigLocation("classpath:spring-application-context.xml"); 

ServletHolder servletHolder = new ServletHolder(dispatcherServlet); 
context.addServlet(servletHolder, "/*"); 

server.start(); 
server.join(); 

jede mögliche Hilfe?

+0

Verwenden Sie Maven? Es gibt ein Jetty-Plugin für Maven, mit dem Sie viel Zeit sparen können. Sie werden diese Art von Problemen nicht haben. – jddsantaella

+0

Ich benutze Maven, aber nur für Build. Sie beabsichtigen, Maven auch für den Einsatz zu verwenden? – tazo

+0

Maven ist nicht nur für Build, es kann viele Dinge für Sie tun. Siehe meine Antwort. – jddsantaella

Antwort

1

Verwenden Sie Jetty plugi n für Maven für die Ausführung Ihrer Anwendung mit einer einfachen Konfiguration und ohne etwas zu programmieren. Zum Beispiel:

<plugin> 
    <groupId>org.mortbay.jetty</groupId> 
    <artifactId>maven-jetty-plugin</artifactId> 
    <version>6.1.26</version> 
    <configuration> 
     <webAppConfig> 
      <contextPath>/</contextPath> 
     </webAppConfig> 
    </configuration> 
</plugin> 

Verwenden Sie dann nur mvn jetty:run Ihre Anwendung auszuführen.

+0

Ich würde wirklich empfehlen, org.mortbay.jetty zu verwenden: jetty-maven-plugin als diejenigen sind Jetty Version 7 (für Servlet 2.5) oder 8 (für Servlet 3.0) ... Jetty6 ist sehr alt an dieser Stelle –

+0

Kann dies verwendet werden mit Binärdateien, anstelle von Quellcode? – tazo

+0

Die obige Konfiguration ist nur für Maven-Plugin. Für die Bereitstellung von Kriegs-Dateien sollten Sie herunterladen und installieren Jetty – jddsantaella