2016-02-12 4 views
0

Я новичок в Spring и maven, у меня есть это приложение, которое имеет в виду, https://spring.io/guides/gs/rest-service/ Я использую spring + maven.Как запустить это без весеннего ботинка

мне нужно, чтобы получить выход в простой HTML с помощью кота, в настоящее время он использует встроенный Apache Tomcat 7.

package hello; 

public class Greeting { 

    private final long id; 
    private final String content; 

    public Greeting(long id, String content) { 
     this.id = id; 
     this.content = content; 
    } 

    public long getId() { 
     return id; 
    } 

    public String getContent() { 
     return content; 
    } 
} 


package hello; 

import java.util.concurrent.atomic.AtomicLong; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestParam; 
import org.springframework.web.bind.annotation.RestController; 

@RestController 
public class GreetingController { 

    private static final String template = "Hello, %s!"; 
    private final AtomicLong counter = new AtomicLong(); 

    @RequestMapping("/greeting") 
    public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { 
     return new Greeting(counter.incrementAndGet(), 
          String.format(template, name)); 
    } 
} 

Это главное, который использует загрузку пружины, для запуска во встроенном Apache.

package hello; 

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 

@SpringBootApplication 
public class Application { 

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

Может кто-нибудь мне помочь! Мне нужен простой веб-сервис без встроенного tomcat. просто нужно нормальное развертывание tomcat.

pom.xml - как указано ниже.

<?xml version="1.0" encoding="UTF-8"?> 
<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>org.springframework</groupId> 
    <artifactId>gs-rest-service</artifactId> 
    <version>0.1.0</version> 

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

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
    </dependencies> 

    <properties> 
     <java.version>1.8</java.version> 
    </properties> 


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

