UPMC 설치가이드

1. 개요

본 문서는 (주)유라클에서 제공하는 모피어스 제품군 중 “Server Platform - Push”의 원할한 설치를 할 수 있도록 제품 설치에 관련한 설명과 수행 절차를 나타내는 것을 목적으로 한다. 본 문서는 Push 기능 중 Receiver 설치에 관한 내용을 기술하고 있다.

본 문서는 성능 개선, 기능 추가 등의 사항으로 내용이 변경될 수 있다.

2. 설치 준비

  • 설치를 하기 전 다음 사항이 준비되어야 한다.

항목

설명

비고

Database

Oracle 9i 이상, MS-SQL, MySql

Java

Java version 1.6.0_45

WAS

Tomcat 6.0 or better

3. 설치 절차

  • 다음 각 설치 항목 순으로 설치한다.

3-1. Receiver

  • Receiver는 기간계/Mobile Client와 Push DB간의 인터페이스를 담당한다. Receiver는 Spring framework에서 동작하는 Spring Controller, DAO, Quartz scheduler로 구성되어 웹서비스 형태의 외부 인터페이스를 제공한다.

    Receiver 설치는 Receiver 항목 하나만 설치한다.

4. Receiver 설치

4-1. 설치 전 준비

  • Receiver를 설치 하기 전 다음 각 항목을 준비한다.

    • Java가 설치되어 있는 리눅스/유닉스 시스템

    • version 1.6 이상의 Java 실행환경

    • 로그인 가능한 리눅스/유닉스 계정

    • WAS

    • 설치 파일(receiver.war의 형태로 제공)

    • RECEIVER는 모든 유저 데이터들을 메모리 상에 갖고 있기 때문에

      메모리 설정 값을 늘려줘야 한다.

  • %TOMCAT_HOME%/bin/catalina.sh 파일을 열어 아래와 같이 메모리 값을 설정해준다.

  • catalina.sh

JAVA_OPTS=”-server -Xms4G -Xmx4G”

4-2. 설정 파일 편집

  • 설치에 앞서 receiver 설정 파일을 편집한다. war 파일로 배포할 경우는 war파일을 만들기에 앞서 설정 파일을 편집한 후 war파일을 묶어 WAS에 배포하며 이미 묶여져 있는 war 파일을 WAS의 배포 디렉토리에 풀어서 배포할 경우는 war내의 설정 파일들을 직접 수정하여 배포한다. WAS의 배포 디렉토리에 풀어서 배포할 경우는 1.3.3. Receiver 설치 중 Receiver 빌드 항목은 실행하지 않는다.

    Receiver는 receiver.properties, web.xml을 수정하여 설정을 변경한다.

4-2-1. receiver.properties

  • receiver.properties는 src/main/resources/spring에서 찾을 수 있다.

  • receiver.properties

#

#

#

## #################################

# Database settings

## #################################

# PUSH database

#PUSH.database.driver.classname=oracle.jdbc.OracleDriver

#PUSH.database.url=jdbc:oracle:thin:@61.74.156.194:1521:orcl

#PUSH.database.id=push2013

#PUSH.database.password=manager

#PUSH.database.schema=PUSH2013

#PUSH.database.driver.classname=oracle.jdbc.OracleDriver

#PUSH.database.url=jdbc:oracle:thin:@xxx.xxx.xxx.239:1521:PUSH

#PUSH.database.id=upns

#PUSH.database.password=upns2013

#PUSH.database.schema=PUSH2013

PUSH.database.jndiname=java:comp/env/jdbc/oracleUPNS

PUSH.database.mssql.jndiname=java:comp/env/jdbc/mssqlUPNS

#

#

#

# Batch ID

batch.bid=B001

# File Upload Directory

baseDirectory=/home/msp/push/upload/base

workDirectory=/home/msp/push/upload/work

