springframework [/WEB-INF/spring/root-context.xml] 에러

2024. 4. 3. 09:43·Linux
728x90

안녕하세요. 주원이상감자입니다.

틀린 내용이 있다면 댓글로 알려주시면 감사하겠습니다.


개요

처음 이 증상을 접하게 된건,

정상적으로 운영중인 서비스에서 서비스를 재시작 하고나니 발생하였습니다.

기존 개발된 서비스들에서는 https://www.springframework.org/schema/beans/spring-beans.xsd' 를 사용했는데,

아무 문제가 없었지만 갑자기 문서를 읽는데 실패했다는 이슈가 발생하였습니다.

 

에러 일부 요약

1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/root-context.xml]
02-Apr-2024 17:14:23.314 경고 [localhost-startStop-1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.warning Ignored XML validation warning
        org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 129; schema_reference.4: 스키마 문서 '
https://www.springframework.org/schema/beans/spring-beans.xsd'
 읽기를 실패했습니다. 원인: 1) 문서를 찾을 수 없습니다. 2) 문서를 읽을 수 없습니다. 3) 문서의 루트 요소가 <xsd:schema>가 아닙니다.

....
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

에러 전체 보기

더보기

02-Apr-2024 17:14:22.787 정보 [localhost-startStop-1] org.springframework.web.context.ContextLoader.initWebApplicationContext Root WebApplicationContext: initialization started
02-Apr-2024 17:14:22.870 정보 [localhost-startStop-1] org.springframework.web.context.support.XmlWebApplicationContext.prepareRefresh Refreshing Root WebApplicationContext: startup date [Tue Apr 02 17:14:22 KST 2024]; root of context hierarchy
02-Apr-2024 17:14:22.960 정보 [localhost-startStop-1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions Loading XML bean definitions from ServletContext resource [/WEB-INF/spring/root-context.xml]
02-Apr-2024 17:14:23.314 경고 [localhost-startStop-1] org.springframework.beans.factory.xml.XmlBeanDefinitionReader.warning Ignored XML validation warning
        org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 129; schema_reference.4: 스키마 문서 'https://www.springframework.org/schema/beans/spring-beans.xsd' 읽기를 실패했습니다. 원인: 1) 문서를 찾을 수 없습니다. 2) 문서를 읽을 수 없습니다. 3) 문서의 루트 요소가 <xsd:schema>가 아닙니다.
                at cohttp://m.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
                at cohttp://m.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.warning(ErrorHandlerWrapper.java:99)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:433)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:347)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4166)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaWarning(XSDHandler.java:4157)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument1(XSDHandler.java:2490)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2187)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:573)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:617)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.findSchemaGrammar(XMLSchemaValidator.java:2453)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1773)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:746)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:379)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:605)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3138)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:880)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
                at cohttp://m.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
                at cohttp://m.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
                at cohttp://m.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
                at cohttp://m.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
                at cohttp://m.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)
                at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
                at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
                at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
                at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
                at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
                at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
                at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
                at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
                at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
                at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
                at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
                at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
                at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4699)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402)
                at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                at java.lang.Thread.run(Thread.java:745)
        Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
                at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
                at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1949)
                at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302)
                at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296)
                at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1497)
                at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:212)
                at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)
                at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)
                at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)
                at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)
                at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)
                at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)
                at sun.net.http://www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
                at sun.net.http://www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
                at sun.net.http://www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1512)
                at sun.net.http://www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
                at sun.net.http://www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:646)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:189)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SchemaParsingConfig.java:582)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.opti.SchemaParsingConfig.parse(SchemaParsingConfig.java:685)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.opti.SchemaDOMParser.parse(SchemaDOMParser.java:530)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(XSDHandler.java:2175)
                ... 42 more
        Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
                at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:387)
                at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292)
                at sun.security.validator.Validator.validate(Validator.java:260)
                at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
                at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
                at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
                at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1479)
                ... 60 more
        Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
                at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:145)
                at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131)
                at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
                at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382)
                ... 66 more
