• 검색 결과가 없습니다.

- 모바일 환경 및 응용

N/A
N/A
Protected

Academic year: 2022

Share "- 모바일 환경 및 응용"

Copied!
80
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

모바일 Programming

- 모바일 환경 및 응용

모바일 모바일 Programming Programming

- - 모바일 모바일 환경 환경 및 및 응용 응용

2009 2009 년 년 2 2 학기 학기 숙명여자대학교 숙명여자대학교

윤용익 윤용익

Yiyoon@sookmyung.ac.kr

Yiyoon@sookmyung.ac.kr

(2)

목 목 차 차

1부 이동통신의 소개

2부 무선 인터넷 서비스 – 모바일 환경 소개

3부 WML/WAP 소개

WIPI 소개

4부 Java 모바일 프로그래밍 소개

– J2ME using CLDC and MID profile

5부 J2ME 기반 모바일 자바 Network 프로그래밍

(3)

GCF (Generic Connection Framework)

GCF GCF (Generic Connection Framework) (Generic Connection Framework)

(4)

Get Get 방식 방식

1.

GET 방식의 경우 넘겨주는 값은 주소 줄에 추가됩니다.

2.

GET을 통한 값의 전달은 주소 줄을 타고 전달이 됩니다.

3.

비밀번호 같은 중요한 값들은 노출되기 쉽고, 항목이 많

은 form 양식은 GET방식으로 처리하지 않을 수 밖에

없습니다.

(5)

Post

Post 방식 방식

POST 방식은 값의 전달경로는 header 부분입니다.

getContentLength() 메소드를 통해서 전달되는 값의 Byte 크기를 알 수 있습니다.

이 때 parameter 이름과 값이 = 을 사이에 두고, 항목과 항목은 & 로 구분된 문자열로 Header 를 통해서 전달이 됩니다.

주소줄에 GET 방식의 자국을 남긴채 POST 폼을 사용하 면 주소줄의 파라메터도 전달이 됩니다.

두번째 입력창에 okjsppost 를 입력하고 전송하면 아래

그림과 같이 나옵니다.

(6)

Introduction Introduction

1. GCF 소개

2. MIDP HTTPConnection 프로그래밍 3. MIDP HTTPConnection 상태 유지

4. MIDP StreamConnection 프로그래밍

5. MIDP DatagramConnection 프로그래밍

(7)

GCF GCF 소개 소개 (1) (1)

• J2SE, J2EE 환경과 J2ME 환경차이

- J2SE와 J2EE의 입출력과 네트워크의 라이브러리를 사용하기에는

무리가 따른다. 이러한 입출력과 네트워크에 대한 문제는 GCF를 정

의 함으로써 해결이 가능.

(8)

GCF GCF 소개 소개 (2) (2)

• J2SE, J2EE 플랫폼의 java.io, java.net 패키지를 사용할 수 없음.

• GCF 개념

- 가능한 넓은 범위의 휴대 장치를 지원하기 위해 입출력과 네트워크 를 추상화하고, 실제 구현은 각 장치 제조업체가 하도록 설계

• GCF 설계 목적

- 서로 다른 형태의 입출력 형태를 일관성 있게 지원 - 서로 다른 형태의 프로토콜을 일관성 있게 지원 - 어플리케이션 이식성 향상

- 표준 자바 클래스 라이브러리와 상위 호환 - 더 작은 메모리 풋프린트를 가짐

(9)

GCF GCF 소개 소개 (3) (3)

• GCF 구조도

(10)

MIDP Connection

MIDP Connection 생성 생성 (1) (1)

• connection은 일관성을 유지하기 위해 Connector class의 open 메 소드 하나를 사용하여 모든 Connection을 생성

• open 메소드 정의

- static Connection open (String name)

(11)

MIDP Connection

MIDP Connection 생성 생성 (2) (2)

J2ME CLDC/MIDP에서 Connection을 생성하고 데이터를 주고 받는 절차

open() 메소드를 이용해 Connection을 연다.

Connection을 이용해 InputStream 또는 OutputStream을 만든다.

데이터를 송신하거나 수신한다.

Connection과 Input/Output Stream을 반드시 닫는다.

(12)

MIDP Connection

MIDP Connection 생성 생성 (3) (3)

1. Connection 열기

HttpConnection c = (HttpConnection)

Connector.open( "http://aaa.bbb.ccc:80") StreamConnection c = (StreamConnection)

Connector.open("socket://aaa.bbb.ccc:1234") DatagramConnection c = (DatagramConnection)

