2014-06-09 6 views
6

Entsprechend der Reference API auf Using Tomcat 8 und dieser Deploy Spring Boot Applications Anleitung sollte es möglich sein, Tomcat 8 mit Spring Boot zu verwenden, das Tomcat 7 als Standard verwendet.Wie man Tomcat 8 + Spring Boot + Maven verwendet

Aus irgendeinem Grund funktioniert es nicht für mich. Was mache ich falsch?

pom.xml

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<properties> 
    <tomcat.version>8.0.3</tomcat.version> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
     <version>1.0.2.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>4.0.5.RELEASE</version> 
    </dependency> 
</dependencies> 

SampleController.java

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.ResponseBody; 

@Controller 
@EnableAutoConfiguration 
public class SampleController { 

    @RequestMapping("/") 
    @ResponseBody 
    String home() { 
     return "Hello World!"; 
    } 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(SampleController.class, args); 
    } 
} 

Ausgang ist starten Servlet-Engine: Apache Tomcat/7.0.52

:: Spring Boot ::  (v1.0.2.RELEASE) 

2014-06-09 13:55:27.688 INFO 5744 --- [   main] SampleController       : Starting SampleController on CI01081252 with PID 5744 (started by TECBMEPI in D:\projetos\teclogica\testes automatizados\exemplo int db\workspace\spring-boot-tomcat8-maven) 
2014-06-09 13:55:27.730 INFO 5744 --- [   main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot[email protected]33b45e9a: startup date [Mon Jun 09 13:55:27 BRT 2014]; root of context hierarchy 
2014-06-09 13:55:28.869 INFO 5744 --- [   main] .t.TomcatEmbeddedServletContainerFactory : Server initialized with port: 8081 
2014-06-09 13:55:29.117 INFO 5744 --- [   main] o.apache.catalina.core.StandardService : Starting service Tomcat 
2014-06-09 13:55:29.118 INFO 5744 --- [   main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/7.0.52 
2014-06-09 13:55:29.226 INFO 5744 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring embedded WebApplicationContext 
2014-06-09 13:55:29.226 INFO 5744 --- [ost-startStop-1] o.s.web.context.ContextLoader   : Root WebApplicationContext: initialization completed in 1498 ms 
2014-06-09 13:55:29.656 INFO 5744 --- [ost-startStop-1] o.s.b.c.e.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/] 
2014-06-09 13:55:29.658 INFO 5744 --- [ost-startStop-1] o.s.b.c.embedded.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 
2014-06-09 13:55:29.946 INFO 5744 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2014-06-09 13:55:30.035 INFO 5744 --- [   main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto java.lang.String SampleController.home() 
2014-06-09 13:55:30.059 INFO 5744 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2014-06-09 13:55:30.059 INFO 5744 --- [   main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 
2014-06-09 13:55:30.236 INFO 5744 --- [   main] o.s.j.e.a.AnnotationMBeanExporter  : Registering beans for JMX exposure on startup 
2014-06-09 13:55:30.257 INFO 5744 --- [   main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081/http 
2014-06-09 13:55:30.259 INFO 5744 --- [   main] SampleController       : Started SampleController in 2.933 seconds (JVM running for 3.318) 

Ich habe bereits diese newer RC version of Spring boot versucht, aber immer noch Tomcat 7 statt 8

Auch das Hinzufügen <java.version>1.7</java.version> Eigenschaft funktionierte nicht geladen.

Auch "application.properties" versucht. Port wird als bei der Inbetriebnahme festgelegt, aber Tomcat-Version bleibt die Standard 7.

application.properties

server.port=8081 
tomcat.version=8.0.3 
+1

"tomcat.version" muss im maven pom angegeben werden, um die korrekte Version von Tomcat zu enthalten. Das funktioniert nur, wenn Sie den Spring-Start-Starter-Parent als Eltern-Abhängigkeit verwenden, sonst funktioniert es nicht. –

+0

@M.Deinum Es hat funktioniert, TX. Können Sie Ihre Antwort posten, damit ich sie als erledigt markieren kann? – BonanzaOne

+0

Eine etwas ausführlichere Antwort mit 2 möglichen Lösungen hinzugefügt. –

Antwort

10

Bei Verwendung von Spring Boot Overriding Tomcat mit tomcat.version als eine Eigenschaft wird nur funktionieren, wenn Sie spring-boot-starter-parent als übergeordnetes Element für Ihr Projekt verwenden.

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.1.0.M2</version> 
</parent> 

(die Version einer ändern Sie mögen).

<properties> 
    <tomcat.version>8.0.8</tomcat.version> 
</properties> 

Wenn Sie dies als Eltern nicht verwenden wollen, müssen Sie einen <dependencyManagement> Abschnitt in Ihrem pom.xml verwenden müssen alle Federn Versionen außer Kraft zu setzen und die Eigenschaften wie oben zu verlassen.

In jedem Fall funktioniert, aber die Erweiterung der Eltern ist die einfachste würde ich sagen, aber das ist nicht immer möglich.

2

Hast du try overriding tomcat.version in your application.properties? Insbesondere, wenn Sie es auf 8.0.3 setzen, wird der Spring-Boot-Lauf 8.0.3 ausgeführt, unabhängig vom Standard.

+0

Danke für die Antwort, aber ich habe es hier versucht und es hat nicht funktioniert. Wie das Tutorial sagt "Kleinere Dinge, wie der Port auf dem der Server läuft". Außerdem zeigt die Dokumentation nicht auf die Eigenschaftendatei, sondern nur auf die Klassenpfadabhängigkeiten. – BonanzaOne

+0

Ist application.properties im Stammverzeichnis Ihres Klassenpfads? Es funktioniert gut für mich. – hd1

+0

Ja, ich habe auch den Port als 8081 gesetzt, um sicherzustellen, dass die Datei gelesen wird. [Dieses Tutorial] (https://github.com/spring-projects/spring-boot/tree/master/spring-boot-samples/spring-boot-sample-tomcat8-jsp) verwendet ebenfalls Tomcat 8 und hat es nicht Diese Eigenschaft wurde in der Eigenschaftendatei nur in der Datei pom.xml festgelegt. – BonanzaOne

0

Ich kann diese Frage genauso beantworten, wie ich sie in another thread beantwortet habe. Ein wichtiger Teil der Informationen, von denen ich denke, dass einige Leute diesen Spring Boot nicht kennen, ist nur ein Nachahmung eines tatsächlich Java Servlet-Containers wie Jetty, Glassfish, Tomcat usw. Sie als Entwickler müssen wählen, welche Sie verwenden werden.

Spring Boot ist in Ordnung, hat aber natürlich seine Nachteile und wurde wirklich nur vom Team von spring.io erstellt, um ihre Tutorials so viel besser aussehen zu lassen, um mit anderen 'Get up and running in seconds' Technologien zu konkurrieren.

Verwandte Themen