2017-09-18 108 views
6

Gömülü sunucuda mükemmel şekilde çalışan bir önyükleme dinlenme web uygulaması var. Ancak, blogda https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file adı verilen adımları izledikten sonra, sunucudaki bir kaynağa yeniden gönderme gönderen bir 404 hata iletisi aldım. Yerel olarak java 1.8.0_212 kullanmış ve java 1.8.0_131 kullanmıştım ve uygulamayı tomcat'e dağıttım Sunucuda 9. Beni şaşırttan bir şey, CrudRepository'yi uzatan depoların erişilebilir olmasıdır. Aşağıda benim uygulama giriş noktasıdır.Spring Boot REST Denetleyici, dış tomcat 9 sunucusunda konuşlandırıldığında 404 değerini döndürür

@SpringBootApplication 
@ComponentScan(basePackages = "com.dbe.ref") 
public class RefmsApplication extends SpringBootServletInitializer { 

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

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

ve aynı zamanda benim pom.xml

İşte
<?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.dbe.ref</groupId> 
    <artifactId>refms</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>refms</name> 
    <description>project for Rural electrification fund</description> 

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

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
     <start-class>com.RefmsApplication</start-class> 
    </properties> 

    <dependencies> 

     <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-data-jpa</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-rest</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>com.oracle</groupId> 
      <artifactId>ojdbc6</artifactId> 
      <version>11.2.0.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>jquery</artifactId> 
      <version>2.2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>angularjs</artifactId> 
      <version>1.4.10</version> 
     </dependency> 

     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>bootstrap</artifactId> 
      <version>3.3.4</version> 
     </dependency> 

     <dependency> 
      <groupId>org.webjars</groupId> 
      <artifactId>font-awesome</artifactId> 
      <version>4.7.0</version> 
     </dependency> 
     <dependency> 
      <groupId>eu.michael-simons</groupId> 
      <artifactId>wro4j-spring-boot-starter</artifactId> 
      <version>0.3.4</version> 
     </dependency> 
     <dependency> 
      <groupId>net.sf.jasperreports</groupId> 
      <artifactId>jasperreports</artifactId> 
      <version>6.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.poi</groupId> 
      <artifactId>poi</artifactId> 
      <version>3.14</version> 
     </dependency> 

     <dependency> 
      <groupId>net.sourceforge.dynamicreports</groupId> 
      <artifactId>dynamicreports-core</artifactId> 
      <version>5.0.0</version> 
     </dependency> 