02-Apr-2024 17:14:23.319 심각 [localhost-startStop-1] org.springframework.web.context.ContextLoader.initWebApplicationContext Context initialization failed
        org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 4 in XML document from ServletContext resource [/WEB-INF/spring/root-context.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 129; cvc-elt.1: 'beans' 요소의 선언을 찾을 수 없습니다.
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:399)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
                at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
                at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
                at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
                at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:125)
                at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:94)
                at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
                at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
                at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
                at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:443)
                at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:325)
                at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
                at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4699)
                at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165)
                at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412)
                at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402)
                at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                at java.lang.Thread.run(Thread.java:745)
        Caused by: org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 129; cvc-elt.1: 'beans' 요소의 선언을 찾을 수 없습니다.
                at cohttp://m.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
                at cohttp://m.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:325)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1906)
                at cohttp://m.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:746)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:379)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:605)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3138)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:880)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
                at cohttp://m.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
                at cohttp://m.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
                at cohttp://m.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
                at cohttp://m.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
                at cohttp://m.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
                at cohttp://m.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)
                at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadDocument(XmlBeanDefinitionReader.java:429)
                at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:391)
                ... 22 more

 

조치 (root-context.xml)

root-context.xml 이 문제라고 해서 이 파일을 열어 내용을 수정하였습니다.

아래 내용에 보면 "https://www.springframework.org/schema/beans/spring-beans.xsd" 부분에서 HTTPS가 아닌  "https://www.springframework.org/schema/beans/spring-beans.xsd" 로 바꾸면 조치가 가능합니다.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd">
        <!-- https://www.springframework.org/schema/beans/spring-beans.xsd"> -->  
        <!-- Root Context: defines shared resources visible to all other web components -->
        <import resource="database/applicationContext.xml"/>

</beans>

 

결과

일단 Spring 홈페이지에 들어가서 해당 파일을 어떻게 사용하는지에 대해서 Doc를 확인하였습니다.

여기서도 HTTP를 사용하고 적혀있습니다.

https://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/xsd-configuration.html

 

40. XML Schema-based configuration

First up is coverage of the util tags. As the name implies, the util tags deal with common, utility configuration issues, such as configuring collections, referencing constants, and suchlike. To use the tags in the util schema, you need to have the followi

docs.spring.io

 

 

HTTP 로씁시다. ㅎ_ㅎ

728x90

'Linux' 카테고리의 다른 글

[Linux] JDK(JAVA) 버전 교체 및 업데이트  (0) 2024.05.28
Openssl 지원 버전 확인하기  (0) 2024.04.11
[Nginx] 500 ERROR 커스텀 페이지 지정하기  (0) 2024.03.21
SU 명령어 사용 가능 그룹 제한 하는 방법  (0) 2024.03.19
VPN Tunneling 구간 SSH timeout 증상 (3handshake)  (0) 2024.03.18
'Linux' 카테고리의 다른 글
  • [Linux] JDK(JAVA) 버전 교체 및 업데이트
  • Openssl 지원 버전 확인하기
  • [Nginx] 500 ERROR 커스텀 페이지 지정하기
  • SU 명령어 사용 가능 그룹 제한 하는 방법
정주원
정주원
개인블로그
  • 정주원
    Joon.eng
    정주원
  • 전체
    오늘
    어제
    • 분류 전체보기 (77)
      • Linux (41)
      • Windows (0)
      • Network (4)
      • Database (0)
      • Cloud (23)
      • Docker (3)
      • Ansible (2)
      • Etc (4)
  • 블로그 메뉴

    • 링크

      • GITLAB(woni)
    • 공지사항

    • 인기 글

    • hELLO· Designed By정상우.v4.10.0
    정주원
    springframework [/WEB-INF/spring/root-context.xml] 에러
    상단으로

    티스토리툴바