Préface
Les projets Spring Boot sont généralement exécutés dans des serveurs Tomcat ou Je jetant intégrés, et ils utilisent rarement des packages de guerre pour se déployer vers des conteneurs de service externes. Même s'ils sont placés dans Linux, ils commencent généralement directement la classe d'application. Cependant, nous devons parfois déployer sur des serveurs externes, ce qui est un peu gênant pour Spring Boot.
Vous trouverez ci-dessous un enregistrement des problèmes rencontrés dans Tomcat lorsque vous avez déployé le premier projet Springboot. Trois choses auxquelles vous devez faire attention: les maux de tête ...
Les détails sont les suivants:
1. Springboot a son propre conteneur Tomcat intégré, vous devez donc lui dire de ne pas utiliser le conteneur intégré et ne spécifie pas la configuration de la version Tomcat comme suit:
<dependency> <proupId> org.springframework.boot </rombasid> <ArtifactId> printemps-boot-starter-tomcat </retifactid> <ccope> fourni </cope> </Dependency>
2. La classe d'application doit être modifiée comme suit, où l'exclusion consiste à ignorer l'annotation de la base de données (je n'ai pas fait la base de données):
@SpringBootApplication (exclude = {dataSourceAutoConfiguration.class, DataSourceTransactionManageRautoConfiguration.Class, HiberNateJpaAutoConfiguration.Class}) La classe publique étend SpringbootServletInitializer {@Override Protected SpringApplicationBuilder Configuration application.sources (application.class); } public static void main (String [] args) lève une exception {springApplication.run (application.class, args); }}3. La version JDK doit être toujours! J'ai commencé à utiliser JDK1.7 pour le serveur et 1.8 pour l'environnement local. En conséquence, il était normal pour le débogage local et la course. Le serveur Tomcat a commencé normalement, l'accès JSP était normal, toutes les interfaces étaient 404 et la console n'avait pas de signe Springboot! ! ! ! Recherché pendant une journée entière ... maux de tête ...
Mon code:
pom.xml
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <ModelVersion> 4.0.0 </ Modelversion> <ArtifActid> weCHATSERVER </ artifactid> <packaging> war </packaging> <url> http://maven.apache.org </url> <! <GroupId> org.springframework.boot </prôdId> <Ertifactid> printemps-boot-starter-parent </lefactive> <version> 1.4.0.release </-version> </parent> <project.build.build.sourceencoding> utf-8 </project.build.sourceencoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- Exclude built-in containers, exclude built-in containers from exporting them into war packages to allow external containers to run spring-boot projects--> </Dependency> <Dedency> <GroupId> org.springframework.boot </proncId> <Artifactid> printemps-boot-starter-tomcat </ artifactid> <ccope> fourni </cope> </Dependency> <Dependance> <proupId> javax.servlet </proped> <ptetifactid> javax.servlet-API </prounid> <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> <ArtefactId> Dom4j </ artifactid> <in version> 1.6.1 </-version> </pependency> <dependency> <proupId> com.thoughtworks.xstream </proupId> <Artifactid> xstream </ ArtiFactId> <Dersion> 1.4.10 </ version> </ Dependency> <fedency> <proupId> Org.spring <ArtefactId> Spring-Boot-Devtools </etefactive> <Apultal> true </opultal> <! - Facultatif = true, la dépendance ne sera pas transmise, le projet dépend de Devtools; if the project that depends on the myboot project wants to use devtools, it needs to be reintroduced--> </dependency> </dependencies> <!--Modify the packaging settings--> <build> <plugins> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> --> <harin> <proupId> org.apache.maven.plugins </prômId> <Artifactid> Maven-War-Plugin </ Artifactid> <Dersion> 2.4 </DERNIFRIGATION> <FIFIGIGURATION> <CODING> $ {project.build.sourceenccoding} </coding> <SkiptestS> true </kiptests> <Warname> WeChatServer </ Warname> <! - Chemin principal activé lorsque MVE (parce que la fonction principale est également ajoutée lors des tests dans d'autres packages) -> <Mainclass> $ {start-class} </ mainclass> </skip> true </ skip> <! - Skip test -> <testFaileRigore> true </SestFaileignore> <CailSOnMissingWebxml> False </ FailLOnMissingWebxml> </FIGIGURATION> </ Plugin> </ Plugins> </ Build> </ Project> Classe d'application:
Package WeChatService.App; import org.springframework.boot.springApplication; import org.springframework.boot.autoconfigure.springbootapplication; import org.springframework.boot.autoconfigure.jdbc.datasourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.datasourcetransactionManageRautoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.hibernatejpaautoconfiguration; import org.springframework.boot.builder.springApplicationBuilder; import org.springframework.boot.web.support.springbootservletInitializer; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.restController; @SpringBootApplication (exclude = {dataSourceAutoConfiguration.class, DataSourceTransactionManageRautoConfiguration.Class, HiberNateJpaAutoConfiguration.Class}) La classe publique étend SpringbootServletInitializer {@Override Protected SpringApplicationBuilder Configuration application.sources (application.class); } public static void main (String [] args) lève une exception {springApplication.run (application.class, args); }} Bonjour demande:
@RestController @RequestMapping public class LoginController {@RequestMapping ("/ Hello / {MyName}") String index (@Pathvariable String MyName) {return "Hello" + MyName + "!!!"; }}Je ne configure que des ports pour application.properties, mais après le déploiement à Tomcat, cela ne fonctionnera pas ici:
server.port = 80
Ma structure de répertoire:
Enfin mon code complet: http://xiazai.vevb.com/201803/yuanma/wechatserver(vevb.com ).rar
Résumer
Ce qui précède est l'intégralité du contenu de cet article. J'espère que le contenu de cet article a une certaine valeur de référence pour l'étude ou le travail de chacun. Si vous avez des questions, vous pouvez laisser un message pour communiquer. Merci pour votre soutien à wulin.com.