5.장애대응방법

5.1Protocol Adaptor 오류

5.1.1TimeOut에 의한 오류발생

원인

통신시 http.timeout()을 확인해 볼 수 있습니다. 
사용 예)
Alert(http.timeout());
Transaction(“select”…….) 생략

오류증상

서비스를 호출 후 일정시간이 지나면 오류메시지 발생

해결방법

TimeOut를 늘려준다 .
MiPlatform  설정위치 및 참고소스

(1) 배포페이지 설정부분 (html파일)

생략…
MiInstaller.Key = "TobeNext_U";
MiInstaller.Launch = true;        
MiInstaller.Retry = 1;
MiInstaller.Timeout = 300;
MiInstaller.OnlyOne = true;
생략…

(2) PID의 Project Manager의 Data tabPage의 Protocols Http통신 설정

그림 5-120120428_150350902_timeout

참고사항

TimeOut설정은 다음의 환경을 확인해야 합니다. 

(1) MiPlatform TimeOut
(2) 웹서버의 TimeOut
(3) 방화벽의 TimeOut
(4) WAS의 TimeOut
(5) WAS와 DB연결 TimeOut 

즉 MiPlatform의 TimeOut을 늘려서만 해결되는 부분이 아니며, 위의 환경을 모두 확인해야 합니다.
-2085613056 Protocol Adaptor 에러

5.2호출하는 서비스에 장애발생시 해결방안

5.2.1원인

5.2.2오류증상

서비스를 호출 후 일정시간이 지나면 오류메시지 발생 
  * 오류메시지는 TimeOut과 같이 Protocol 오류메시지는 동일
서비스 호출시 TimeOut시간까지 기다리는 시간이 없이 바로 오류메시지 출력될 수 있음

5.2.3해결방안

5.2.4서비스 디버깅 TIP

먼저 장애가 발생하는 서비스를 확인한다. 
 
서비스 호출시 해당 서비스를 MiPlatform에서 호출하던 것을 일반 IE브라우저를 통해 호출을 합니다.  
(이때 파라메터 정보는 Get방식으로 전달) 

이 경우에도 동일하게 오류가 발생하는 것을 확인할 수 있습니다. 
 
즉 MiPlatform단 영역 오류가 아닌 서비스 단 오류임을 증명할 수 있습니다.

참고사항(디버깅 방법)

1) protocol 오류는 99%는 서비스에서 문제가 발생하는 것이므로 가장 먼저 마이플랫폼과 서비스간에 문제 영역을 분리할 필요가 있습니다.
즉 마이플랫폼이 문제인지 서비스단이 문제인지를 가장먼저 파악을 해야 합니다.
이를 확인하는 방법으로는 문제가 되는 서비스를 IE브라우저를 이용하여 해당 서비스를 호출합니다.

2) 1)번에서 서비스가 정상적으로 결과가 브라우저에 보여준다면 의심해 보아야 할 부분은 IE에서 전달되는 파라메터 값과 마이플랫폼에서 호출시 전달되는 파라메터 값이 다른 경우이다.
예) http://localhost/test.jsp?a=001;
마이플랫폼의 경우 quote를 하지 않으면 1이 넘어가므로 반드시 quote가 처리되었는지 확인 합니다.

3) 이 후 작업은 100%라 해도 무방할 절도로 서비스 문제입니다.
이때 부터는 서비스쪽만 집중 확인하면 되며, 프레임이나 기타 사이트 특성에 맞는 모듈을 사용할 경우 해당 담당자와 같이 볼 필요가 있습니다.

4) 패킷을 이용하여 데이타가 정상적으로 POST및 파라메터,쿠키정보가 넘어가는지 확인하고 서버에서 결과가 정상인지를 확인한다.

5) DataSet의 통신방식이 바이너리 통신일 경우 XML로 변경하여 데이타를 확인한다.

6) 결과 ErrorCode, ErrorMsg정보가 정상적으로 설정되는지 확인한다.

7) DataSet의 설정된 이름을 확인하다. (대/소문자)
-2085613056 Protocol Adaptor 에러
transaction 에러관련 (2085613056)
외부에서 접속시 -2085613056, Protocol Adaptor 에러입니다
서비스단의 서비스 정상 작동후 화면에서 -2085613056 의 에러발생
-2085613056 에러코드 문의 드립니다.
-2085613056 에러가 납니다
에러코드 -2085613056, Protocol Adaptor 에러 발생

5.3서버 IP가 변경된 경우 대처방법

MiPlatform의 경우 서버정보 즉 IP가 변경되었을 경우 특별히 처리해 주어야 할 사항은 없습니다.

서버운영 IP가 변경된 경우 수정해 주어야 할 부분이 있는가?

5.4서버 확장시 고려사항

