2016-09-19 6 views
7

द्वारा निर्देशित Serving Web Content with Spring MVC द्वारा निर्देशित, मैं एक स्प्रिंग बूट वेब एप्लिकेशन बना रहा हूं जिसे मैं एम्बेडेड टॉमकैट इंस्टेंस के साथ-साथ एक स्टैंडअलोन टॉमकैट 8 सर्वर पर भी चला सकता हूं।टॉमकैट पर तैनात किए जाने पर स्प्रिंग बूट एप्लिकेशन 404 देता है लेकिन एम्बेडेड सर्वर

एप्लिकेशन java -jar adminpage.war के रूप में निष्पादित होने पर अपेक्षित कार्य करता है और जब मैं http://localhost:8080/table पर जाता हूं तो मुझे अपेक्षित परिणाम दिखाई देता है। हालांकि, जब मैं टॉमकैट 8 सर्वर पर तैनात करता हूं (adminpage.war को webapps निर्देशिका में छोड़कर), मुझे https://myserver/adminpage/table पर जाने पर 404 त्रुटि मिलती है।

catelina.log और localhost.log फ़ाइलों में टॉमकैट सर्वर पर कुछ भी उपयोगी नहीं है।

क्या कोई सुझाव दे सकता है कि मैंने गलत कॉन्फ़िगरेशन किया है? वसंत बूट के साथ रीस्टफुल सेवाओं को तैनात करते समय मुझे अतीत में वही समस्याएं नहीं आईं, लेकिन यह वेब अनुप्रयोग में मेरा पहला प्रयास है।

मेरा आवेदन फाइलें:

src/main/java/com/.../Application.java

@SpringBootApplication 
public class Application { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

} 

src/main/java/com/.../MainController.java

@Controller 
public class MainController { 

    @RequestMapping("/table") 
    public String greeting(Model model) { 
     model.addAttribute("name", "Fooballs"); 
     return "table"; 
    } 
} 

src/main/resources/templates/table.html

<!DOCTYPE HTML> 
<html xmlns:th="http://www.thymeleaf.org"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
    <p th:text="'Hello, ' + ${name} + '!'" /> 
</body> 
</html> 

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 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.foo</groupId> 
    <artifactId>adminpage</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.0.RELEASE</version> 
    </parent> 

    <dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-devtools</artifactId> 
     <optional>true</optional> 
    </dependency> 
    </dependencies> 

    <properties> 
    <java.version>1.8</java.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 


    <build> 
    <finalName>adminpage</finalName> 

    <plugins> 
     <plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
    </plugins> 
    </build> 

</project> 
+0

क्या आपके एप्लिकेशन में web.xml है? –

+1

@ सेर्गेई बेसपलोव मुझे नहीं लगता कि इसे स्प्रिंग बूट के साथ एक की जरूरत है। नीचे मेरा जवाब देखें - मैं अपनी 'application.java' फ़ाइल को समायोजित करना भूल गया था। –

+0

आप सही हैं यह आवश्यक नहीं है, लेकिन अभी भी वसंत बूट के साथ उपयोग किया जा सकता है –

उत्तर

22

मैं अपने Application.java फ़ाइल बदलाव करने SpringBootServletInitializer का विस्तार करने और configure विधि ओवरराइड करने के लिए भूल गया था।

सही फ़ाइल: अपनी गलती के लिए उनका कहना है https://mtdevuk.com/2015/07/16/how-to-make-a-spring-boot-jar-into-a-war-to-deploy-on-tomcat/ को

@SpringBootApplication 
public class Application extends SpringBootServletInitializer { 
    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

    @Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 
     return builder.sources(Application.class); 
    } 
} 

Hat टिप।

स्प्रिंग बूट आधिकारिक दस्तावेज़ों में Create a deployable war file पर अधिक जानकारी।

संबंधित मुद्दे