Connector.open(“datagram://aaa.bbb.ccc:1234)

2. InputStream or OutputStream 만듬

DataInputStream dis = c.openDataInputStream();

DataOutputStream dos = c.openDataOutputStream();

(13)

MIDP Connection

MIDP Connection 생성 생성 (4) (4)

3. 데이터 송/수신

dis.readChar() ; dos.writeChar();

4. Connection과 Input/Output Stream 닫기

c.close();

dis.close();

dos.close();

(14)

GCF API

GCF API 설명 설명 (1) (1)

Connection 인터페이스

- GCF에서 가장 기본이 되는 최상위 인터페이스로서 단지 열리고 닫는 기능만 한다.

• StreamConnectionNotifier 인터페이스

- 연결이 설정될 때까지 기다리기 위해 사용되는 연결형 Connection

• DatagramConnection 인터페이스

- UDP/IP 통신을 위해서 데이터그램 종단을 표현하기 위한 연결형 Connection 을 생성

• InputConnection 인터페이스

-

데이터를 읽어 들일 수 있는 장치를 지정하는 인터페이스

(15)

GCF API

GCF API 설명 설명 (2) (2)

OutputConnection 인터페이스

- 데이터를 전송할 수 있는 장치를 지정하는 인터페이스

• StreamConnection 인터페이스

- InputConnection과 OutputConnection을 통합하기 위한 인터페이스

• ContentConnection 인터페이스

- HTTP 연결에 의한 기본적인 메타 데이터 정보에 대한 접근을 제공

• Connection 인터페이스

- ContentConnection을 상속하였으며, HTTP1.1을 지원하기 위해 사용

• Connector 클래스

-

GCF에서 유일한 클래스이며, open() 메소드의 파라미터로 부터 요청 한 Connection을 형성하여 돌려 준다.

(16)

MIDP

MIDP HTTPConnection HTTPConnection 프로그래밍 프로그래밍

HttpConnection 인터페이스를 사용 했을 때 장단점

- J2ME CLDC/MIDP를 구현한 디바이스에서 HTTP Connection의 지원은 필수이며, Socket, UDP등 기타 Connection의 구현은 선택 사항이다.

이식성이 우수하다.

- HTTP Connection을 사용하면 방화벽에서 일반적으로 열어 두는 80포트 를 사용하기 때문에 네트워크 보안이나 방화벽 문제를 쉽게 처리 가능하다.

- HTTP Connection의 Request에 XML의 데이터를 보내게 되면 다른 형태 의 데이터를 손쉽게 전송할 수 있다.

- J2ME CLDC/MIDP는 HTTP 1.1 프로토콜의 서브 셋을 지원한다.

- HTTP 프로토콜이 연결 지속성이 아니라서 Session관리를 위해서 별도의 노력을 기울여야 하는 단점이 있다.

(17)

준비 과정

Tomcat 설치

Servlet을 수정하기 위하여 servlet.jar 파일을 – Jre/lib로 복사

해당 Servlet 파일을 Compile 한 후에

– Tompcat/webapps/examples/WEB_INF/classes/ 내에 복사함.

- 여기서 webapps까지 자동 인지됨

- 또한, WEB_INF/classes/ 자동 인지됨

-

Midlet file 내에서 URL 주소 설정

- “http://203.153.155.102:8080/examples/servlet/HttpGetServlet”

(18)

HTTP GET

HTTP GET 방식 방식 데이터 데이터 요청 요청 예제 예제 (2) (2)

• HttpGetServlet을 생성하고 GET 방식으로 요청을 설정하는 부분

hc = (HttpConnection)Connector.open(url + queryString);

hc.setRequestMethod(HttpConnection.GET);

• getParameter() 메소드를 이용해 GET 방식 요청

// request로 부터 ID, PASSWORD를 얻어옴

id = request.getParameter("id");

password = request.getParameter("password");

(19)

HTTP GET

HTTP GET 방식 방식 데이터 데이터 요청 요청 예제 예제 (3) (3)

• GET 요청을 위해 QueryString을 생성

// GET 요청을 위해 queryString을 생성

queryString = "?" + "id=" + idField.getString() + "&"

+ "password=" + pwField.getString();

• HttpConnection을 생성

// HTTP Connection을 생성

hc = (HttpConnection)Connector.open(url + queryString);

• RequestMethod로 GET 설정

// RequestMethod로 GET 설정

hc.setRequestMethod(HttpConnection.GET);

(20)

HTTP GET

HTTP GET 방식 방식 데이터 데이터 요청 요청 예제 예제 (4) (4)

• HttpGetMIDlet 실행 화면

(21)

HTTP POST

HTTP POST 방식 방식 데이터 데이터 요청 요청 예제 예제 (1) (1)

GET 방식이 서버로부터 데이터를 받기 위한 목적으로 사용하는 것이라면 POST 방식은 그 반대의 기능을 제공

GET 방식 요청이 허용하는 것 보다 많은 정보를 전달하기 위해 사용됨

.

• HttpConnection을 생성하고 POST 방식 요청을 설정하는 부분

hc = (HttpConnection)Connector.open(url, Connector.READ_WRITE);

hc.setRequestMethod(HttpConnection.POST);

Servlet은 클라이언트로부터 POST 방식 요청으로 UpperCase할 데이 터를 받은 후 결과를 클라이언트에

보낸다.

사용자로부터 UpperCase할 데이 터를 받은 후 Server에 Http Conn Ection의 POST 방식 요청을 보내 고 결과를 받아 출력한다.

Servlet 예제 MIDlet 예제

(22)

HTTP POST

HTTP POST 방식 방식 데이터 데이터 요청 요청 예제 예제 (2) (2)

• InputStream을 통해 데이터를 받음 (Servlet)

// InputStream 생성

BufferedReader inputStream = request.getReader();

// Input String을 받음 String line;

String requeststring = "";

while (( line = inputStream.readLine()) != null) {

requeststring = requeststring + line;

• HttpConnection을 생성(MIDlet)

// HTTP Connection을 생성

hc = (HttpConnection)Connector.open(url, Connector.READ_WRITE);

(23)

HTTP POST

HTTP POST 방식 방식 데이터 데이터 요청 요청 예제 예제 (3) (3)

• RequestMethod로 POST 생성(MIDlet)

// RequestMethod로 POST 설정

hc.setRequestMethod(HttpConnection.POST);

OutputStream을 통해 데이터를 전달(MIDlet)

// 서버로 부터 데이타를 받기 위해 outputStream 생성 out = hc.openDataOutputStream();

// 서버에 요청 스트링을 보낸다.

byte[] request = requeststring.getBytes();

for (int i = 0; i < request.length; i++) {

out.writeByte(request[i]);

}

out.flush();

(24)

HTTP POST

HTTP POST 방식 방식 데이터 데이터 요청 요청 예제 예제 (4) (4)

• HttpPostMIDlet 실행 화면

(25)

HTTP HEAD

HTTP HEAD 방식 방식 데이터 데이터 요청 요청 예제 예제

GET 방식과 유사

서버는 HEAD에 대한 정보만 돌려 보낸다.

HEAD 정보

HTTP/1.0 200 OK

Data: Thu, 03 May 2002 16:04:09 GMT Server: NCSA/1.4.2

MIME-version: 1.0

Content-type: text/html

Last-modified: Thu, 03 May 2002 16:03:27 GMT Content-length: 145

HEAD는 다음의 정보 확인을 위해 사용 Server 문서의 최근 modified 날짜

다운 받을 문서의 크기 – 다운 로드 진행 상태를 알 수 있다.

Server Type – Server에 따른 Client 처리

문서 형식 – 클라이언트의 문서 지원 여부 확인

(26)

MIDP

MIDP HTTPConnection HTTPConnection 상태 상태 유지 유지 (1) (1)

접속 상태를 유지하지 않는 프로토콜

한쌍의 Request – Reponse는 독립적으로 처리

Cookie 이란?

Cookie는 클라이언트가 저장이 필요한 정보가 생길 때 마다 클라이언트 쪽에 일정한 형식의 데이터(Cookie)로 만들어 저장하고 필요한 서버와 서버의 디렉터리를 접근할 때 그 정보도 같이 서버에 보내주는 형태

Session이란?

Session은 사용자의 정보를 유지 하기 위해 서버에 저장되는 Cookie라고 생각하면 된다

(27)

MIDP

MIDP HTTPConnection HTTPConnection 상태 상태 유지 유지 (2) (2)

Cookie 값

HTTP/1.1 200 OK

Content-Type: text/plain Content-Length: 53

Date: Tue, 18 Dec 2001 17:19:22 GMT

Server: Apache Tomcat/4.0.1 (HTTP/1.1 Connector)

Set-Cookie: JSESSIONID=35E2621570C3B1D;Path=/midp

서버가 클라이언트의 접속에 대해 생성한 유일한 식별자

(28)

MIDP

MIDP HTTPConnection HTTPConnection 상태 상태 유지 유지 (3) (3)

• 유일한 식별자인 JSESSIONID을 Cookie로 설정해 서버에 보낸다.

hc.setRequestProperty("Cookie", sessionID);

• 서버의 응답으로부터 Cookie를 얻는다.

String cookie = hc.getHeaderField("Set-Cookie");

• Cookie 중에 유일한 식별자인 JSESSIONID을 얻는다.

// cookie에서 JSESSIONID를 얻는다.

if (cookie != null) {

int index = cookie.indexOf(';');

sessionID = cookie.substring(0, index);

}

(29)

MIDP

MIDP HTTPConnection HTTPConnection 상태 상태 유지 유지 (4) (4)

• SessionMIDlet 실행 화면

(30)

MIDP

MIDP StreamConnection StreamConnection 프로그래밍 프로그래밍

StreamConnection 인터페이스는 연결 지향형 Connection을 지원.

한번 접속하면 접속 종료 전까지 계속적으로 데이터를 주고 받음.

TCP/IP

Daemon

- 시스템의 특정 포트를 열고 Background에서 실행되는 프로세스

StreamConnecton을 생성하기 위해 Connector의 open() 메소드 이용

-

StreamConnection sc =(StreamConnection)

Connector.open("socket://java.sun.com:1500 " )

(31)

StreamConnection

StreamConnection 예제 예제 (1) (1)

• StreamConnectionServer 작업 흐름도

ServerSocket을 열고 클라이언트의 접속 대기

InputStream을 이용해 클라이언트에서 온 데이터를 받음

OutputStream을 이용해 데이터를 클라이언트로 보냄 클라이언트 접속

접속 대기

(32)

StreamConnection

StreamConnection 예제 예제 (2) (2)

• Server Socket 생성

// Server Socket 생성

server = new ServerSocket(port);

• Client 접속을 기다림

System.out.println("클라이언트가 접속 하였습니다.");

• InputStream을 생성하고 데이터를 받음

in = new DataInputStream(client.getInputStream());

// Client로 부터 메세지를 받음 String input = in.readUTF();

// Output 메세지(Reverse String) 생성

• OutputStream을 생성하고 데이터를 보냄

out = new DataOutputStream(client.getOutputStream());

// Client에 결과 메세지를 보냄 out.writeUTF(output);

out.flush();

(33)

StreamConnection

StreamConnection 예제 예제 (3) (3)

• StreamConnectionMIDlet 작업 흐름도

StreamConnection을 생성

InputStream을 이용해 서버에 데이터 전송

OutputStream을 이용해 데이터를 받아 출력

(34)

StreamConnection

StreamConnection 예제 예제 (4) (4)

• StreamConnection 생성

// Server와 StreamConnection(Socket)을 생성 sc = (StreamConnection) Connector.open

(url, Connector.READ_WRITE, true);

• OutputStream 생성 후 데이터를 보냄

// Server에 reverse 할 String을 보냄 out = sc.openDataOutputStream();

out.writeUTF(reverseString);

out.flush();

• InputStream 생성 후 데이터를 받음

// InputStream 생성

in = sc.openDataInputStream();

// Server로 부터 reverse된 String을 받아 화면에 출력.

String input = in.readUTF();

(35)

StreamConnection

StreamConnection 예제 예제 (5) (5)

• StreamConnectionMIDlet 실행 화면

(36)

MIDP

MIDP DatagramConnectionDatagramConnection 프로그래밍프로그래밍

Connector 클래스의 open 메소드를 사용 - (DatagramConnection) Connector.open

( " datagram:// java.sun.com:1500" )

서버 모드의 DatagramConnection의 생성

- DatagramConnection dc = (DatagramConnection)

Connector.open ( " datagram://:port " ) - DatagramConnection dc = (DatagramConnection)

Connector.open ( " datagram://localhost:port " )

• UDP (User Datagram Protocol)

- IP를 사용하는 네트웍 내에서 컴퓨터들 간에 메시지들이 교환될 때 제한된 서비스만을 제공하는 통신 프로토콜이다. UDP는 TCP의 대안

- TCP와 마찬가지로 UDP도 한 컴퓨터에서 다른 컴퓨터로 데이터그램이라 고 불리는 실제 데이터 단위를 받기 위해 IP를 사용

(37)

DatagramConnection

DatagramConnection 예제 예제 (1) (1)

• DatagramConnectionServer

- 클라이언트와 Datagram Connection을 유지하고 받은 데이터를 Reverse String으로 변환한 결과를 클라이언트로 보냄

1. DatagramSocket을 서버모드로 생성 // receive DatagramSocket 생성 recei = new DatagramSocket(port);

2. 클라이언트로부터 데이터를 받기 위해 DatagramPacket을 생성하고 데이 터를 기다림

rPacket = new DatagramPacket( buffer, buffer.length );

recei.receive(rPacket);

(38)

DatagramConnection

DatagramConnection 예제 예제 (2) (2)

3. 클라이언에 보낼 DatagramPacket을 생성 // Client에 보낼 DatagramPacket 생성

int sPort = rPacket.getPort();

InetAddress sAddress = rPacket.getAddress();

sPacket = new DatagramPacket( out, out.length, sAddress, sPort );

4. 클라이언트에 데이터를 보냄

// 결과 DatagramPacket을 Client에 보냄 send = new DatagramSocket();

send.send( sPacket );

(39)

DatagramConnection

DatagramConnection 예제 예제 (3) (3)

• DatagramConnectionMIDlet

1. Server에 보낼 Datagram을 생성 후 데이터를 보냄 // DatagramConnection을 생성

dc = (DatagramConnection)Connector.open(sendUrl);

// Server에 보낼 Datagram 생성

dgram = dc.newDatagram( reverseString.getBytes(),

reverseString.getBytes().length, sendUrl);

// Server에 Datagram을 보냄 dc.send(dgram);

2. Server로부터 받을 Datagram을 생성 후 Server로부터 데이터를 받음 // Server로 부터 받을 Datagram 생성

dgram = dc.newDatagram(128);

dc.receive(dgram);

(40)

MIDP

MIDP DatagramConnectionDatagramConnection 프로그래밍프로그래밍 (4)(4)

DatagramConnectionMIDlet 실행 화면

(41)

J2ME-J2EE 연동 (추가 기능)

J2ME J2ME - - J2EE J2EE 연동 연동 ( ( 추가 추가 기능 기능 ) )

(42)

SOD (Services On Demand) SOD (Services On Demand)

• 엔터프라이즈에서 보유하고 있는 방대한 정보는 고객이 언제 어디

서든, 어떤 디바이스를 이용해서도 접근 할 수 있도록 해야 함.

(43)

J2ME

J2ME 플랫폼의 플랫폼의 오늘과 오늘과 내일 내일 (1) (1)

• 자바 플랫폼 (J2EE, J2SE, J2ME) 비교

(44)

J2ME

J2ME 플랫폼의 플랫폼의 오늘과 오늘과 내일 내일 (2) (2)

• J2ME MID 프로파일

-

MIDP는 J2ME의 두 Configuration(CLDC/CDC)중 CLDC의 Profile로 휴대전화나 pager등에 적당한 프로그램을 할 수 있도록 설계됨.

• J2ME 기술 무선 디바이스 스팩

(45)

J2ME

J2ME 플랫폼의 플랫폼의 오늘과 오늘과 내일 내일 (3) (3)

• J2ME 플랫폼의 사용 가능성

(46)

J2EE-J2EE-J2ME J2ME 어플리케이션어플리케이션 아키텍처아키텍처

• 자바 스마트 티켓 데모 어플리케이션

-

사용자가 핸드폰, PDA 또는 다른 무선 디바이스를 이용하여 영화 티켓 을 구매할 수 있도록 무선 프로그램을 위한 자바 블루 프린터에서 제공 하는 간단한 mCommerce 어플리케이션이다.

(47)

자바자바 스마트스마트 티켓티켓 데모데모 어플리케이션어플리케이션 아키텍처아키텍처 (1)(1)

J2ME 무선 디바이스에서 MIDP를 사용하여 J2EE 어플리케이션 서버에 연결 하도록 구성됨.

• J2ME 클라이언트에서는 EJB 컴포넌트에서 제공하는 서비스를 받기 위해 웹-티어에 존재하는 서블릿과 HTTP 네트워킹 기능을 사용해 통신함.

J2ME 클라이언트 티어 (Client Tier - J2ME)

- MovieList 및 AccountForm 등과 같은 스크린(Screen)은 MIDP의 LCD UI 컴포넌트 프레임워크를 제공해 준다.

(48)

자바자바 스마트스마트 티켓티켓 데모데모 어플리케이션어플리케이션 아키텍처아키텍처 (2)(2)

• J2EE 어플리케이션 서버 티어 (Application Server Tier - 2EE Platform)

- 웹-티어에 존재하는 프론트 클라이언트 서블릿은 HTTP 요청이 들어오면, 요청에 해당하는 서비스를 제공해 주는 EJB 컴포넌트의 메소드를 호출하 고, 그 결과를 HTTP 응답을 통해 클라이언트에게 되돌려 주는 역할

• 통신 기법 (Communication Mechanism)

- 컨트롤러는 어플리케이션의 실행 과정에서의 스크린의 흐름을 관리 - Session 객체는 헬퍼 객체로서 MIDP에서 제공해 주는 HTTP 네트워킹

API 를 이용하여 서버와의 HTTP 통신을 담당

(49)

MVC MVC 모델에모델에 기반한기반한 자바자바 스마트스마트 티켓티켓 어플리케이션어플리케이션

• 좀더 쉽고 빠르게 비즈니스 로직을 개발할 수 있다.

• 개발된 비즈니스 로직에 대한 재 사용성 및 확장성을 높여준다.

• 데이터 액세스 로직으로부터 프리젠테이션 로직과 컨트롤 로직을 분리함으로 써 같은 데이터에 대해서도 다양한 뷰를 제공할 수 있다.

(50)

영화 영화 예매 예매 모바일 모바일 시스템 시스템 (1) (1)

• J2ME Wireless을 실행하고 Smarticket 프로젝트를 실행

(51)

영화 영화 예매 예매 모바일 모바일 시스템 시스템 (2) (2)

• 영화 예매 모바일 시스템에서 사용하는 13개의 자바 파일과 환경변수 2개

영화 예매 모바일 시스템 초기 실행 화면

(52)

영화 영화 예매 예매 모바일 모바일 시스템 시스템 (3) (3)

• 영화 예매 모바일 프로그램의 전반적인 처리 프로세스

(53)

영화 영화 예매 예매 모바일 모바일 시스템 시스템 소스 소스 (1) (1)

• Account를 얻기 위해 진행하는 화면

(54)

영화 영화 예매 예매 모바일 모바일 시스템 시스템 소스 소스 (2) (2)

• 회원 가입 후 로그인 처리 (CommandAction() 메소드)

// 회원 가입을 한 후 로그인 했을 경우

//Session클래스의 message값에 MessageConstants값을 설정 session.message = MessageConstants.LOGIN_USER;

// 현재 화면을 nextScreen에 등록 nextScreen = signedInForm;

// 다음 화면을 previousScreen에 등록 previousScreen = splashCanvas;

// 진행 상황을 보여주기 위해 startLoading메소드 호출

startLoading(false, getMsg(MessageConstants.SIGNING_IN));

(55)

영화 영화 예매 예매 모바일 모바일 시스템 시스템 소스 소스 (3) (3)

• 작업 진행 사항 표시 (startLoading() 메소드)

// GaugeForm 의 초기값 설정

gaugeForm.init(title, stoppable);

// 현재화면을 진행사항을 표시하는 화면 display.setCurrent(gaugeForm);

• 다음 화면을 previousScreen에 등록

(startLoading() 메소드)

// Session 클래스 프로그램 스레드 시작 new Thread(session).start();

GaugeForm 실행 화면

(56)

영화 영화 예매 예매 모바일 모바일 시스템 시스템 소스 소스 (4) (4)

• 로그인을 처리하는 login 메소드 호출 (RUN() 메소드)

// 사용자 로그인 하려 할때

case MessageConstants.LOGIN_USER:

login();

(57)

영화 영화 예매 예매 모바일 모바일 시스템 시스템 소스 소스 (5) (5)

• 결과 화면을 사용자에게 보여줌 (stopLoading() 메소드)

display.setCurrent(alertScreen, nextScreen);

display.setCurrent(nextScreen);

로그인 성공시 결과 화면

(58)

네트워크과

네트워크과 RMS (1) RMS (1)

영화에 따른 포스터 보기 화면

영화를 볼 극장 위치 선택 화면

영화 볼 시간 선택 화면

좌석 선택 화면 신용카드 결제 화면

영화 예매 완료 화면 영화 선택 화면

(59)

네트워크과

네트워크과 RMS (2) RMS (2)

1. Open 메소드, httpConnection 생성 후 POST 방식 요청 - Http Connection 생성

- HttpConnection의 Method로 POST를 사용 - OutputStream 생성

- 데이터 전송 - Stream close

2. RMS의 RecordStore 처리 – RecordStore 생성)

3. RecordStore에 데이터 저장하기 - RecordStore에 데이터 UPDATE - RecordStore에 데이터 INSERT 4. RecordStore에서 데이터 읽어 오기

- RecordStore로부터 데이터를 읽어 들인다.

(60)

영화 영화 예매 예매 엔터프라이즈 엔터프라이즈 시스템 시스템 (1) (1)

• 휴대 장치의 영화 예매 모바일 시스템에서 HTTP POST 방식으로 요청에 대해 처리하고 결과를 보내는 역할.

• 영화 예매 엔터프라이즈 시스템의 중심 기술

- Java Servlet API

- Enterprise JavaBeans™ (EJB™) architecture - Java DataBase Connectivity (JDBC™) API

(61)

영화 영화 예매 예매 엔터프라이즈 엔터프라이즈 시스템 시스템 (2) (2)

• 영화 예매 엔터프라이즈 시스템은 HTTP 요청을 받는 서블릿 파일과

각각의 요청에 따라 해당 처리를 하는 EJB 부분으로 구성되어 있음

(62)

영화 영화 예매 예매 엔터프라이즈 엔터프라이즈 시스템 시스템 (3) (3)

• MIDService 클래스의 processRequest 메소드에 처리 요청 (doPost() 메소드)

// MIDPService클래스의 processRequest메소드에 처리 요청

invalidate = midpService.processRequest(out, command, sessionURL);

• 사용자 로그인 Command일 경우 로그인 처리 메소드 호출 (processRequest() 메소드)

// 사용자 로그인 Command일 경우 case LOGIN_USER:

// 로그인 처리 메소드 호출 loginUser(out, params);

break;

(63)

영화 영화 예매 예매 엔터프라이즈 엔터프라이즈 시스템 시스템 (4) (4)

• 로그인 관련 EJB Remote Interface 생성(loginUser() 메소드)

Customer c = findCustomerEJB(username);

• EJB Home Interface 생성(loginUser() 메소드)

CustomerInformation ci = c.getInformation();

• 처리 비즈니스 메소드 호출 (loginUser() 메소드)

// 사용자가 입력한 로그인 페스워드와 회원 가입시 페스워드를 비교.

if (!(password == (ci.getPassword()))) {

throw new MIDPException(PASSWORD_INCORRECT_ERROR);

}

(64)

Next generation of the Mobile Information Device Profile (MIDP v Next generation of the Mobile Information Device Profile (MIDP v2.0)2.0)

• Application Delivery

- MIDlet Upgrade 처리

- MIDlet 다운로드에 대한 Cookie 처리

- MIDlet이 정상적으로 다운 되었을 경우 서버에 알림

• UI additions

- Custom Item support - look & feel 지원 - Layout control – Layout 관리 가능

- Graphics enhancements – 투명 이미지 지원, fillTriangle 지원

- Miscellaneous ‘tweaks’ – Gauge 지원, 리스트에 Command지원, ImageItem 보완

(65)

Next generation of the Mobile Information Device Profile (MIDP v Next generation of the Mobile Information Device Profile (MIDP v2.0)2.0)

• Game APIs

• Sound APIs

- Tone Generation, Sampled sounds, MIDI 지원

(66)

Next generation of the Mobile Information Device Profile (MIDP v Next generation of the Mobile Information Device Profile (MIDP v2.0)2.0)

• Trusted MIDlet Suites for better security

- 제한된 API에 Permission 정의

- JAR Signature

Enhanced networking

- New network and device I/O handlers – SocketConnection, ServerSocketConnection, UDPDatagramConnection등 다수 추가

- Secure Networking - HTTPSConnection, SecureConnection등 다수 추가 - Push Application Support

• HTTPs

Push

(67)

J2ME-J2EE 연동 프로그램

– Java Smart Ticket Application

(68)

J2ME J2ME - - J2EE J2EE 연동 연동 프로그램 프로그램

Java Smart Ticket Application 예제

– J2ME와 J2EE의 연동을 적용시킨 100% 순수 자바 기술 구현 예제

– 모바일 기기로 J2EE Server 에 HTTP 연결을 하여 실시간 극장 예매를 가능하게 하는 Application

– MID Profile의 Generic Connection Framework API 를 사용하여 HTTP 연결

(69)

Multi

Multi - - tier tier 엔터프라이즈 엔터프라이즈 시스템 시스템

Multi-tier 시스템의 전형적인 구조

프리젠테이션 애플리케이션 데이터 서비스

서비스

(70)

Multi

Multi - - tier tier 엔터프라이즈 엔터프라이즈 시스템 시스템

Multi-tier 엔터프라이즈 시스템 개발의 난점

– Tier 간의 서로 다른 요구

• Server : 애플리케이션 간의 상호 연동성과 협업성, 안전성, 견고성, 측정 가능성

• Client : 편리성, 이동성, 효율성, 다양성

– 다양한 개념, 기술, 도구, 언어 요구

• 학습 비용과 기간이 많이 소요

• 이질적 언어와 도구의 상호 연동이 어려움

⇒ 개방형, 플랫폼 중립, 산업표준기술 기반의

컴퓨팅 환경 필요

(71)

Service On Demand Service On Demand

Sun의 SOD (Service On Demand) 개념

– 엔터프라이즈 환경의 자산들의 분산 정도에 관계없이 다양한 형태의 고객에게 다양한 서비스를 제공하는 컴 퓨팅 환경에 대한 Sun의 비전

J2EE와 J2ME의 접목

– 엔터프라이즈 컴퓨팅을 위한 J2EE 기술과

모바일 컴퓨팅을 위한 J2ME 기술의 연동을 통해

시간(Anytime), 장소(Anywhere), 기기(AnyDevice)에 구애 받지 않는 환경을 구현

(72)

Multi

Multi - - tier tier 엔터프라이즈 엔터프라이즈 시스템 시스템

순수 자바 기술을 사용한

Multi-tier 엔터프라이즈 시스템 개발

– 유용성이 입증된 자바 기술

• 높은 생산성, 이식성, 안정성, 가용성

– 시스템 개발의 모든 부분에 단일 기술 사용 – J2ME-J2EE의 연동

• 모바일 엔터프라이즈 서비스 제공 가능

⇒ Java Smart Ticket Application 예제

– J2ME-J2EE 연동을 구현한 100% 순수 자바 기술

(73)

순수 순수 자바 자바 기술을 기술을 사용한 사용한 Multi

Multi - - tier tier 엔터프라이즈 엔터프라이즈 시스템 시스템 개발 개발

J2EE-J2ME 애플리케이션 아키텍처

(74)

Java Smart Ticket Application Java Smart Ticket Application

Java Smart Ticket Application

– MVC (Model, View, Controller) 모델을 적용

• J2ME Client tier: 프리젠테이션 로직(View)

• J2EE Web tier: 브리지 (Controller)

• J2EE EJB tier: 비즈니스 로직 (Model)

• EIS tier: 데이터 서비스 (Model)

EJB DB

DB MIDlet HTTP

J2ME tier

Web tier EJB tier Servlet

EIS tier

JDBC

J2EE

tier

(75)

Java Smart Ticket Application Java Smart Ticket Application

세션정보 관리

– 세션 : 사용자가 단일 클라이언트를 사용하여 발생시 키는 일련의 서비스 요청

– 세션정보 : 한 세션이 여러 요청에 걸쳐 유지하는 정 보 (ex : 쇼핑 카트)

– HTTP는 stateless 프로토콜임

• Servlet API는 HttpSession 객체를 제공

– 세션정보 표현을 위한 기법

• Cookie

• URL-Rewriting

• SSL (SSL은 MIDP의 필수 요소는 아님)

(76)

Java Smart Ticket Application Java Smart Ticket Application

개인정보 관리

– 개인정보 : 여러 세션에 걸쳐 유지되는 사용자 정보 – 개인정보의 중요성 : 서비스를 요청할 때 사용자 개

입을 최소화

– 개인정보의 유지

• J2ME : MIDP의 RMS 기능 사용

• J2EE : 다양한 방법을 사용할 수 있음

세션 및 개인정보 관리

– 서버에서 관리

• 서버로 전달되는 메시지 규모 축소

• 다양한 클라이언트 유형들의 효과적 지원

– 일반 정보와 기기 유형별 정보의 분리

(77)

Java Smart Ticket Application Java Smart Ticket Application

Deployment (배치)

– J2ME 요소

• 프로그램 코드 : JAR 파일에 패키징

• 설명과 구성 : JAD 파일

– J2EE 요소

• JSP 페이지와 Servlet : WAR 파일에 패키징

• EJB 컴포넌트 : JAR 파일에 패키징

• WAR+JAR : EAR 파일에 패키징

• J2EE 참조 구현의 deploytool 사용

(78)

Java Smart Ticket Application (

Java Smart Ticket Application ( 결론 결론 ) )

J2ME-J2EE 연동 프로그램

– 무선 엔터프라이즈의 효과적 구축 가능

– 프로그래밍이 용이 - Fast Learning Curve – 여러 기술과 도구의 빈틈없는 결합 제공

(79)

Java Smart Ticket Application Java Smart Ticket Application

시 연

(80)

Thank you.

3G

참조

관련 문서

Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ.. Lab., Hanyang Univ..

보안에 대한 Microsoft의 포괄적인 접근 방식은 데이터 센터, 휴대폰, 데스크톱의 데이터 또는 인터넷을 통해 전송 중인 데이터를 포함하여 위치에

2015년 2학기 프로그래밍개론및 실습 과목으로 본 내 용은 강의 교재인 생능출판사 , 두근두근 C 언어 수업,..

서비스 콘셉트 평가 및

지수분포가 확률밀도함수임을

디지털 구동 방식 구동영역 유기 EL의 응용

앞서 데이터 기록이 무엇인지, 예술·식품·기술·의료분야의 데이터 기록을 통해 다양한 데이터 기록의 방법에 대해 알아보았습니다.. 데이터 기록이 사회에 미친 영향은

Leung, “A High-Capacity Wireless Network By Quad-Sector Cell and Interleaved Channel Assignment,” IEEE JOURNAL ON SELECTED AREAS IN COMMUNICATIONS,