'jeus'에 해당되는 글 6

  1. 2011.11.07 Invalid content type "text/xml;charset=euc-kr" for XmlDCH
  2. 2011.07.28 JEUS에서 WEB-INF/lib/에 있는 jar를 인식하지 못함.
  3. 2011.06.01 JEUS 에서 어플리케이션을 인식하지 못하고 404 에러가 발생함.
  4. 2010.07.14 Mapping of MIME Types
  5. 2010.06.26 JEUS 구조 및 메뉴얼
  6. 2009.06.18 ORA-01461: LONG 값은 LONG 열에만 입력할 수 있습니다

Invalid content type "text/xml;charset=euc-kr" for XmlDCH

jeus.webservices.jaxws.encoding.XmlDataContentHandler.writeTo 메서드에서 content type이 text/xml 또는 application/xml만 받아들이도록 구현되어 있는거 같습니다. 다른 WAS 나 다른 시스템의 JEUS 에서는 문제없던 부분인데 에러가 발생해서 원인을 파악하고자 합니다.

기술지원을 받아서 처리했는데 어떻게 조치했는지는 모름.
처리내역을 달라고 했는데 연락이 없음.

JEUS에서 WEB-INF/lib/에 있는 jar를 인식하지 못함.

java.lang.NoClassDefFoundError: org/springframework/core/ErrorCoded

JEUS에서 WEB-INF/lib/에 있는 jar를 인식하지 못함.
끙...
JEUS의 해당 컨테이너를 내렸다 올려도 해결되지 않음.
Unix라서 권한 관련 문제일수도 있겠다고 생각했는데 이 컨테이너만 이런 문제가 발생.

컨테이너 재시작 명령어가 rbcon 3 이라는 말을 듣고 확인해봄.

> which rbcon
/app/util/rbcon