MiPlatform의 경우 라이선스 정책이 CPU, Core단위로 판매가 되고 있는 제품이므로 서버 확장시 반드시 투비소프트 영업대표를 통해 라이선스(정책) 사용에 문제가 없는지 반드시 확인작업이 필요합니다
서버확장시 고려사항

5.5시스템이 정상인지, 서비스(API)가 정상동작하는지 확인하는 방법

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ page language="java"%>
<%@ page import="com.tobesoft.platform.*" %>
<%@ page import="com.tobesoft.platform.data.*" %>
<%
    System.out.println("SESSION ID = " + session.getId());
    String strCharset = "euc-kr";
    /*********************************************************
     * request로 들어온 내용을 parsing하여
     * input variable list, input dataset list에 저장한다.
     * (MiPlatform 에서 보내온 데이터를 parsing한다.)
     *********************************************************/
    PlatformRequest platformRequest = new PlatformRequest(request, strCharset);
    platformRequest.receiveData();
    VariableList    inVariableList  = platformRequest.getVariableList();
    DatasetList     inDatasetList   = platformRequest.getDatasetList();
    /*********************************************************
     * response로 보낼 내용을 생성한다.
     * output variable list, output dataset list에 저장한다.
     * (MiPlatform 이 받을 수 있는 데이터 형태로 가공)
     *********************************************************/
    PlatformResponse platformResponse = new PlatformResponse(response, PlatformRequest.XML, strCharset);
    VariableList    outVariableList  = new VariableList();
    DatasetList     outDatasetList   = new DatasetList();
    try {
        // MiPlatform 으로 전송할 Output Dataset 을 생성한다.
        Dataset outDataset = new Dataset();
        // Output Dataset 컬럼 정의
        outDataset.addColumn("filed1",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        outDataset.addColumn("filed2",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        outDataset.addColumn("filed3",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        outDataset.addColumn("filed4",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        outDataset.addColumn("filed5",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        outDataset.addColumn("filed6",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        outDataset.addColumn("filed7",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        outDataset.addColumn("filed8",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        outDataset.addColumn("filed9",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        outDataset.addColumn("filed10",        ColumnInfo.COLUMN_TYPE_STRING, 256);
        int nRow;
        for(int i = 0; i < 2; i++) {
            // Output Dataset 로우 추가
            nRow = outDataset.appendRow();
            // Output Dataset 에 조회 결과 값 세팅
            outDataset.setColumn(nRow, "filed1",      "Test Value"+i);
            outDataset.setColumn(nRow, "filed2",      "Test Value"+i);
            outDataset.setColumn(nRow, "filed3",      "Test Value"+i);
            outDataset.setColumn(nRow, "filed4",      "Test Value"+i);
            outDataset.setColumn(nRow, "filed5",      "Test Value"+i);
            outDataset.setColumn(nRow, "filed6",      "Test Value"+i);
            outDataset.setColumn(nRow, "filed7",      "Test Value"+i);
            outDataset.setColumn(nRow, "filed8",      "Test Value"+i);
            outDataset.setColumn(nRow, "filed9",      "Test Value"+i);
            outDataset.setColumn(nRow, "filed10",      "Test Value"+i);
        }
        // Output Dataset 을 Output Dataset List 에 담는다.
        outDatasetList.add("outds", outDataset);
        // Output Vairable 을 세팅한다.
        outVariableList.add("ErrorCode", 0);
        outVariableList.add("ErrorMsg",  "succ");
    } catch(Exception e) {
        // Output Vairable 을 세팅한다.
        outVariableList.add("ErrorCode", -1);
        outVariableList.add("ErrorMsg",  e.toString());
    } finally {
        // 조회 결과(Output Dataset List, Output Variable List)를 MiPlatform 으로 전송
        platformResponse.sendData(outVariableList, outDatasetList);
    }
%>
아래 링크를 클릭하여 테스트 샘플파일을 다운로드 받을 수 있습니다.
http://www.miplatform.co.kr/faq/data/docs/20120502_131658146_JspApiTest.zip

그림 5-220120501_142940810_JspTest

서비스(Service) API가 정상적으로 설치되어 있는지 확인하는 방법

5.6MiPlatform을 사용하기 위해서는 Client에 설치모듈을 반드시 설치해야 하는가?

MiPlatform은 Client PC(사용자)에 MS기본모듈과, 엔진 + 컴폰너트 모듈이 설치가 되어야 사용이 가능하므로 일반 사용자 PC에서 고객사 사이트를 접속하는 경우 대부분 자동 업데이터(MiUpdater)를 통해 배포모듈이 설치됩니다. 
(즉 반드시 Client모듈이 설치가 되어 있어야 사용이 가능합니다.)
표 5-1기본배포모듈

모듈명

설명

비고

MiPlatform_InstallBase320.msi

MiPlatform_InstallBase320.cab

MS에서 제공되는 MFC모듈


MiPlatform_InstallEngine320U.msi

MiPlatform_InstallEngine320U.msp

MiPlatform 기본 엔진모듈


MiPlatform_Updater321.msi

MiPlatform Updater


MiPlatform_BasicComponent320U_20120130_1812.zip

기본 컴포넌트

해당 콤포넌트는 고객사에서 선택사용이 가능합니다.

파일명은 버전별로 다소 차이가 있을 수 있습니다. (320Unicode 파일명 기준)

MiPlatform 개발 프로그램을 사용하기 위해서는 반드시 Client설치모듈을 설치해야 하는가?

5.7IIS에서 배포시에 res 파일이 배포되지 않고 404로 떨어질때 웹서버 MIME타입 설정방법

5.7.1개요

IIS에서 추가 배포시에 res 파일이 배포되지 않고 404로 떨어질때 IIS에서 인식할 수 있는 타입
IIS 에서 Mime 타입을 추가 해주지 않으면 배포시에 res파일을 인식하지 못해 404에러가 발생하면서 
배포가 정상적으로 되지 않습니다. Mime 타입을 추가 하는 방법입니다.

5.7.2상세설명

서버는 IIS 7 기준으로 작성 하며 메뉴 위치가 틀릴 수 있습니다. MIME 추가에 대해서는 각 사이트 서버 관리자에게 요청 하시기 바랍니다. 서버 세팅까지는 지원을 해드리지 않습니다.
 
1. IIS 서버에서 "인터넷 정보 서비스" 메뉴로 들어가 현재 운영되고 있는 사이트를 선택 합니다.
2. 선택 된 사이트 우측화면에 보시면 설정할 수 있는 여러 메뉴들이 있습니다. 메뉴들 중 MIME 형식을 선택하세요
3. 형식 선택 후 추가 버튼을 누르면 형식 추가 창이 open됩니다.
4. 파일이름 : ".res", MIME형식 : application/octet-stream
 
위와 같이 세팅 해주시면 배포시 res가 404 오류가 나는 것을 처리 할 수 있습니다.

5.8WindowNT 2003서버에서 데이타 송/수신 Size 제약

5.8.1개요

Window NT 2003환경에서 서비스를 통헤 데이타를 전송 및 수신시  데이타 Size전송 값에 따라 오류가 발생할 수 있습니다. 

이를 해결하기 위한 방법으로 size를 변경하는 방법을 안내합니다.

5.8.2상세설명

IIS 6(인터넷 서비스 관리자)를 중지시킨다. 
(컴퓨터 선택 후 오른쪽 마우스 클릭 -> 모든작업 -> IIS 다시 시작을 클릭 후 중지 선택) 
c:\windows\system32\inetsrv\MetaBase.xml 파일을 메모장 등으로 연다. 
AspMaxRequestEntityAllowed="204800000" <- 업로드 용량제한을 200MB로 설정한 예 
AspBufferingLimit="204800000" <- 다운로드 용량제한을 200MB로 설정한 예 
byte로 입력하기 때문에 1024 는 1KB이므로 알아서 잘 계산하세요.
 
그 다음 IIS 6를 시작한다. (IIS 다시 시작을 클릭 후 시작 선택)

5.8.3오류유형

Win2003(IIS 6) 서버 사용 시 Win2000에서는 잘 되던 업로드, 다운로드 컴포넌트를 사용할 때 다운로드 시 에러 : response 버퍼 제한을 초과하였습니다.

5.9MIASPAPI 사용 시 화면에서 blob로 50메가가 넘는 바이트를 담아서 서버로 보내면 read 메소드에서 읽을때 오류가 발생함.

MiPlatform에서는 별도의 사이즈 제약이 없습니다. 
해당 오류는 IIS설정의 오류에 따라 차이가 발생할 수 있으니 아래 설정방법을 적용해 보시기 바랍니다.

5.9.1테스트 환경 - IIS 7.0 사용(II 6은 MS에 문의)

기본 IIS 설정이 상당히 적게 세팅 되어 있었으며 다음과 같이 조정후 50메가 이상 정상 처리됨을 확인 하였습니다.

Request Filtering 옵션

그림 5-3iis_filter

우측 기능 설정 편집 (최대 2147483647 바이트이며 50MB 이상이므로 9자리정도로 설정)

그림 5-4iis_filter_option

IIS 7의 경우 Config 예)
 
<requestFiltering>
    <requestLimits maxAllowedContentLength="524289000">

아래는 실제 50MB 이상BLOB 데이터 전송 이상 없는 경우 화면 캡쳐 입니다.

그림 5-5http_packet