Prefacio
Los proyectos de arranque de primavera generalmente se ejecutan en servidores Tomcat o Jetty integrados, y rara vez usan paquetes de guerra para implementar contenedores de servicios externos. Incluso si se colocan en Linux, generalmente inician la clase de aplicación directamente. Sin embargo, a veces necesitamos desplegar en servidores externos, lo cual es un poco problemático para el arranque de primavera.
A continuación se muestra un registro de los problemas encontrados en Tomcat cuando desplegó el primer proyecto SpringBoot. Tres cosas a las que debes prestar atención: dolores de cabeza ...
Los detalles son los siguientes:
1. SpringBoot tiene su propio contenedor Tomcat incorporado, por lo que debe decirle que no use el contenedor incorporado y no especifique la configuración de la versión TomCat de la siguiente manera:
<Spendency> <MoupRoMID> org.springframework.boot </groupid> <artifactID> spring-boot-starter-Tomcat </artifactid> <cope> proporcionó </cope> </pendency>
2. La clase de aplicación debe cambiarse de la siguiente manera, donde la exclusión es ignorar la anotación de la base de datos (no hice la base de datos):
@SpringBootApplication (exclute = {DataSourCeautOconfiguration.class, DataSourCetRansactionManagerAutoconfiguration.class, HibernateJpaautoconfiguration.class}) Aplicación de clase pública extiende SpringBootSetinitInitInitinicerizer {@Override Protected SpringApaplationBuilder (SpringAppaplation Aplication) Aplicación. Sources (Application.Class); } public static void main (string [] args) lanza la excepción {SpringApplication.run (Application.Class, Args); }}3. ¡La versión JDK debe ser siempre! Comencé a usar JDK1.7 para el servidor y 1.8 para el entorno local. Como resultado, fue normal para la depuración local y en funcionamiento. El servidor Tomcat comenzó normalmente, el acceso JSP era normal, ¡todas las interfaces eran 404 y la consola no tenía SpringBoot Sign! ! ! ! Investigado durante todo un día ... dolor de cabeza ...
Mi código:
pom.xml
<Project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalocation = "http://maven.apache.org/pom/4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. http://maven.apache.org/maven-v4_0_0.xsd "> <modelVersion> 4.0.0 </modelVersion> <AtifactId> weChatserver </artifactid> <paquete> war </paquete> <url> http://maven.apache.org </url> <! <MoupRoD> org.springframework.boot </groupid> <artifactid> spring-boot-starter-parent </artifactid> <versión> 1.4.0.release </versión> </parent> <properties> <jecter.build.sourceenicoding> utf-8 </project.build.sourceencoding> <java.version> 1.8 </java.version> </propiies> <pendencies> <pendency> <uproupid> org.springframework.boot </groupid> <artifactID> spring-starter-web-web </artifactid> <! Excluido en los proyectos integrados, excluyendo los contenedores integrados de los contenedores de buque de guerra a los contenedores externos a los contenedores externos a los contenedores de los contenedores externos a los contenedores de resorte. </pendency> <pendency> <uproupid> org.springframework.boot </proupid> <artifactid> spring-boot-starter-tomcat </artifactid> <cope> proporcionó </cope> </pendency> <pendency> <uproupid> javax.servlet </groupid> <artifactid> javax.servlet-api </arthapi </artes <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency> <groupId>dom4j</groupId> <artifactid> dom4j </arfactid> <versevers> 1.6.1 </versión> </pendency> <pendency> <uproupid> com.thoughtworks.xstream </groupid> <artifactid> xstream </arfactid> <versión> 1.4.10 </versión> </dependencia> <fependency> <grupid> org.springframework.boot </groupid> </groupid> <artifactID> spring-boot-devlools </artifactid> <pectional> true </pectional> <!-opcional = true, la dependencia no se pasará, el proyecto depende de devTools; Si el proyecto que depende del proyecto MyBoot quiere usar DevTools, debe reintroducirse-> </pendency> </dependencias> <!-Modifique la configuración de empaque-> <1t. <glugins> <!-<glugin> <proupid> org.springFrame.Boot </groupId> <Atifactid> Spring-Boot-Maven-Plugin </ArtIrtAdwork. <glugin> <grupoD> org.apache.maven.plugins </groupid> <artifactid> maven-war-plugin </arfactid> <verserse> 2.4 </versewers> <figuration> <coding> $ {Project.build.sourceencoding} </coding> <kiptests> verdadero </skipts> <! <Warname> WeChatserver </warname> <!-ruta principal habilitada cuando la mava (porque la función principal también se agrega al probar en otros paquetes)-> <inclasshass> $ {start-class} </mainclass> <skip> true </skip> <!-skip test-> <testfailuree) <Al FailOnmissingWebxml> false </failonmissingwebxml> </figuration> </glugin> </glugins> </build> </proyecto> Clase de aplicación:
paquete wechatservice.app; importar org.springframework.boot.springapplication; importar org.springframework.boot.autoconfigure.springbootapplication; importar org.springframework.boot.autoconfigure.jdbc.datasourceAutoconfiguration; importar org.springframework.boot.autoconfigure.jdbc.datasourcetransactionManagerAutoconfiguration; importar org.springframework.boot.autoconfigure.orm.jpa.hibernatejpaautoconfiguration; importar org.springframework.boot.builder.springapplicationBuilder; importar org.springframework.boot.web.support.springbootservletinitializer; importar org.springframework.web.bind.annotation.requestMapping; importar org.springframework.web.bind.annotation.restController; @SpringBootApplication (exclute = {DataSourCeautOconfiguration.class, DataSourCetRansactionManagerAutoconfiguration.class, HibernateJpaautoconfiguration.class}) Aplicación de clase pública extiende SpringBootSetinitInitInitinicerizer {@Override Protected SpringApaplationBuilder (SpringAppaplation Aplication) Aplicación. Sources (Application.Class); } public static void main (string [] args) lanza la excepción {SpringApplication.run (Application.Class, Args); }} Hola solicitud:
@RestController @RequestMapping Public Class Logincontroller {@RequestMapping ("/Hello/{MyName}") String index (@PathVariable String myName) {return "Hello"+myName+"!!!"; }}Solo configuro puertos para aplicaciones. Propiedades, pero después de la implementación en Tomcat, no funcionará aquí:
servidor.port = 80
Mi estructura de directorio:
Finalmente mi código completo: http://xiazai.vevb.com/201803/yuanma/wechatserver(vevb.com).rar
Resumir
Lo anterior es todo el contenido de este artículo. Espero que el contenido de este artículo tenga cierto valor de referencia para el estudio o el trabajo de todos. Si tiene alguna pregunta, puede dejar un mensaje para comunicarse. Gracias por su apoyo a Wulin.com.