2016-04-04 15 views
2

Tomcatサーバー上にWARとして展開されたSpringブートアプリケーションでこの行を動作させることはできません。Tomcat WARでSpringブートルートコントローラが動作しない

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

サーブレット設定とはどういう意味ですか?私は春のブートとプロパティファイルのみを使用しています – fguespe

答えて

-5

私は以下のあなたのニーズを満たすかどうかはわからないが、その代わりにWARファイルとしてそれを作るのあなたは、JARファイルと実行に変換することができます。これは動作します

+0

OPは明示的にそれを外部Tomcatサーバーに展開するための助けを求めています。 –

関連する問題