    </dependencies> 

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

</project> 

günlüğüne bir parçasıdır:

2017-09-19 10:38:20.564 INFO 6660 --- [   main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'errorPageFilter' to: [/*] 
2017-09-19 10:38:20.565 INFO 6660 --- [   main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*] 
2017-09-19 10:38:20.566 INFO 6660 --- [   main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 
2017-09-19 10:38:20.568 INFO 6660 --- [   main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*] 
2017-09-19 10:38:20.568 INFO 6660 --- [   main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*] 
2017-09-19 10:38:20.571 INFO 6660 --- [   main] .s.DelegatingFilterProxyRegistrationBean : Mapping filter: 'springSecurityFilterChain' to: [/*] 
2017-09-19 10:38:20.571 INFO 6660 --- [   main] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'configurableWroFilter' to urls: [/wro4j/*] 
2017-09-19 10:38:20.572 INFO 6660 --- [   main] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServletRegistration' to [/refms/*] 
2017-09-19 10:38:20.573 INFO 6660 --- [   main] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/] 
+1

Eğer tomcat ile uygulama (örn catalina.log hem uygulama için günlükleri gönderebilir miyim dış tomcat için bu

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency> 

bu bağımlılığı

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

değiştirin. log) Tamamlanıp başlatılmadığını ve hangi bağlamsal kökün kullanıldığını görmek için bunlara bakmak iyi olur. – PaulNUK

+0

Uygulamanızı herhangi bir ApplicationServer'ın çatısı altında dağıtırsanız, HTTP isteklerini yönetmek için yay sorumluluğu olmayacaktır. Nerede konuştuğunuz ve ayarlarınız hakkında daha fazla bilgi verebilir misiniz? – AlexGera

+0

Hangi URL'de 404 elde edersiniz? –

cevap

3

gömülü sunucu ve harici sunucu tarafından uygulamayı dağıtmak biraz fark vardır varsayılan. Gömülü sunucusu ile

Eğer kullanarak size uygulamaya erişebilirsiniz:

http://localhost:<port>/<resourceName> 

başka kapta war dağıtmak eğer o zaman böyle sürümüyle uygulama adı eklemeniz gerekir iken: Örneğin

http://localhost:<port>/<applicationNameWithVersion>/<resourceName> 

Bu example'u dağıtırsanız, katıştırılmış sunucu URL'si şudur:

http://localhost:8080/greeting 

Ve Haricen dağıtılan uygulama için URL gibi eğer:

http://localhost:8999/gs-rest-service-0.1.0/greeting 

Not: seninkinden için bazı değişiklikler olabilir, bu URL benim uygulama sunucusunun olduğunu.

Yardıma ihtiyacınız varsa yorum yapın.

+0

Springboot içinde application.properies özelliği gibi tanımlayabilirsiniz server.contextPath = Tarayıcınıza erişmek için YourExample http: // localhost: 8080/YourExample/tebrik – Hiren

+0

Haklısınız @HirenPandit, bu yüzden "varsayılan olarak" konak ". –

0

Yay önyükleme uygulamanıza içerik yolu eklediğinizden emin olun. Tipik olarak, src \ main \ resources içindeki application.properties dosyasında yer alır. Bu özellikler dosyasında, özelliklerini ekleyin: Sen feryat bağlantıyı kullanarak uygulamaya erişmek mümkün olmalıdır

server.contextPath=/refms 

localhost:8080/refms/api/account/authenticate veya localhost:8080/refms-xxxx/api/account/authenticate Bahsettiğiniz yorumlarınızda

0

/(xxxx yapay sürümü olduğu) kimlik doğrulaması 404 veriyor, bunun nedeni giriş süreci URL'sini “kimlik doğrulaması” olarak ayarlamanızdır. Giriş formunun yayınlandığı URL. Belirtilmemişse, varsayılan olarak/login edilir. Spring Security çerçevesi bu URL'yi engeller ve giriş ve şifre parametresini alır.

0

Uygulamanızı Tomcat'e dağıttığınızda, URL, uygulamanızın dağıtıldığı bağlam yoluna bağlıdır. Çoğu zaman bu, Tomcat 'webapps' dizinine koyduğunuz savaş dosyasının adıyla tam olarak eşleşir. İsmini 'webapps' dizinine bakarak görebilirsiniz. Savaş dosyanız muhtemelen şu an bir dizine harcanıyor.

Bir finalName maven oluşturma bölümüne koyduğunuzdan, savaş dosyanızın adı: refm.Benim varsayım, size tomcat içine kopyalanan önce değil ROOT.war savaş dosyayı yeniden adlandırmak yaptığını böylece uygulama olacak değil olduğunu

http://host:port/refms/

: altında savaş, bu nedenle uygulama çalışacaktır çalışıyor olması:

http://host:port/

bunu uygulamanız gömülü Tomcat örneğine benzer çalışacaktır yapmak istiyorsanız; kök bağlamında.

sizin günlük dosyasına itibaren ben

Mapping servlet: 'dispatcherServletRegistration' to [/refms/*] 

Bu uygulamanın bağlam köküne görecelidir/Kimlik doğrulama uç nokta /refms üzerinde işaretlendiğini olduğunu görebiliriz. pom.xml'Bu

http://localhost:8080/refms/refms/api/account/authenticate 
0

Kontrol eğer

<build> 
    <finalName>refms</finalName> 
     ... 
</build> 

: Yani durumda hangi bir 404 muhtemelen altında olacak almak, kimlik doğrulama bitiş noktası senin savaş dosyayı yeniden adlandırmak etmedi application.properties içinde

server.contextPath=/refms 

karşılık gelir ve

kontrol Context.xml dosyasındaki
<Context path="/refms"/> 

. Belki de dağıtımdan sonra tomcat kök içeriğiniz farklıydı.

Ayrıca,