환경

OS : CentOS 8.2
JDK : OpenJDK 1.8.0_252-b09
WAS : WebSphere 9.5

오류메시지

org.springframework.beans.factory.BeanDefinitionStoreException: 
Parser configuration exception parsing XML from file ; 
nested exception is javax.xml.parsers.ParserConfigurationException: 
Unable to validate using XSD: 
Your JAXP provider [oracle.xml.jaxp.JXDocumentBuilderFactory@e2a8c01f] does not support XML Schema. 
Are you running on Java 1.4 with Apache Crimson? Upgrade to Apache Xerces (or Java 1.5) for full XSD support. 

 

해결방법

- JVM OPTION 에 아래 내용을 추가

-Djavax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl  
-Djavax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl 
-Dorg.apache.catalina.security.SecurityListener.UMASK=`umask`

 

CentOS 7.5, OpenJDK 1.8.0_212, Tomcat 8.5 에서도 같은 오류가 발생한 적이 있어서 같은 방법으로 해결 했다.

 

다만, 해결 방법의 출처를 정확히 적어놓지 않아서 아쉽다.

WebSphere 9.5 에 엔터프라이즈 애플리케이션을 설치 중에 아래와 같은 메시지와 함께 오류가 발생 했다.

JEUS 6.0 에서 잘 돌아가고 있던 WAR 파일 이었다.

 

com.ibm.websphere.management.application.client.AppDeploymentException: [Root exception is org.eclipse.jst.j2ee.commonarchivecore.internal.exception.DeploymentDescriptorLoadException: WEB-INF/web.xm

세부사항은 로그를 참조하라고 하지만, 로그에도 아무것도 남지 않았다. 

 

여러모로 찾다 보니 web.xml 이 규격에 맞지 않으면 저런 오류가 날 수 있다고 한다. (출처)

다만 이번 경우에는 session-config, welcome-file-list, jsp-config, login-config, locale-encoding-mapping-list 항목이 중복 선언되어서 나온 문제는 아니었다.

 

하나하나 web.xml 파일을 잘라 붙이며 테스트한 결과 

아래 표의 내용들이 문제가 되어서 수정 하였다.

수정 전 수정 후
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.com</url-pattern>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.com</url-pattern>
</filter-mapping>

<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>

 

포스트를 다 쓰고 나서야 똑같은 내용을 검색 해서 찾았다. (WebSphere)

나보다 훨씬 자세히 설명해놓았다.

 

+ Recent posts