2016-06-06 38 views
6

Ho un'applicazione di avvio a molla. Quando avvio, Tomcat 8.0_35 nel mio IDE intellij non ha problemi, sembra fantastico. Ho deciso di implementare il mio VPS e solo i rendering HTML. Ho replicato questo problema sul mio localhost facendo cadere manualmente il file .war in webapps. Dal momento che mi è stato sempre tutti i 404 errori che ho pensato che forse ho bisogno di impostare una classe WebConfig:Distribuire il file .war su tomcat 8 funziona perfettamente con IDE ma perdo tutti i miei JS e CSS quando eseguo il deploy sul mio VPS

@Configuration 
public class WebConfiguration extends WebMvcAutoConfiguration.WebMvcAutoConfigurationAdapter { 

    private static final Logger log = Logger.getLogger(WebMvcAutoConfiguration.class); 

    @Override 
    public void addResourceHandlers(ResourceHandlerRegistry registry) { 

     registry.setOrder(Ordered.HIGHEST_PRECEDENCE); 

     registry.addResourceHandler("/css/**").addResourceLocations("/resources/css/"); 

     registry.addResourceHandler("/image/**").addResourceLocations("/resources/image/"); 

     registry.addResourceHandler("/images/**").addResourceLocations("/resources/images/"); 

     registry.addResourceHandler("/javascripts/**").addResourceLocations("/resources/javascripts/"); 

     registry.addResourceHandler("/libs/**").addResourceLocations("/resources/lib/"); 

    } 

    @Override 
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 

    @Bean 
    public DispatcherServlet dispatcherServlet(){ 
     DispatcherServlet dispatcherServlet = new DispatcherServlet(); 

     dispatcherServlet.setThrowExceptionIfNoHandlerFound(true); 

     return dispatcherServlet; 
    } 

    @Bean 
    public ServletContextTemplateResolver templateResolver() { 
     ServletContextTemplateResolver resolver = new ServletContextTemplateResolver(); 
     resolver.setPrefix("/WEB-INF/"); 
     resolver.setSuffix(".html"); 
     resolver.setTemplateMode("HTML5"); 
     resolver.setOrder(1); 
     return resolver; 
    } 

} 

avevo bisogno di ServletContextTemplateResolver perché sto usando la primavera-mobile e stavo avendo problemi di rendering mie pagine.

non sto vedendo nulla nei log su Tomcat sia localhost.log e cataline.log

@SpringBootApplication 
public class StidhamFinancialApplication extends SpringBootServletInitializer { 