doneDirectory=/home/msp/push/upload/done

  • PUSH.database.jndiname: DB 접속 설정. WAS에 미리 정의된 JNDI명을 지정한다.

    PUSH.database.mssql.jndiname: DB 접속 설정. WAS에 미리 정의된 JNDI명을 지정한다.(MSSQL을 사용할 경우 이 설정이 사용된다. web.xml 설정 참조)

    batch.bid: 각 Receiver 인스턴스마다 유일한 값을 입력한다. 각 Receiver 프로세스를 구분하기 위한 값으로 B001등 “B”뒤에 세자리 숫자를 지정하여 입력하는 것을 권장한다.

    baseDirectory: 엑셀 파일 업로드를 위한 디렉토리를 입력한다. 디렉토리는 미리 생성되어 있어야 한다.

    workDirectory: 엑셀 파일 업로드를 위한 작업 디렉토리를 입력한다. 디렉토리는 미리 생성되어 있어야 한다.

    doneDirectory: 엑셀 파일 업로드를 위한 결과 디렉토리를 입력한다. 디렉토리는 미리 생성되어 있어야 한다.

4-2-2. web.xml

  • web.xml 은 src/main/webapp/WEB-INF/ 디렉토리에서 찾을 수 있다.

  • web.xml

<?xml version=”1.0” encoding=”UTF-8”?>

<web-app version=”2.5”

xmlns=”*http://java.sun.com/xml/ns/javaee*

xmlns:xsi=”*http://www.w3.org/2001/XMLSchema-instance*

xmlns:web=”*http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd*

xsi:schemaLocation=”*http://java.sun.com/xml/ns/javaee* *http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd*

id=”receiver”>

<!– The definition of the Root Spring Container shared by all Servlets and Filters –>

<!– ORACLE –>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/root-context.xml</param-value>

</context-param>

<resource-ref>

<description>Oracle Datasource</description>

<res-ref-name>jdbc/oracleUPNS</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

<!– MSSQL –>

<!–

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/root-context-mssql.xml</param-value>

</context-param>

<resource-ref>

<description>MSSQL Datasource</description>

<res-ref-name>jdbc/mssqlUPNS</res-ref-name>

<res-type>javax.sql.DataSource</res-type>

<res-auth>Container</res-auth>

</resource-ref>

–>

<!– The definition of the Root Spring Container shared by all Servlets and Filters –>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/root-context.xml</param-value>

</context-param>

<!– Creates the Spring Container shared by all Servlets and Filters –>

<listener>

<listener-class>org.springframework.`*web.context.ContextLoaderListener* <http://web.context.ContextLoaderListener>`__</listener-class>

</listener>

<!– setup filter –>

<filter>

<filter-name>encodingFilter</filter-name>

<filter-class>org.springframework.`*web.filter.CharacterEncodingFilter* <http://web.filter.CharacterEncodingFilter>`__</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encodingFilter</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

<!– Processes application requests –>

<servlet>

<servlet-name>appServlet</servlet-name>

<servlet-class>org.springframework.`*web.servlet.DispatcherServlet* <http://web.servlet.DispatcherServlet>`__</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>appServlet</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping>

</web-app>

  • context-param: DB 설정별 application context 파일명을 입력한다. ORACLE을 위한 설정이 디폴트 세팅되어 있다. 다른 DBMS를 사용할 경우 이 ORACLE 설정은 제거되어야 한다. 다른 DBMS를 위한 설정으로 MSSQL을 위한 예제 설정이 주석 처리되어 있다.

    resources-ref: receiver.properties에서 지정한 JNDI 명과 같은 설정을 한다. WAS에 설정된 JNDI 정보를 입력한다. Oracle을 위한 설정이 디폴트 설정, MSSQL을 위한 설정이 주석처리되어 있다.

  • Note: Receiver의 로그 설정은 표준 출력을 통해 출력되도록 되어 있다. 따라서 모든 Receiver의 로그는 WAS의 로그 파일로 출력된다. 로그 출력 경로를 변경하려면 src/log4j.xml을 변경한다.

4-2-3. Daemon.properties

  • daemon.properties

# Daemon 설정정보

MQTT.SERVER.IP = 127.0.0.1

MQTT.SERVER.PORT = 1883

PUBLIC.PROVIDER.IP = 127.0.0.1

PUBLIC.PROVIDER.PORT = 10420

MQTT.AGENTID = 211.241.199.139

MAX_REQUEST_QUEUE = 1000000