    <repositories> 
     <repository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </repository> 
    </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-releases</id> 
      <url>https://repo.spring.io/libs-release</url> 
     </pluginRepository> 
    </pluginRepositories> 
</project> 
+0

Добавить свой pom.xml в сообщение. Где он указывает, что вы используете встроенный tomcat. –

+0

hi pom.xml добавлено – mars

+2

Как это объяснить в Spring Boot [справочное руководство] (https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment. html), и есть [это руководство] (http://spring.io/guides/gs/convert-jar-to-war/). –

ответ

-1

Добавьте это в POM

<packaging>war</packaging> 

и сделать mvn install или mvn package

Вы увидите в целевой папке артефакт, заканчивающийся xxx.war.original. Это можно развернуть прямо в Tomcat.

Редактировать: - Обновление согласно комментариям ниже. Необходимо также внести следующие изменения.

@SpringBootApplication 
public class Application extends SpringBootServletInitializer { 

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

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

} 

См doc для получения более подробной информации, как приведенные в разделе комментариев.

+1

, но это встроенный проект, поддерживающий tomcat. Я не вижу плагина tomcat-maven в pom.xml. –

+0

mvn install success, сервер работает, но не работает, HTTP Status 404 -/greeting – mars

+1

pom.xml наследуется от 'spring-boot-starter-parent', используя тег' '. Таким образом, встроенный tomcat наследуется. Если у вас есть eclipse, откройте свой pom.xml для любого проекта загрузки весны и нажмите на вкладку «Эффективный POM», и вы можете увидеть плагин tomcat-maven – ArunM

-1

Идеальное решение и код на свой вопрос

  1. SpringBoot содержит встроенный сервер Tomcat, поэтому нет никакой специальной конфигурации требуется в вашем pom.xml
  2. Ваш pom.xml хотел бы это ниже код. Я использовал bootsample как артефакт, и, следовательно, все остальное.

         <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.yourcompany.app</groupId> 
            <artifactId>bootsample</artifactId> 
            <version>0.0.1-SNAPSHOT</version> 
            <packaging>war</packaging> 
            <parent> 
           <groupId>org.springframework.boot</groupId> 
           <artifactId>spring-boot-starter-parent</artifactId> 
           <version>1.3.2.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-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-devtools</artifactId> 
            <optional>true</optional> 
           </dependency> 
          </dependencies> 
          <build> 
           <finalName>bootsample</finalName> 
           <plugins> 
            <plugin> 
             <groupId>org.springframework.boot</groupId> 
             <artifactId>spring-boot-maven-plugin</artifactId> 
             <configuration> 
              <mainClass>${start-class}</mainClass> 
              <layout>ZIP</layout> 
             </configuration> 
             <executions> 
              <execution> 
               <goals> 
                <goal>repackage</goal> 
               </goals> 
              </execution> 
             </executions> 
            </plugin> 
    
    
            <plugin> 
    
             <groupId>org.apache.maven.plugins</groupId> 
             <artifactId>maven-war-plugin</artifactId> 
             <configuration> 
              <failOnMissingWebXml>false</failOnMissingWebXml> 
             </configuration> 
            </plugin> 
           </plugins> 
          </build> 
    
          <repositories> 
           <repository> 
            <id>spring-releases</id> 
            <url>https://repo.spring.io/libs-release</url> 
           </repository> 
          </repositories> 
          <pluginRepositories> 
           <pluginRepository> 
            <id>spring-releases</id> 
            <url>https://repo.spring.io/libs-release</url> 
           </pluginRepository> 
          </pluginRepositories> 
         </project> 
         </project> 
    
  3. Ваш приветственный доменный объект.

    /** 
    * 
    */ 
    
    
    import org.springframework.stereotype.Component; 
    
    /** 
    * @author Praveen 
    * 
    */ 
    @Component 
    public class Greeting { 
    
        private final long id; 
        private final String content; 
    
        public Greeting(long id, String content) { 
         this.id = id; 
         this.content = content; 
        } 
    
        public long getId() { 
         return id; 
        } 
    
        public String getContent() { 
         return content; 
        } 
    } 
    
  4. геймпад Перед осторожной нужно использовать @ResponseBody аннотацию, иначе вы получите circularpath ViewResolver Exception, потому что SpringBoot устанавливает по умолчанию viewResolver. Это @ResponseBody аннотация будет skip проблемы с ViewResolver.

        /** 
           * 
           */ 
    
           import java.util.concurrent.atomic.AtomicLong; 
    
           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.RequestParam; 
           import org.springframework.web.bind.annotation.ResponseBody; 
           /** 
           * @author Praveen 
           * 
           */ 
           @Controller 
           @EnableAutoConfiguration 
           @ResponseBody 
           //@ComponentScan 
           public class SimpleController { 
            private static final String template = "Hello, %s!"; 
            private final AtomicLong counter = new AtomicLong(); 
            @RequestMapping("/greeting") 
    
            public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) { 
             return new Greeting(counter.incrementAndGet(), 
                  String.format(template, name)); 
            } 
    
    
    
            public static void main(String[] args) throws Exception { 
    
             SpringApplication.run(SimpleController.class, args); 
            } 
           } 
    
  5. Пожалуйста, используйте Maven Goals, как показано на рисунке ниже. Ваши цели Maven должны быть МВНОВ чистого пакет весна-загрузка: запустить -e Maven Goals for Spring Boot

  6. После того, как вы выполняете это, ваш встроенный кот будет работать, и вы можете найти успешный выход.enter image description here

  7. Успешный Вход Successful Log

  8. Кроме того, вы можете обратиться по этой ссылке Spring-boot reference documentation. для ваших вопросов о создании WAR/JAR.

+1

OP спрашивая, как развернуть приложение Spring Boot в качестве войны с Tomcat. Это описывает, как запустить приложение Spring Boot в Eclipse с помощью Maven и 'spring-boot: run' –

+1

Это даже не пытается ответить на вопрос. Вы потратили много времени здесь. Ваши правки (8) неприемлемы для SO. Пожалуйста, прочитайте [ask] и [answer]. –

Смежные вопросы