2016-04-04 6 views
2

Я не могу заставить эту строку работать над моим приложением Spring Boot, развернутым как WAR на сервере tomcat.Spring Boot Root Controller не работает на Tomcat WAR

package com.incidenciasboard; 

import java.util.ArrayList; 
import java.util.List; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 

import com.incidenciasboard.bean.CambioIncidencia; 
import com.incidenciasboard.bean.General; 
import com.incidenciasboard.bean.Incidencia; 
import com.incidenciasboard.dao.CambioIncidenciaDAO; 
import com.incidenciasboard.dao.IncidenciaDAO; 
import com.incidenciasboard.util.Ano; 
import com.incidenciasboard.util.Dia; 
import com.incidenciasboard.util.Log; 
import com.incidenciasboard.util.Mes; 
import com.incidenciasboard.util.ModelFecha; 
import com.incidenciasboard.util.Semana; 

@Controller 
public class Stats { 

    @Autowired 
    private CambioIncidenciaDAO cambioDao; 

    @Autowired 
    private IncidenciaDAO dao; 

    @RequestMapping(value = "/login", method = RequestMethod.GET) 
    public String login(Model model) { 
     return "login"; 
    } 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String statcas(Model model) { 
     Log.l(); 
     return "redirect:/stats"; 
    } 

    @RequestMapping(value = "/stats", method = RequestMethod.GET) 
    public String stats(Model model) { 

     Iterable<CambioIncidencia> cambios=cambioDao.findAll(); 
     ModelFecha m=new ModelFecha(0,12,2015); 

     long total=0; 
     int cant=1; 
     //Promedio 
     for(CambioIncidencia c: cambios){ 
      if(c.getDespues().equals("Open") && !c.getDespues().equals("Closed")){ 
       long id=c.getTicketid(); 
       for(CambioIncidencia cc: cambios){ 
        long id2=cc.getTicketid(); 

        if(id==id2 && cc.getDespues().equals("Closed")){ 
         long cantDias=ModelFecha.diffDias(c.getFecha(), cc.getFecha()); 
         cant++; 
         if(cantDias>0){ 
          total+=cantDias; 

         } 
        } 

       } 
      } 
     } 



     List<Ano> fechas=m.getFechas(); 
     //Cambios Mensuales 
     //Log.log("Cerrados"); 
     for(CambioIncidencia i:cambios){ 
      for(Ano ano:fechas){ 
       General ga=ano.getGeneral(); 
       for(Mes mes:ano.getMeses()){ 
        General gm=mes.getGeneral(); 
        for(Semana sem:mes.getSemanas()){ 
         General gs=sem.getGeneral(); 
         for(Dia dia:sem.getDias()){ 
          General gd=dia.getGeneral(); 
          List<General> ges=new ArrayList<General>(); 
          ges.add(ga); 
          ges.add(gm); 
          ges.add(gd); 
          ges.add(gs); 

          if(ModelFecha.mismoDia(dia.getFecha(), i.getFecha())){ 
           if(i.getEstado().equals("Open")){ 
            for(General g:ges)g.sAbierto(); 
           }else if(i.getEstado().equals("Closed")){ 
            for(General g:ges)g.sCerrado(); 
            for(General g:ges)g.setCaja(i.getPlata()); 
           }else if(i.getEstado().equals("Critico")){ 
            for(General g:ges)g.sCritico(); 
           }else if(i.getEstado().equals("Listo p/Entregar")){ 
            for(General g:ges)g.sLentregar(); 
           }else if(i.getEstado().equals("Presupuesto Enviado")){ 
            for(General g:ges)g.sPenviado(); 
           }else if(i.getEstado().equals("Esperando Repuestos")){ 
            for(General g:ges)g.sEsperando(); 
           }else if(i.getEstado().equals("Cancelado")){ 
            for(General g:ges)g.sCancelado(); 
           }else if(i.getEstado().equals("In Progress")){ 
            for(General g:ges)g.sProgreso(); 
           } 
          } 
         } 
        } 
       } 
      } 
     } 

     General g=new General(); 

     for(Incidencia i:dao.findAll()){ 
      if(i.getEstado().equals("Open")){ 
       g.sAbierto(); 
      }else if(i.getEstado().equals("Closed")){ 
       g.sCerrado(); 
      }else if(i.getEstado().equals("Critico")){ 
       g.sCritico(); 
      }else if(i.getEstado().equals("Listo p/Entregar")){ 
       g.sLentregar(); 
      }else if(i.getEstado().equals("Presupuesto Enviado")){ 
       g.sPenviado(); 
      }else if(i.getEstado().equals("Esperando Repuestos")){ 
       g.sEsperando(); 
      }else if(i.getEstado().equals("Cancelado")){ 
       g.sCancelado(); 
      }else if(i.getEstado().equals("In Progress")){ 
       g.sProgreso(); 
      } 

     } 
     List<Mes> nubimedia = new ArrayList<Mes>(); 
     for(Ano a:fechas){ 
      for(Mes mm:a.getMeses()){ 
       nubimedia.add(mm); 
      } 
     } 
     List<Mes> ult4=new ArrayList<Mes>(); 
     ult4.add(nubimedia.get(nubimedia.size()-5)); 
     ult4.add(nubimedia.get(nubimedia.size()-4)); 
     ult4.add(nubimedia.get(nubimedia.size()-3)); 
     ult4.add(nubimedia.get(nubimedia.size()-2)); 
     model.addAttribute("quarter",ult4); 

     General mesactual=nubimedia.get(nubimedia.size()-1).getGeneral(); 
     General mesanterior=nubimedia.get(nubimedia.size()-2).getGeneral(); 

     General ayer=m.getAyer(fechas).getGeneral(); 
     General hoy=m.getHoy(fechas).getGeneral(); 


     model.addAttribute("hoy",hoy); 
     model.addAttribute("ayer",ayer); 
     model.addAttribute("mesactual",mesactual); 
     model.addAttribute("mesanterior",mesanterior); 
     model.addAttribute("prom",(total/cant)); 
     model.addAttribute("g",g); 
     return "index"; 
    } 


} 