QUEUE.SAVE.SRC = C:/home/uracle/receiver/data/

WORK.THREAD.COUNT = 10

RESERVEMSG.SEND = true

RESERVEMSG.CHECK.MINUTE = 60

SYNC_SERVER =

SUCCESS_SENTMSG_DB_INSERT = Y

SYSTEM_SEND_YN = Y

SYSTEM_SENT_MASTERMSG_DB_INSERT = N

  • MQTT.SERVER.IP: upns, upns 서버 IP

    MQTT.SERVER.PORT: upns, upns 서버 PORT

    PUBLIC.PROVIDER.IP: provider ip

    PUBLIC.PROVIDER.PORT: provider port.

    MQTT.AGENTID:.

    MAX_REQUEST_QUEUE:푸시 메세시지 큐 사이즈.

    QUEUE.SAVE.SRC:푸시 메시지 큐에 메시지가 남은 상태에서 서버가 종료될 경우 disk 에 메시지 내용 저장할 위치.

    WORK.THREAD.COUNT:푸시 메시지 전송 work thread쓰레드 개수.

    RESERVEMSG.SEND: 예약 발송 Manager 인스턴스 생성. 이중화 되었을 경우 DB가각 가져와 2번 보낼수 있기 때문에 한대만 예약발송 가져오는 메니저를 구동한다..

  • RESERVEMSG.CHECK.MINUTE: DB에 저장되어 있는 예약발송 메세지 체크하는 주기(분).

    SUCCESS_SENTMSG_DB_INSERT: 발송성공한 메세지 DB에 저장 여부. 권고: N, TIP: 발송성공로그파일은 저장되고 있음.

    SYSTEM_SEND_YN: 레거시 시스템에서 대량 이벤트발생시 엄청남 개별 발송껀 처리 할 경우. 권고:Y.

    SYSTEM_SENT_MASTERMSG_DB_INSERT:시스템 발송메세지 T_PUSH_MSG_REV_MASTER 테이블 저장 여부. 권고: N.

4-3. Receiver 설치

  • Receiver 설치를 위해서는 WAS 환경이 사전 구축되어 있어야 한다. 이 문서에서는 Tomcat을 대상으로 설치 순서를 기술한다. Receiver를 설치하기 위해 다음 각 항목을 순서대로 실행한다.

    • Receiver 빌드

    • Receiver 배포

4-3-1. Receiver 빌드

  • Receiver 빌드는 아래 순서를 따른다.

    • Spring Tool Suite(eclipse)에서 Receiver 프로젝트에 우측클릭하여

      표시되는 메뉴에서 “Export…”를 선택한다.

    • 팝업 다이얼로그에서 Web->WAR file을 선택한 후 Next > 버튼을

      클릭한다.

image1

  • Export 팝업 다이얼로그에서 Destination 항목을 지정한다. Destination

    파일명은 receiver.war로 지정한다. 파일명 지정 후 “Finish” 버튼을 클릭한다.

image2

  • 지정한 위치에 receiver.war 파일이 생성된다. 배포시 생성된

    receiver.war를 사용한다.

4-3-2. Receiver 배포

  • 배포 가능한 형태의 .war파일을 Receiver가 설치될 WAS에 배포한다. 각 WAS에 따른 배포 방법은 WAS 마다 정의된 배포 방식을 따르도록 한다.

    ex1) Apache Tomcat의 경우 Tomcat의 manager web app을 사용하거나 배포 디렉토리에 .war 파일을 업로드한다.

    ex2) WebLogic의 경우 WebLogic에서 제공되는 관리 인터페이스를 통해 .war 파일을 배포한다.

5. 설치 확인

  • 배포된 Receiver 웹 어플리케이션은 배포 즉시 WAS의 관리 화면을 통해 설치 여부를 확인할 수 있다.

    또는 배포 완료 후 브라우저를 열어 *http://0.0.0.0:8080/receiver/echo.ctl* 화면을 연다. * 여기서 0.0.0.0:8080은 WAS가 실행되는 IP와 포트이다. 브라우저에 아래와 같은 결과가 표시되는지 확인한다.

    image3