programing

Tomcat에 배포된 스프링 부트는 404개를 제공하지만 독립 실행형으로 작동합니다.

starjava 2023. 7. 21. 20:26
반응형

Tomcat에 배포된 스프링 부트는 404개를 제공하지만 독립 실행형으로 작동합니다.

저는 REST API를 구축하기 위해 약 한 달 동안 Tomcat에 내장된 Spring Boot을 테스트하고 있습니다.모든 것이 잘 작동하고 있었습니다.이제 Tomcat 컨테이너에서 실행되는 몇 가지 다른 (봄이 아닌) 애플리케이션이 있는 별도의 개발 환경에 API를 배포하려고 합니다.

Maven 및 Spring Boot Docs를 사용하여 Spring Boot JAR 응용 프로그램을 WAR로 변환에서 지정한 내용을 변경했습니다.

배포가 잘 진행되고(로그는 정상이고 오류는 없음) Tomcat 관리를 보면 애플리케이션이 배포된 것을 확인할 수 있습니다.그러나 curl에서 http://localhost:8080/sophia/users에 액세스하려고 하면 404가 표시됩니다.

어떤 도움이든 감사합니다.

업데이트:

내 로그는 다음과 같습니다.

넷빈:

NetBeans: Apache Tomcat 8.0.17 프로파일 모드에서 배포: false debug 모드: false force redeploy: true

/home/bugz/workspace/pdcore/sophia 서버/target/sophia-server-1.0-SNAPshot에 인플레이스 구축

배포가 진행 중입니다...

배포?config=file%3A%2Ftmp%2Fcontext 1845402702541504208.xml&path=/sophia

확인 - 컨텍스트 경로/소피아에 애플리케이션 배포

시작이 진행 중입니다...

시작?path=/message

확인 - 컨텍스트 경로/소피아에서 응용 프로그램 시작

Tomcat:

정보 10:47:52:703 org.springframework.boot.context.embedded.서블릿 등록 빈 - 서블릿 매핑: 'dispatcher Servlet'에서 [/sophia/*]

정보 10:47:54:042 org.springframework.boot.스프링 작동 - 8.285초 만에 작동 시작(JVM 12087.301 실행)

22-Jan-2015 10:47:54.060 INFO [http-nio-8080-exec-99] org.apache.catalina.startup.HostConfig.deployDescriptor 구성 설명자 /home/bugz/workspace/server/apache-tomcat-8.0.17/conf/Catalina/localhost/sophia.xml의 배포가 12,091ms 만에 완료됨

그리고 catalina localhost의 sophia.xml에는 다음이 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" docBase="/home/bugz/workspace/pdcore/sophiaserver/target/sophia-server-1.0.0-SNAPSHOT" path="/sophia"/>

에 접속해 보았습니다.

  1. http://localhost:8080/http/users
  2. http://localhost:8080/sophia-server-1.0.0-SNAPshot/users(WAR 이름)

첫 번째는 404를 반환하지만 내 CORS 필터 빈의 CORS 정보와 함께 반환합니다.CORS 정보가 없는 두 번째 리턴 404(애플리케이션이 시작되고 구성되었지만 컨트롤러에 액세스할 수 없음을 나타냄).

응용 프로그램을 실행할 때 호출 경로는 몇 가지 부분으로 구성됩니다.

로, 는 "URL"입니다./sophia.

의 입니다.DispatcherServlet당신의 경우라면/sohpia/*.

는 세번내컨매다핑니입트 것입니다.DispatcherServlet즉, 당신의 예에서/users.

이 모 든 것 만 니 다 어 되 결 들 합 이/sophia/sophia/users.

하는 것과 때입니다. 으로 WAR에 됩니다./(뿌리).

당신은 그것을 고정할 수 있습니다./sophia▁the로서server.context-path에 시대에application.properties그리고 지도를 그립니다.DispatcherServlet/*또는/그러면 두 상황 모두에서 원하는 URL과 예상되는 URL이 제공됩니다.

check java - version은 java 8에서 전쟁을 수행하고 tomcat이 java 7에서 실행되면 작동하지 않는다는 것을 의미합니다.

SpringBoot Servlet을 확장해 보셨습니까?초기화자 및 구성 방법을 재정의하시겠습니까?여기에 명시된 바와 같이

jar 파일의 진입점은 앱을 컨테이너 내에서 war 파일로 실행하는 것과 비교했을 때 [Main Class]가 다릅니다.

이게 도움이 되길 바랍니다.

Java 버전 확인

pom.xml에 있는 버전은 서버에 설치된 버전과 동일해야 합니다.

openjdk 11은 나에게 잘 작동합니다.

https://adoptopenjdk.net/

언급URL : https://stackoverflow.com/questions/28089129/spring-boot-deployed-in-tomcat-gives-404-but-works-stand-alone

반응형