У меня не было другой возможности отправить корневой контроллер, указатель, на «/ stats».

Я использую «/..any thing ..», он работает. Но «/» этого не делает. Вы видите перенаправление, которое у меня есть сейчас, оно работает, когда я запускаю весеннюю загрузку с встроенным tomcat, но не тогда, когда я развертываю его как войну.

Я также сделал журнал, но он даже не печатает.

@RequestMapping(value = "/", method = RequestMethod.GET) 
     public String statcas(Model model) { 
      Log.l(); 
      return "redirect:/stats"; 
     } 

Помогите!

EDIT 1:

App его называют Incendencia, поэтому в URL выглядит следующим образом:

хост: 8080/Incidencia/

Если URL именно так, это не перенаправлять/статистика ...

Чтобы использовать приложение, я должен поставить хост: 8080/Incidencia/статистика

EDIT 2: Свойства файла загрузки пружины:

#REMOTO 
spring.datasource.url = jdbc:mysql://... 
spring.datasource.username = ... 
spring.datasource.password = ... 

spring.datasource.testWhileIdle = true 
spring.datasource.validationQuery = SELECT 1 
spring.jpa.show-sql = false 
spring.jpa.hibernate.ddl-auto = update 
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 

#jsp 
spring.mvc.view.suffix: .jsp 

И POM Файл

<?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>com.incidenciasboard</groupId> 
    <artifactId>incidenciasboard</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>IncidenciasBoard</name> 
    <description>incidenciasboard</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.3.3.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

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

    <dependencies> 
    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
    </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 
     <dependency> 
    <groupId>com.google.guava</groupId> 
    <artifactId>guava</artifactId> 
    <version>19.0</version> 
</dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <scope>runtime</scope> 
     </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-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.scala-lang</groupId> 
     <artifactId>scala-library</artifactId> 
     <version>2.11.0</version> 
    </dependency> 
    </dependencies> 

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


</project> 
+0

Хотите ли вы, чтобы оно было развернуто в корневом пути Tomcat, или проблема с «/» не работает? Я полагаю, вы следовали традиционному развертыванию [рекомендации] (https://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html). –

+0

Можете ли вы показать конфигурацию сервлета? – luboskrnac

+0

Что вы подразумеваете под конфигурацией сервлета? Im использует весеннюю загрузку и только файл свойств – fguespe

ответ

-5

Я не уверен, что ниже будет выполнять ваши потребности, но вместо того, чтобы сделать его в виде файла WAR вы можете преобразовать его в файл JAR и запустить. Это будет работать

+0

OP явно просит помочь развернуть его на внешнем сервере Tomcat. –