티스토리 뷰

Server returned HTTP response code: 503 for URL: http://mybatis.org/dtd/mybatis-3-config.dtd

잘 되던 어플리케이션이 갑자기 위와 같은 오류를 내며 deploy가 되지 않는 문제가 있었다. 이 오류구문에 앞에는 mybatis-config.xml 파일이 IO Exception이 발생했다고 한다. 이 문제는 겪어본 바로는 크게 두가지 경우로 원인을 좁힐 수 있었다. 

 

1. 코드에 문제가 있는 경우

코드상에 문제가 있는 경우 WAS에서 디플로이 되는 과정에서 위와 같은 ERROR를 뱉어낼 수 있다. 문제가 있다고 함은

 

- 중복되는 파일이 있는경우

  (배포되는 과정에서 A라는 폴더에 C라는 파일이 존재하고 있는데 변경 된 파일 경로(B라는 폴더)에 동일한 파일(C라는 파일)을 올리는 경우)

- SQL ID (namespace+statement)가 중복되어 올라가는 경우

 

즉 기존에 파일이 디플로이 된 위치가 완전하게 지워지고 새로운 파일들이 디플로이 되는것이 아닌 기존에 디플로이 된 곳이 삭제되지 않은채로 디플로이를 하면 종종 발생한다. 즉 완전히 디플로이되는 곳을 지우고 로컬에서도 소스를 정제한 후 그 소스가 깨끗하게 올라갈 수 있는 환경을 구성을 해야한다. 

 

해결책 : 변경된 부분 위주로 소스 검사를 수행하도록 한다. (중복된 파일, 중복된 유니크한 속성 중점적으로..)

 

거의 대부분이 이렇게 코드가 문제가 있어서 이 오류가 발생하는 것이라고 보면 된다

 

2. 통신상에 문제가 있는 경우

 

해당 url에 대해 503이 발생하는 이유는 통신하려는 서버가 일시적으로 바쁘거나 중단이 된 경우에  발생을 한다고 한다. 아니면 폐쇄망인 환경에서 접근을 하려다가 실패를 했을때도 위와 같은 메세지가 나온다. 

 

즉 문제의 원인이 되는 http 통신을 하지 않게 local에 mybatis-3-config.dtd 파일을 위치시켜 놓고 그것을 바라보게 하면 된다.

 

mybatis-3-config.dtd

(github.com/mybatis/mybatis-3/blob/master/src/main/java/org/apache/ibatis/builder/xml/mybatis-3-config.dtd)

<?xml version="1.0" encoding="UTF-8" ?>
<!--
       Copyright 2009-2016 the original author or authors.
       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at
          http://www.apache.org/licenses/LICENSE-2.0
       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.
-->
<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>

<!ELEMENT databaseIdProvider (property*)>
<!ATTLIST databaseIdProvider
type CDATA #REQUIRED
>

<!ELEMENT properties (property*)>
<!ATTLIST properties
resource CDATA #IMPLIED
url CDATA #IMPLIED
>

<!ELEMENT property EMPTY>
<!ATTLIST property
name CDATA #REQUIRED
value CDATA #REQUIRED
>

<!ELEMENT settings (setting+)>

<!ELEMENT setting EMPTY>
<!ATTLIST setting
name CDATA #REQUIRED
value CDATA #REQUIRED
>

<!ELEMENT typeAliases (typeAlias*,package*)>

<!ELEMENT typeAlias EMPTY>
<!ATTLIST typeAlias
type CDATA #REQUIRED
alias CDATA #IMPLIED
>

<!ELEMENT typeHandlers (typeHandler*,package*)>

<!ELEMENT typeHandler EMPTY>
<!ATTLIST typeHandler
javaType CDATA #IMPLIED
jdbcType CDATA #IMPLIED
handler CDATA #REQUIRED
>

<!ELEMENT objectFactory (property*)>
<!ATTLIST objectFactory
type CDATA #REQUIRED
>

<!ELEMENT objectWrapperFactory EMPTY>
<!ATTLIST objectWrapperFactory
type CDATA #REQUIRED
>

<!ELEMENT reflectorFactory EMPTY>
<!ATTLIST reflectorFactory
type CDATA #REQUIRED
>

<!ELEMENT plugins (plugin+)>

<!ELEMENT plugin (property*)>
<!ATTLIST plugin
interceptor CDATA #REQUIRED
>

<!ELEMENT environments (environment+)>
<!ATTLIST environments
default CDATA #REQUIRED
>

<!ELEMENT environment (transactionManager,dataSource)>
<!ATTLIST environment
id CDATA #REQUIRED
>

<!ELEMENT transactionManager (property*)>
<!ATTLIST transactionManager
type CDATA #REQUIRED
>

<!ELEMENT dataSource (property*)>
<!ATTLIST dataSource
type CDATA #REQUIRED
>

<!ELEMENT mappers (mapper*,package*)>

<!ELEMENT mapper EMPTY>
<!ATTLIST mapper
resource CDATA #IMPLIED
url CDATA #IMPLIED
class CDATA #IMPLIED
>

<!ELEMENT package EMPTY>
<!ATTLIST package
name CDATA #REQUIRED
>

 

이런 파일을 하나 생성을 하고 적당한 위치에 이 파일을 놓는다. (eg. WEB-INF/lib/dtd/mybatis-3-config.dtd)

 

그리고 문제가 되는 mybatis-config.xml 파일의 DOCTYPE 부분을 다음과 같이 변경을 해주면 된다. 

 

AS-IS

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">

 

TO-BE

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "WEB-INF/lib/dtd/mybatis-3-config.dtd">

 

 

끝!

댓글
최근에 올라온 글
최근에 달린 댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31