복붙노트

[SPRING] Weblogic에 스프링 부트 응용 프로그램 배포

SPRING

Weblogic에 스프링 부트 응용 프로그램 배포

webLogic 12C에서 Spring 부트 응용 프로그램을 배포하는 데 문제가 있습니다.

10.4.4 403 금지됨 서버가 요청을 이해했지만이를 이행하기를 거부합니다. 승인은 도움이되지 않으며 요청을 반복해서는 안됩니다. 요청 방법이 HEAD가 아니며 서버가 요청을 이행하지 않은 이유를 공개하기를 원할 경우 엔 엔터티에서 거절 이유를 설명해야합니다 (SHOULD). 이 상태 코드는 일반적으로 서버가 요청이 거절 된 이유를 정확히 밝히지 않거나 다른 응답을 적용 할 수없는 경우에 사용됩니다.

나는 누군가가 그걸 도울 수 있는지 궁금해하고 있었다.

해결법

  1. ==============================

    1.귀하의 코드를 검토하고이 클래스의 문제를 보았습니다. https://github.com/purrox/Spring-example/blob/master/src/main/java/hello/Application.java

    귀하의 코드를 검토하고이 클래스의 문제를 보았습니다. https://github.com/purrox/Spring-example/blob/master/src/main/java/hello/Application.java

    SpringBoot 문서에 정의 된대로 올바르게 수행하고 있지만 Weblogic12C (또는 아마도 표준 해석)의 버그가있는 것으로 보입니다. 그것은 Weblogic12C처럼 보입니다. WebApplicationInitializer를 직접적으로 구현하는 클래스를 검색합니다. 코드가 SpringBootServletInitializer (WebApplicationInitializer를 구현)를 확장하는 방법에 유의하십시오. Weblogic12C는 그런 식으로 생각하지 않습니다. 따라서 가장 간단한 방법은 Application 클래스에서 WebApplicationInitializer를 구현하는 것입니다. 그래서 다음 줄을 변경하십시오.

    public class Application extends SpringBootServletInitializer {  
    

    이에:

    public class Application extends SpringBootServletInitializer implements WebApplicationInitializer {  
    

    참고 : 위의 내용을 수정하면 다른 Weblogic12C 배포 문제가 발생합니다. "java.lang.IllegalArgumentException : LoggerFactory가 Logback LoggerContext가 아니지만 Logback이 클래스 경로에 있습니다." 다른 문제를 해결하려면 src / main / webapp / WEB-INF / weblogic.xml 파일을 새로 만들고이 내용을 입력하십시오.

        <?xml version="1.0" encoding="UTF-8"?>
        <wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd">
            <wls:weblogic-version>12.1.1</wls:weblogic-version>
            <wls:context-root>helloApp</wls:context-root>
            <wls:container-descriptor>
                <wls:prefer-application-packages>
                    <wls:package-name>org.slf4j.*</wls:package-name>
                </wls:prefer-application-packages>
            </wls:container-descriptor>
        </wls:weblogic-web-app>
    
  2. ==============================

    2.멀티 파트 파일 요청을 사용하려는 경우에도 전쟁 전개에 문제가있을 수 있습니다.

    멀티 파트 파일 요청을 사용하려는 경우에도 전쟁 전개에 문제가있을 수 있습니다.

    문제의 근원은 HiddenHttpMethodFilter 다음에 OrderedCharacterEncodingFilter가 실행되고 있다는 것입니다. HiddenHttpMethodFilter는 요청시 getParameter를 호출 할 때 요청 본문의 처리를 트리거합니다. 그런 다음 OrderedCharacterEncodingFilter가 실행되어 요청의 인코딩을 설정합니다. 본문이 처리 된 후 요청 인코딩을 잘못 설정하면 WebLogic에서 요청이 모든 다중 부분 데이터를 추적하지 못하게합니다.

    해결 방법은 application.properties에서 문자 인코딩 필터를 비활성화하는 것입니다.

    spring.http.encoding.enabled: false
    
  3. ==============================

    3.hello.Application에 "implements WebApplicationInitializer"를 추가해야합니다.

    hello.Application에 "implements WebApplicationInitializer"를 추가해야합니다.

    이것은 WebApplicationInitializer를 구현하는 SpringBootServletInitializer를 확장 할 때 중복되므로 @Pierre가 지적했듯이 weblogic에서는 클래스를 직접 구현해야합니다.

  4. ==============================

    4.지난 번에이 문제에 휩쓸 렸습니다. 이 게시물에서 모든 제안을 적용한 후에도 오류 403이 계속 발생했습니다. 제 경우에는 문제가 web.xml 파일에있었습니다. 3.0 대신 DispatcherServlet을 통해 ApplicationContext를로드하도록 구성하지 않고 버전 2.5를 사용하고있었습니다.

    지난 번에이 문제에 휩쓸 렸습니다. 이 게시물에서 모든 제안을 적용한 후에도 오류 403이 계속 발생했습니다. 제 경우에는 문제가 web.xml 파일에있었습니다. 3.0 대신 DispatcherServlet을 통해 ApplicationContext를로드하도록 구성하지 않고 버전 2.5를 사용하고있었습니다.

    게시물에서 : 정확히 웹 앱 버전은 무엇입니까? 그것은 무엇에 영향을 미칩니 까?

    Versioning refers to XML schema version that syntax of your web.xml file must obey. More important, it also indicates the version of Servlet specification that your application implements.
    

    Spring 문서 http://docs.spring.io/spring-boot/docs/current/reference/html/howto-traditional-deployment.html에서 :

    Older Servlet containers don’t have support for the ServletContextInitializer bootstrap process used in Servlet 3.0. You can still use Spring and Spring Boot in these containers but you are going to need to add a web.xml to your application and configure it to load an ApplicationContext via a DispatcherServlet.
    

    마지막으로 web.xml 파일의 버전을 3.0으로 변경하고 작업을 시작합니다.

  5. from https://stackoverflow.com/questions/24835051/deploy-spring-boot-app-in-weblogic by cc-by-sa and MIT license