> cat /app/util/rbcon
host=`uname -n`
NodeName=${host}_container$1
echo "NodeName : " ${NodeName}
if [[ $# -eq 0 ]]; then
        echo "usage : rbcon CONTAINER_NUMBER"
        return;
fi;
echo "------------------------"
echo "| Container Restarting |"
echo "------------------------"

jeusadmin ${host} -Uadministrator -P1234 downcon ${NodeName}
jeusadmin ${host} -Uadministrator -P1234 startcon ${NodeName}


컨테이너 이름이 3으로 끝난다.

/app/tmax/jeus5/config/PROD10/JEUSMain.xml을 확인해 본다. 컨테이너 3이 아니라 4다.
담당자가 잘못 알려준거다.
해당 컨테이너를 내렸다 올리니 제대로 구동됨.

혹시나 하고 의심했던 부분이 역시나 였다.
WAS 기술지원하는 회사에 바로 전화했으면 바보될뻔 했다.

JEUS 에서 어플리케이션을 인식하지 못하고 404 에러가 발생함.

KGModule 을 업그레이드함.
JEUS 를 재기동하고 어플리케이션을 호출해 보니 404 에러가 발생함.

root 사용자로 파일을 올려서 권한이 없어서 404 에러가 남.
jeus-web-dd.xml 이 파일만 생기고 내용이 없음.

권한을 바꿔줌.
chown -R jeus KGModule/

Mapping of MIME Types

MimeBodyPart.getContent() 의 리턴되는 객체가 String이였는데 JEUS 6에서는 에러가 발생한다.
java.lang.ClassCastException: javax.xml.transform.stream.StreamSource incompatible with java.lang.String

소스가 (String)MimeBodyPart.getContent() 이렇게 되어 있다.
확인 결과 JEUS의 라이브러리인 javaee.jar에서 발생하였고 기술지원을 받음.
getContent()는 MIME 타입에 따라 다른 객체를 리턴한다고 한다.

Tmax의 답변
기존 J2EE 1.4에서는 엄격하게 적용하지 않았지만, JavaEE 5 부터 JAX-WS 가 도입되면서 부터는
매핑을 엄격하게 적용하여 구현하고 있습니다.

 MIME Type  Java Type
 image/gif  java.awt.Image
 image/jpeg
 java.awt.Image
 text/plain
 java.lang.String
 multipart/*
 javax.mail.internet.MimeMultipart
 text/xml or application/xml
 javax.xml.transform.Source

MIME 타입이 xml 이므로 거기에 해당하는 객체가 리턴되고 적절한 처리를 하면 된다.

 
- 테스트케이스
- MIME 타입에 따른 처리가 되는지 확인하기 위해 javax.activation.debug 시스템 프로퍼티를 true로 하면 자세한 로그 내용을 볼 수 있다.



JEUS 구조 및 메뉴얼

   설정 파일
 노드  JEUSMain.xml
     엔진 컨테이너  
         EJB 엔진  EJBMain.xml
         Servlet(웹 컨테이너) 엔진  WEBMain.xml
             Context Group  
                 Virtual Host  
                     Context  jeus-web-dd.xml
         JMS 엔진  JMSMain.xml
         Web Server 엔진  
     JEUS Manager  

- 노드는 JEUS Manager와 여러 엔진 컨테이너의 집합체

- JEUS Manager는 노드에서 하나 밖에 없는 물리적인 구성 요소이고 부팅시에 시작점이 된다. 이것의 역할은 노드에 속한 여러 엔진 컨테이너를 관리하고 이들이 공통적으로 필요로 하는 서비스를 제공한다.
또한 엔진 컨테이너에서 공통적으로 필요로 하는 서비스를 제공한다.
JNDI 서비스, 보안(Security) 서비스, 로깅 서비스가 대표적이다.

- Context Group은 “Web Container 안의 Web Container”로 생각할 수 있다.
그 뿐만 아니라 Context Group은 복수 개의 웹 어플리케이션(컨텍스트)를 호스팅 할 수 있는 Virtual Server라고 생각할 수 있다.

- 컨텍스트는 Context Group바로 아래에 또는 Context Group내의 Virtual Host에 바로 디플로이 가능하다.
전자의 경우에는 컨텍스트가 묵시적으로 기본 Virtual Host에 속한다고 볼 수 있다.

- JEUS의 디렉토리 구조
- Context Group 디렉토리 구조
- Web Application의 디렉토리 구조

- 8.3. Web context 등록
8.3.2. Context 디렉토리 생성
8.3.3. Deployment Descriptor 파일 설정
8.3.4. Web DD 설정
8.3.10. context 등록하기
    웹 애플리케이션을 디플로이하는 방법
    여러 방법중 JEUSMain.xml에 <application>으로 context를 등록후 컨테이너를 재기동한다.
8.3.12. 등록 확인
    jeusadmin 툴 사용

- 3장. 어플리케이션 작성 및 디플로이 하기
    영구 모듈 : JEUSMain.xml의 <application> 태그에 등록되어 있는 어플리케이션

- 참고
JEUS 6 메뉴얼
JEUS 5.0 릴리즈 노트

ORA-01461: LONG 값은 LONG 열에만 입력할 수 있습니다

- K조합 G시스템 연계모듈(L건설)
ORA-01461: LONG 값은 LONG 열에만 입력할 수 있습니다

- CLOB 컬럼에 1287 byte의 데이터를 넣는데 에러가 발생

- 사용되는 드라이버의 위치를 찾아서 크기를 보니 1.33MB (1,397,543 바이트)
jar:file:/LConsB2B/jeus/jeus5/lib/datasource/ojdbc14.jar!/oracle/jdbc/driver/OracleDriver.class

- WAS : JEUS 5
Servlet : 2.4
JSP : 2.0
ServerInfo : Jeus Web Container

os.name=HP-UX
user.language=ko
java.version=1.4.2.17

- 최신 드라이버로 교체하면 됨.
그러나 여러 시스템이 해당 WAS를 사용하고 있어서 교체하기가 힘듬.
드라이버 위치도 JEUS/lib/datasource/ 임.

- KGModlue/WEB-INF/lib/ojdbc14.jar 를 사용하도록 클래스로딩 순서를 변경
jeus-web-dd.xml 에서 webinf-first 를 true로 설정하고 JEUS를 재기동해도 안됨.

- 확인해 본 결과 JEUS/lib/ 내에 있으면 JEUS 기동시 System Classloader 에 포함되므로 클래스로딩 순서를 변경할 수 없다.

- 결국은 JEUS/lib/datasource/ 의 오라클 드라이버를 교체해서 해결함.