    public static void main(String[] args) throws UnknownHostException { 
     SpringApplication app = new SpringApplication(StidhamFinancialApplication.class); 

     Environment env = app.run(args).getEnvironment(); 
     System.out.println(String.format("Access URLs:\n----------------------------------------------------------\n\t" + 
       "Local: \t\thttp://127.0.0.1:%1s\n\t" + 
       "External: \thttp://%2s:%3s\n----------------------------------------------------------", 
      env.getProperty("server.port"), 
      InetAddress.getLocalHost().getHostAddress(), 
      env.getProperty("server.port"))); 
    } 

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

Tutti i miei JS, e file CSS si trovano nella mia IDE e tutto sembra essere configurato correttamente. Non sono sicuro di cosa provare dopo. Ho fatto il debugging per giorni senza fortuna.

ho caricato su git a https://github.com/drewjocham/financial

Qualsiasi consiglio sarebbe molto apprezzato.

L'unica cosa che i registri si lamentano è un paio di file jar:

org.apache.jasper.servlet.TldScanner$TldScannerCallback.scan No TLD files were found in [file:/Library/apache-tomcat-8.0.35/webapps/stidhamfinancial/WEB-INF/lib/jandex-1.1.0.Final.jar]. Consider adding the JAR to the tomcat.util.scan.StandardJarScanFilter.jarsToSkip property in CATALINA_BASE/conf/catalina.properties file. 

nei miei logging.properties ho aggiunto il seguente:

org.apache.jasper.compiler.TldLocationsCache.level = FINE 

org.apache.catalina.startup.TldConfig.jarsToSkip=antlr-2.7.7.jar 
org.apache.catalina.startup.TldConfig.jarsToSkip=spring-boot-1.3.5.RELEASE.jar 
org.apache.catalina.startup.TldConfig.jarsToSkip=groovy-2.4.6.jar 
org.apache.catalina.startup.TldConfig.jarsToSkip=javassist-3.18.1-GA.jar 
org.apache.catalina.startup.TldConfig.jarsToSkip=aopalliance-1.0.jar 

Dopo aver fatto qualche ricerca, ma che non lo fa sembra funzionare. Comunque non penso che questo potrebbe essere il problema.

+0

Apri il file .war generato nel tuo strumento zip preferito. I file che ti mancano effettivamente li dentro? – Gimby

risposta

3

Drew1208

ho aperto questo richiesta di pull che risolverà il vostro problema https://github.com/drewjocham/financial/pull/1

ho aggiunto alcune configurazioni di Hibernate per essere in grado di correre e anche eseguire i test. E anche rimosso il '/' dal percorso delle risorse.


UPDATE

ho trovato il problema. La struttura delle cartelle di risorse sembra che:
resources css style.css images team-6-med-blur.png

Così nel file style.css il percorso dell'immagine sono relative a questo file e non al contesto applicativo. Allora avete bisogno di cambiare da:
background-image:url('resources/images/stidhamfinancial/team-6-med-blur.png');
a
background-image:url('../images/stidhamfinancial/team-6-med-blur.png');

Mostrerà le immagini.

Inoltre ho aperto questo PR#2 nel repository.

+0

possiamo per favore chattare? Questo ha risolto il mio problema solo con la mia versione desktop. Quando carico mobile e table (spring-mobile fa questo) tutte le immagini CSS ottengono 404 errori. Li ho cambiati in '/ resources /' in 'resources/'e ho ottenuto lo stesso effetto. C'è qualcosa di diverso in primavera mobile che ho bisogno di fare. – Drew1208

+0

L'unione non ha funzionato per me e ho dovuto ripristinare. – Drew1208

+0

Hai tempo per chattare? – Drew1208

4

Utilizzare sempre percorsi relativi per referenziare la risorsa.

Snippet dal index.html

<link rel="stylesheet" type="text/css" href="/resources/css/superfish.css"/> 
    <link rel="stylesheet" type="text/css" href="/resources/css/nivo-slider.css"/> 
    <link rel="stylesheet" type="text/css" href="/resources/css/jquery.qtip.min.css"/> 
    <link rel="stylesheet" type="text/css" href="/resources/css/jquery-ui.css"/> 
    <link rel="stylesheet" type="text/css" href="/resources/css/jquery.fancybox.css"/> 
    <link rel="stylesheet" type="text/css" href="/resources/css/jquery.fancybox-buttons.css"/> 

Dovrebbe essere

<link rel="stylesheet" type="text/css" href="resources/css/superfish.css"/> 
    <link rel="stylesheet" type="text/css" href="resources/css/nivo-slider.css"/> 
    <link rel="stylesheet" type="text/css" href="resources/css/jquery.qtip.min.css"/> 
    <link rel="stylesheet" type="text/css" href="resources/css/jquery-ui.css"/> 
    <link rel="stylesheet" type="text/css" href="resources/css/jquery.fancybox.css"/> 
    <link rel="stylesheet" type="text/css" href="resources/css/jquery.fancybox-buttons.css"/> 

Spiegazione

Quando qualcuno utilizza "/" all'inizio del URL/risorsa, il browser cercherà di caricare quella risorsa dal contesto ROOT del web server. Un contesto di root per il server web può o non può essere uguale alla tua applicazione in quanto l'applicazione può essere implementata nel contesto di root o in qualsiasi altro contesto.

E 'sempre consigliato di utilizzare i percorsi relativi per collegare il tuo risorsa

Si dovrebbe usare percorso relativo per tutti gli URL statici. Ho anche scoperto che molte risorse non sono disponibili nel repository Github come superfish.css. Includono quelli altrimenti si tradurrà in 404

+0

L'ho modificato nel percorso relativo, quindi la mia immagine era mancante e ho aggiornato il mio progetto da GIT. Ho provato a ripristinarlo, ma mancavano ancora più file. L'ho ripristinato, ma ora mi manca un sacco di file. Grazie a Dio ho un backup sul mio altro computer. – Drew1208

+0

Si prega di consultare il GIT aggiornato. Dovevo tornare indietro e sistemare di nuovo tutto. Avevo già fatto ciò che avevi menzionato, ma era il 2345 e ho iniziato a rompere le cose e ho cercato di tornare indietro e ho fatto degli errori stupidi. Se hai tempo da dare un'occhiata. Sto ancora ottenendo lo stesso comportamento, IDE funziona alla grande ma quando eseguo 'mvn clean install' e sposta il file war in webapps in Tomcat 8 solo rendering HTML statici e 404 per tutto il resto. – Drew1208

+0

Sì, è corretto, tuttavia, anche quando lo faccio e lo distribuisco al mio server, mi manca ancora qualche contenuto, puoi vedere cosa intendo se desideri in "https: // github.com/drewjocham/financial". – Drew1208