sun java system rfid software 2 - oracle help center · 2010-12-23 · 6 sun java system rfid...

48
Sun Microsystems, Inc. www.sun.com 다음 사이트에 설명서에 대한 여러분의 의견을 제출하여 주십시오 . http://www.sun.com/hwdocs/feedback 개발 안내서 Sun Java System RFID Software 2.0 부품 번호 : 819-2617-10 2005 4 , 개정판 A

Upload: others

Post on 07-Jan-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

Sun Microsystems, Inc.www.sun.com

다음 사이트에 이 설명서에 대한 여러분의 의견을 제출하여 주십시오 . http://www.sun.com/hwdocs/feedback

개발 안내서

Sun Java™ System RFID Software 2.0

부품 번호 : 819-2617-102005 년 4 월 , 개정판 A

Page 2: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

Copyright © 2005 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. 모든 권리는 저작권자의 소유입니다 .

U.S. 정부 권한 - 상용 . 정부 사용자는 Sun Microsystems, Inc. 표준 사용권 계약과 FAR의 해당 규정 및 추가 사항의 적용을 받습니다 .

이 배포에는 타사에서 개발한 자료가 포함되어 있을 수 있습니다 . Sun, Sun Microsystems, Sun 로고 , Java는 미국 및 기타 국가에서 Sun Microsystems, Inc.의 상표 또는 등록 상표입니다 .

모든 SPARC 상표는 라이센스 하에 사용되며 미국 및 기타 국가에서 SPARC International, Inc.의 상표 또는 등록 상표입니다 . SPARC 상표가 부착된 제품은 Sun Microsystems, Inc.가 개발한 아키텍처를 기반으로 합니다 .

UNIX는 X/Open Company, Ltd.를 통해 독점 라이센스를 취득한 미국 및 기타 국가의 등록 상표입니다 .

이 서비스 설명서에서 다루는 제품과 수록된 정보는 미국 수출 관리법에 의해 규제되며 다른 국가의 수출 또는 수입 관리법의 적용을 받을 수도 있습니다 . 이 제품과 정보를 직간접적으로 핵무기 , 미사일 또는 생화학 무기에 사용하거나 핵과 관련하여 해상에서 사용하는 것은 엄격하게 금지합니다 . 미국 수출 금지 국가 또는 금지된 개인과 특별히 지정된 국민 목록을 포함하여 미국 수출 금지 목록에 지정된 대상으로의 수출이나 재수출은 엄격하게 금지됩니다 .

본 설명서는 "있는 그대로 " 제공되며 상업성 , 특정 목적에 대한 적합성 또는 비침해성에 대한 모든 묵시적 보증을 포함하여 모든 명시적 또는 묵시적 조건 , 표현 및 보증에 대해 어떤 책임도 지지 않습니다 . 이러한 보증 부인은 법적으로 허용된 범위 내에서만 적용됩니다 .

Page 3: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

목차

시작하기 전에 5

본 설명서를 읽기 전에 5

설명서 형식 규칙 6

일반 규칙 6

표기 규약 7

관련 문서 7

Sun 기술 지원 8

Sun은 여러분의 의견을 환영합니다 . 8

1. Sun Java System RFID 소프트웨어 정보 서버 9

구조 9

데이터베이스 테이블 10

2. RFID 정보 서버 클라이언트 API 사용 13

RFID 정보 서버에 연결 13

RFID 정보 서버와 데이터 교환 15

RFID 정보 서버 테이블 수정 16

RFID 정보 서버 데이터베이스 테이블 쿼리 18

RFID 정보 서버 응답 처리 20

예외 처리 23

목차 3

Page 4: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

3. RFID 정보 서버 보고 프레임워크 25

EPCIS에서 JasperReports와 함께 보고 프레임워크 사용 25

▼ 보고 프레임워크를 시작하고 보고서를 표시하려면 27

4. ALE 웹 서비스 33

넓은 구조 33

ALE 서비스 구조 34

기타 고려 사항 36

ALE 웹 서비스 클라이언트 (ALEClient) API 사용 37

ALE 웹 서비스 클라이언트 인터페이스 및 구현 37

샘플 프로그램 - MyAleClient.java 38

샘플 개발 환경 38

5. PML 유틸리티 41

소개 41

PML Core를 사용한 태그 정보 캡처 42

PML 유틸리티 패키지 43

PML Core 패키지 43

PML 구문 분석기 패키지 45

클래스 경로 요구 사항 46

PML 패키지에 대한 UML 클래스 다이어그램 47

4 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 5: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

시작하기 전에

이 개발 안내서는 Sun™ Java™ System RFID Software 2.0(RFID 소프트웨어 )용이며 , RFID 태그 판독기 시스템에서 데이터를 가져와야 하는 엔터프라이즈 소프트웨어 개발자를 위한 지침을 제공합니다 . 개발 안내서는 판독기 어댑터 개발자용 설명서가 아닙니다 . 판독기 어댑터 정보는 Sun Java System RFID Software Toolkit에 설명되어 있습니다 .

스크린 샷은 플랫폼마다 약간 다릅니다 . 대부분의 모든 절차에서 RFID 소프트웨어 구성 요소의 인터페이스를 사용하지만 때때로 명령줄에서 명령을 입력하는 절차가 소개되기도 합니다 .

본 설명서를 읽기 전에RFID 개념과 다음 내용을 숙지해야 합니다 .

■ Jini™ 네트워크 기술 개념■ Java™ 프로그래밍 및 개념■ Java™ DataBase Connectivity 기술 - JDBC™ 개념 및 사용법■ Java™ 2 Platform, Enterprise Edition(J2EE™) 기술 및 사용법■ 클라이언트 -서버 프로그래밍 모델■ 대형 엔터프라이즈 시스템 관리에 익숙함■ 지원되는 응용 프로그램 서버 관리■ 지원되는 데이터베이스 관리

5

Page 6: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

주 – Sun은 이 설명서에 언급된 타사 웹 사이트의 가용성에 대해 책임지지 않습니다 . Sun은 이러한 사이트나 자원을 통해 사용할 수 있는 내용 , 광고 , 제품 또는 기타 자료에 대해서는 보증하지 않으며 책임지지 않습니다 . Sun은 해당 사이트 또는 자원을 통해 사용 가능한 내용 , 제품 또는 서비스의 사용과 관련해 발생하거나 발생했다고 간주되는 손해나 손실에 대해 책임이나 의무를 지지 않습니다 .

설명서 형식 규칙이 절에서는 본 설명서에서 사용된 규칙 유형을 설명합니다 .

■ 일반 규칙■ 디렉토리 참조 규칙

일반 규칙본 설명서에는 다음과 같은 일반 규칙을 사용합니다 .

■ 파일 및 디렉토리 경로는 UNIX® 형식으로 지정하며 슬래시를 사용하여 디렉토리 이름을 구분합니다 .

■ URL은 다음 형식으로 지정합니다 .

http://server.domain/path/file.html에서 server는 응용 프로그램이 실행되는 서버 이름 , domain은 인터넷 도메인 이름 , path는 서버 디렉토리 구조 , file은 개별 파일 이름입니다 .

■ 본 설명서의 특정 UNIX 설명은 Linux를 특별히 언급한 경우를 제외하고 Linux 운영 체제에도 적용됩니다 .

6 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 7: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

표기 규약

관련 문서다음 표에서는 Sun Java™ System RFID 소프트웨어 설명서 및 릴리스 노트에서 설명한 작업 및 개념을 나열합니다 . 특정 작업을 수행하거나 특정 개념에 대한 자세한 내용을 알려면 해당 설명서를 참조하십시오 .

서체 의미 예

AaBbCc123 명령 , 파일 , 디렉토리의 이름으로 화면 상의 컴퓨터 출력에 사용됩니다 .

사용자의 .cvspass 파일을 편집합니다 .DIR를 사용하여 모든 파일을 나열합니다 .Search is complete.

AaBbCc123 화면 상의 컴퓨터 출력과는 반대로 사용자가 입력하는 사항입니다 .

> 로그인

:

AaBbCc123 새로 나오는 용어 , 강조 표시할 용어입니다 .명령줄 변수를 실제 이름이나 가치값으로 바꾸십시오 .

이는 class 옵션입니다 .이를 실행하기 위해서는 반드시 수퍼유저여야 합니다 .파일 삭제 명령어는 DEL filename 입니다 .

AaBbCc123 책 제목 , 장 , 절 Solaris 사용자 설명서6장 데이터 관리를 참조하시기 바랍니다 .

정보 참조 항목

소프트웨어 및 설명서 관련 최신 정보 Sun Java System RFID Software 2.0 릴리스 노트

시작하기 전에 7

Page 8: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

Sun 기술 지원버그를 보고하고 의견을 제출하거나 의문 사항을 질문하려면 다음 Sun Software Support 서비스 온라인에 문의하십시오 .

http://www.sun.com/service/sunone/software

Sun은 여러분의 의견을 환영합니다 .Sun은 설명서의 내용 개선에 노력을 기울이고 있으며 , 여러분의 의견과 제안을 환영합니다 . 다음 전자 메일 주소로 여러분의 의견을 제출하여 주십시오 . [email protected]

전자 메일 제목란에 설명서의 제목과 문서 번호 (819-2617-10 )를 함께 적어 보내주시기 바랍니다 . 문서 번호는 이 문서의 제목 페이지에 있습니다 .

Sun Java™ System RFID 소프트웨어 설치 Sun Java System RFID Software 2.0 설치 설명서

관리 항목 :• RFID 소프트웨어 개요• RFID 이벤트 관리자 구성• 분산 RFID 이벤트 관리자 환경• RFID 시스템 관리• RFID 시스템 JMS 서비스• RFID 정보 서버 구성• 판독기 어댑터 참조• RFID 이벤트 관리자 구성 요소 참조

Sun Java System RFID Software 2.0 관리 설명서

다음을 포함하는 Sun Java™ System RFID 소프트웨어 개발자 정보

• 정보 서버 구조 및 데이터베이스 테이블• RFID 정보 서버 클라이언트 API• RFID 정보 서버 보고 프레임워크• ALE 웹 서비스 API• PML 유틸리티

Sun Java System RFID Software 2.0 개발 안내서

정보 참조 항목

8 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 9: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

장1

Sun Java System RFID 소프트웨어 정보 서버

이 장에서는 Sun Java™ System RFID 소프트웨어 정보 서버에 대해 설명하며 다음 내용으로 구성되어 있습니다 .

■ 9페이지의 "구조 "■ 10페이지의 "데이터베이스 테이블 "

구조Sun Java System RFID 소프트웨어 정보 서버 (IS)는 지원되는 응용 프로그램 서버 중 한 서버에서 실행되는 J2EE 응용 프로그램입니다 . RFID 정보 서버에서는 모든 데이터를 관계형 데이터베이스에 유지합니다 . 모든 JDBC 호환 RDBMS를 데이터 저장소로 사용할 수 있습니다 . 이 릴리스의 Sun Java System RFID 소프트웨어의 경우 다음과 같은 데이터베이스에서 RFID 정보 서버가 지원됩니다 .■ Oracle Database 8.1.7■ Oracle Database 10g■ PostgreSQL 7.4.6

외부 응용 프로그램은 XML 메시지 교환을 통해 RFID 정보 서버와 상호 작용합니다 . 요청 및 응답은 XML로 표시되며 XML 스키마를 따릅니다 . RFID 정보 서버는 HTTP 및JMS 메시지를 전송할 수 있습니다 . RFID 소프트웨어는 프로그래밍 방식으로 RFID 정보 서버를 액세스할 수 있는 Java 클라이언트 라이브러리를 제공합니다 . RFID 정보 서버에서 데이터를 쿼리하고 조작하는 API는 사용된 프로토콜과 관련이 없습니다 . 그림1-1에서 이 구조를 보여 줍니다 . 2장에서는 클라이언트 API 사용에 대해 설명합니다 .

9

Page 10: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

그림 1-1 RFID 정보 서버 구조

데이터베이스 테이블이 절은 Sun Java System RFID 소프트웨어 데이터베이스 테이블 이름 및 설명에 대한 내용으로 구성되어 있습니다 .

표 1-1 RFID 정보 서버 데이터베이스 테이블

테이블 이름 정의 데이터베이스 테이블 키

CONTAINER_TYPE 이 테이블에 있는 각 항목은 컨테이너 유형을 나타냅니다 . 컨테이너 유형은 배포에 관련된 것으로 일반 컨테이너 유형으로는 팰릿 , 케이스 , 내부 팩 및 항목이 있습니다 .

기본 키 : NAME

CONTAINMENT EPC 간에 컨테이너 관계 계층을 유지합니다 . 각 컨테이너는 '부모 ' EPC에 의해 지정됩니다 . 부모 EPC는 '자식 ' EPC가없거나 하나 이상의 '자식 ' EPC를 가질 수 있습니다 . 자식 EPC가 컨테이너자체를 표시할 수 있게 된 이후 상당히많은 계층을 가질 수 있습니다 .

CURRENT_OBSERVATION 현재 센서에 표시된 대로 보고된 태그 목록을 유지합니다 . 이 테이블은 이벤트 관리자의 델타 필터를 사용하는 경우에만 사용할 수 있습니다 . 테이블의 일관성을 유지하려면 IS에 델타 이벤트의 TagsIn 및 TagsOut 속성이 필요합니다 .

외래 키 : SENSOR_EPC

10 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 11: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

주 – 각 센서는 고유 EPC로 정의됩니다 . SENSOR 테이블에 있는 기본 키는 SENSOR_EPC 대신 간단하게 EPC라고도 합니다 .

OBSERVATION_LOG, CURRENT_OBSERVATION 테이블의 항목에는 관찰된 EPC와 구분하기 위해 SENSOR_EPC라는 속성이 있습니다 . SENSOR_EPC는 관찰자를 식별하며 SENSOR 테이블에 있는 외래 키입니다 .

OBSERVATION_LOG 모든 태그 관찰 기록을 보관합니다 .테이블에 있는 각 항목은 관찰자 (센서 )의 EPC, 관찰된 값의 EPC 및 관찰 시간등을 포함하는 관찰을 나타냅니다 .

외래 키 : SENSOR_EPC

ORGANIZATION 상품의 제조업체 또는 배포자입니다 . 기본 키 : ORGANIZATION_ID

PRODUCT 항목의 클래스나 GTIN 또는 UPC 코드로 정의된 SKU(Stock Keeping Unit)입니다 .

기본 키 : PRODUCT_ID

외래 키 : MANUFACTURER_ID

SENSOR EPC에서 고유하게 정의한 RFID 판독기 또는 안테나입니다 .

기본 키 : EPC

TAG_ALLOCATION EPC 숫자 범위를 할당하거나 할당을 해제하며 , 해당 범주의 트랙을 유지합니다 .

기본 키 : TAG_ALLOCATION_ID

TAG_ALLOCATION_LOG 할당된 모든 태그 기록을 보관합니다 .

TX_LOG 기업의 트랜잭션 ID를 EPC 집합과 연결합니다 .일반 트랜잭션 ID에는 PO 번호와 ASN이 포함됩니다 .

UNIT 고유 EPC로 정의된 태그 엔티티입니다 . UNIT 테이블에 있는 항목은 팰릿 , 케이스 또는 추적되는 다른 모든 엔티티를 나타낼 수 있습니다 .

기본 키 : EPC

외래 키 : PRODUCT_ID, UNIT_TYPE

표 1-1 RFID 정보 서버 데이터베이스 테이블 (계속 )

테이블 이름 정의 데이터베이스 테이블 키

1 장 Sun Java System RFID 소프트웨어 정보 서버 11

Page 12: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

12 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 13: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

장2

RFID 정보 서버 클라이언트 API 사용

이 장에서는 RFID 정보 서버와 상호 작용하는 클라이언트 API에 대해 설명하며 다음 내용으로 구성되어 있습니다 .

■ 13페이지의 "RFID 정보 서버에 연결 "■ 15페이지의 "RFID 정보 서버와 데이터 교환 "■ 16페이지의 "RFID 정보 서버 테이블 수정 "■ 18페이지의 "RFID 정보 서버 데이터베이스 테이블 쿼리 "■ 20페이지의 "RFID 정보 서버 응답 처리 "■ 23페이지의 "예외 처리 "

RFID 정보 서버에 연결com.sun.autoid.epcis.client.EpcisConnection 클래스는 응용 프로그램과 RFID 정보 서버 사이의 통신 연결을 나타냅니다 . 연결 클래스의 인스턴스는 다중 요청을 지원할 수 있습니다 . 연결에 사용된 전송 프로토콜은 적절한 구성자를 사용하여 지정됩니다 .

이 절은 다음과 같은 코드 샘플로 구성되어 있습니다 .

■ HTTP를 사용하여 연결 설정 ■ Sun Java System Application Server에서 JMS를 사용하여 연결 설정 ■ BEA WebLogic 8.1에서 JMS를 사용하여 연결 설정■ 연결 종료

13

Page 14: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

코드 예 2-1 HTTP를 사용하여 연결 설정

EpcisConnection conn = new EpcisConnection("http://hostname.xyz.com/epcis/service", // url to the IS service"proxy.xyz.com", // proxy host"8080", // proxy port"myname", // user name"mypassword"); // password

코드 예 2-2 Sun Java System Application Server에서 JMS를 사용하여 연결 설정

EpcisConnection conn = new EpcisConnection("file:///imq_admin_objects", // file system JNDI provider URL"TopicConnectionFactory", // name of the connection factory"epcisTopic", // name of the topic"true", // user JMS (true or false) "myname", // user name"mypassword"); // password

코드 예 2-3 BEA WebLogic 8.1에서 JMS를 사용하여 연결 설정1

1 초기 컨텍스트 팩토리가 지정되어 있지 않은 경우 기본 값은

com.sun.jndi.fscontext.RefFSContextFactory입니다 .

EcpisConnection conn = new EpcisConnection ("weblogic.jndi.WLInitialContextFactory", // JNDI initial context

factory"t3://localhost:7001", // JNDI provider URL"jms/TopicConnectionFactory", // name of the connection factory"jms/epcisTopic", // name of the topic"true","username", // authentication username"password"); // authentication password

14 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 15: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

연결 종료

연결의 close() 메소드를 호출하면 기본 HttpURLConnection 또는 TopicConnection 객체의 close() 메소드가 호출됩니다 . close() 메소드 호출은 finally 블록에서 캡처하는 것이 좋습니다 .

RFID 정보 서버와 데이터 교환전송 객체는 RFID 정보 서버와 응용 프로그램 간에 교환되는 데이터의 클라이언트측 표현입니다 . 전송 객체의 데이터가 하나 이상의 데이터베이스 테이블에 있을 수 있습니다 . 데이터베이스 객체와 Java 클래스의 관계는 표 2-1에 나열되어 있습니다 .

Unit, Product, Organization, Container, Sensor, ContainerType, Transaction 및 Observation은 모두 전송 객체입니다 .

일반적으로 데이터베이스에서 이러한 객체를 삽입 , 쿼리 , 수정 및 삭제할 수 있습니다 . 그러나 Transaction 및 Observation 객체는 이 규칙에 해당되지 않습니다 . UpdateRequest 객체를 사용하여 Observation 또는 Transaction을 기록합니다 . 일단 Observation과 Transaction이 기록되면 수정할 수 없으며 , Observation은 삭제할 수 없습니다 . 이전 Observation을 지울 수 없습니다 . OBSERVATION_LOG에 Observation의 기록이 보관됩니다 .

코드 예 2-4 연결 종료

EpcisConnection conn = null;try { conn = ... //initialize the connection here} catch (Exception e) { e.printStackTrace();} finally { try { conn.close(); } catch (Exception e) { e.printStackTrace(); }}

2 장 RFID 정보 서버 클라이언트 API 사용 15

Page 16: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

RFID 정보 서버 테이블 수정요청 클래스는 정보 서버에 대한 업데이트 , 삭제 또는 쿼리 요청을 나타냅니다 . 모든 요청 클래스는 com.sun.autoid.epcis.client.Request 추상 클래스를 확장합니다 . 요청 클래스의 인스턴스는 회선을 통해 전송될 수 있도록 XML 형식으로 변환됩니다 .

표 2-1 데이터베이스 객체와 Java 클래스의 관계

패키지 이름 Java 클래스 이름 데이터베이스 객체

com.sun.autoid.epcis.client ValueObjectWrapper

Unit UNIT 테이블에 있는 입력 항목입니다 . Unit은 케이스 , 팰릿 또는 추적되는 모든 다른 엔티티일 수 있습니다 .

Product PRODUCT 테이블에 있는 입력 항목입니다 .

Organization ORGANIZATION 테이블에 있는 입력 항목입니다 .

Sensor SENSOR 테이블에 있는 입력 항목입니다 .

Observation OBSERVATION_LOG 또는 CURRENT_OBSERVATION 테이블에 있는 입력 항목입니다 .

ContainerType CONTAINER_TYPE 테이블에 있는 입력 항목입니다 .

TagAllocation TAG_ALLOCATION 테이블에 있는 입력 항목입니다 .

TagAllocationLog TAG_ALLOCATION_LOG 테이블에 있는 입력 항목입니다 .

com.sun.autoid.epcis.business

Container 컨테이너 계층에 해당하는 CONTAINMENT 테이블에 있는 행 집합입니다 .

Transaction TX_ID로 그룹화된 TX_LOG 테이블에 있는 행 집합입니다 .

com.sun.autoid.epcis.dao

PrimaryKey 기본 키 값과 테이블 이름입니다 .

16 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 17: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

표 2-2 요청 클래스 및 코드 예

클래스 설명 코드 예

UpdateRequest RFID 정보 서버 데이터베이스 테이블을 업데이트하기 위한 메소드를 제공합니다 . 이 클래스 프로세스의 인스턴스는 Unit, Product, Organization, Container, Sensor 및 ContainerType 전송 객체에서 작업을 삽입 및 수정합니다 .

코드 예 2-5코드 예 2-6코드 예 2-7

DeleteRequest RFID 정보 서버 테이블에서 입력 항목을 삭제하는 메소드를 제공합니다 . 대부분의 테이블에서 클래스는 PrimaryKey 객체를 사용하여 삭제할 입력 항목을 정의합니다 .

코드 예 2-8코드 예 2-9코드 예 2-10

코드 예 2-5 Unit 삽입

EpcisConnection conn = new EpcisConnection(...)UpdateRequest updateReq = new UpdateRequest(conn);Unit unit = new Unit();unit.setEpc("urn:epc:id:gid:2.1.1");unit.setExpiryDate(Calendar.getInstance());unit.setProductId("1");unit.setUnitType("ITEM");unit.setAttr1("192.168.1.2"); // persists the non-EPC dataUpdateResponse updateResp = updateReq.add(unit);

코드 예 2-6 Transaction 삽입

ArrayList epcs = new ArrayList();epcs.add("urn:epc:id:gid:1.402.1");epcs.add("urn:epc:id:gid:1.301.2");Transaction trans = new Transaction("PO-909", Calendar.getInstance(), null, epcs);updateResp = updateReq.createTransaction(trans);

코드 예 2-7 Observation 삽입

DeltaEvent deltaEvent = ...Sensor sensor = EventUtil.toSensor(deltaEvent);UpdateResponse updateResp = updateReq.postPML(sensor);

2 장 RFID 정보 서버 클라이언트 API 사용 17

Page 18: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

주 – Container의 부모 EPC를 지정하여 Container를 삭제할 수 있습니다 . 이 메소드는 가장 최상위 컨테이너의 내용만 삭제합니다 . 부모 EPC의 자녀가 컨테이너이면 해당 내용은 삭제되지 않습니다 .

주 – TX_LOG 테이블에 기본 키가 없습니다 . 삭제할 트랜잭션은 TX_ID 값으로 정의됩니다 .

RFID 정보 서버 데이터베이스 테이블 쿼리쿼리 조건은 간단한 속성 비교로 표현됩니다 . 고정된 속성 값을 비교할 경우 비교기(eq, lt 및 gt)를 사용할 수 있습니다 . 확장된 속성 값을 비교할 경우 eq 연산자만 유효합니다 . 두 개 이상의 조건을 지정할 경우 AND 연산자를 사용하여 연결합니다 . 조건을 지정하지 않은 경우 쿼리가 선택한 테이블에 있는 모든 항목을 반환합니다 .

코드 예 2-8 Container 삭제

DeleteRequest deleteReq = new DeleteRequest(conn);PrimaryKey pk =new PrimaryKey("urn:epc:id:gid:1.402.1", “CONTAINMENT”);ArrayList pkList =new ArrayList();pkList.add(pk);DeleteResponse deleteResp =deleteReq.deleteByPk(pkList);

코드 예 2-9 Unit 삭제

PrimaryKey pk = new PrimaryKey("urn:epc:id:gid:1.103.1", “UNIT”);ArrayList pkList =new ArrayList();pkList.add(pk);DeleteResponse deleteResp = deleteReq.deleteByPk(pkList);

코드 예 2-10 Transaction 삭제

ArrayList txIdList = new ArrayList();txIdList.add("PO-909");DeleteResponse deleteResp = deleteReq.deleteTxById(txIdList);

18 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 19: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

표 2-3에서는 쿼리 클래스 및 코드 예를 나열합니다 .

표 2-3 쿼리 요청 클래스 및 코드 예

클래스 설명 코드 예

FindByAttrRequest RFID 정보 서버에 있는 지정된 테이블에 대한 쿼리를 처리합니다 .

코드 예 2-11

코드 예 2-12

코드 예 2-13

ContainmentRequest CONTAINMENT 테이블에 대한 쿼리를 처리합니다 . 수용 쿼리 조건은 부모나 자식 관계를 표현할 수 있습니다 . 검색에서 계층의 모든 EPC 또는 직접 EPC만 재귀적으로 반환해야 하는 경우에도 지정할 수 있습니다 .

코드 예 2-14코드 예 2-15

코드 예 2-11 TX_LOG 테이블에 있는 모든 트랜잭션

FindByAttrRequest findReq =new FindByAttrRequest(conn, "TX_LOG");FindByAttrResponse findResp = findReq.process();

코드 예 2-12 OBSERVATION 테이블에서 특정 EPC에 대한 쿼리

FindByAttrRequest findReq =new FindByAttrRequest(conn, "OBSERVATION_LOG");findReq.addCondition("OBSERVATION_VALUE", "urn:epc:id:gid:1.402.1", "eq");findResp = findReq.process();

2 장 RFID 정보 서버 클라이언트 API 사용 19

Page 20: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

RFID 정보 서버 응답 처리정보 서버의 응답 메시지가 응답 객체로 마샬링됩니다 . 모든 응답 클래스는 com.sun.autoid.epcis.client.Response를 확장합니다 . 표 2-4에 응답 클래스의 예가 있습니다 .

코드 예 2-13 UNIT 테이블에서 조건부 쿼리

FindByAttrRequest findReq =new FindByAttrRequest(conn, "UNIT");findReq.addCondition("EXPIRY_DATE", Calendar.getInstance(), "gt");findReq.addCondition("PRODUCT_ID", new Integer(1), "eq");findResp = findReq.process();

코드 예 2-14 EPC의 부모에 대한 재귀 쿼리

ContainmentResponse contReq = new ContainmentRequest(conn);ContainmentResponse contResp = contReq.process("urn:epc:id:gid:1.103.1", ContainmentRequest.PARENT_OF,true);

코드 예 2-15 지정한 EPC의 직접 자식 EPC에 대한 쿼리

ContainmentResponse contResp = contReq.process("urn:epc:id:gid:1.402.1", ContainmentRequest.CHILD_OF,false);

20 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 21: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

표 2-4 응답 클래스 및 코드 예

클래스 설명 코드 예

Update Response 업데이트 요청 상태를 나타냅니다 . 실패 상태는 문자열로 캡처됩니다 . JDBC 드라이버에서 보고된 상태를 그대로 반환합니다 .

코드 예 2-16

DeleteResponse 삭제 요청 상태를 나타냅니다 . 실패 상태가 문자열로 캡처됩니다 .

코드 예 2-17

FindByAttrResponse FindByAttrRequest의 결과로 반환된 모든 전송 객체를 수집합니다 . 전송 객체는 일반적으로 ArrayLists로 반환됩니다 . ArrayList에 요소가 0개 이상 포함될 수 있습니다 .

코드 예 2-18 및

코드 예 2-19

ContainmentResponse 이 클래스는 EPC의 ArrayList 객체나 Container 객체로 결과를 반환할 수 있습니다 . Container가 EPC 간의 계층 관계를 보존하는 반면 ArrayList는 결과 집합의 즉시 이동이 필요한 경우에 유용합니다 .

코드 예 2-20 및 코드 예 2-21

코드 예 2-16 업데이트 요청 결과 테스트

UpdateResponse updateResp = updateReq.modify(unit);System.out.println("ModifyUnit. Success -> " + updateResp.success() + ". Should be true");

코드 예 2-17 삭제 요청 결과 테스트

DeleteResponse deleteResp = deleteReq.deleteByPk(pkList);System.out.println("Success -> " + deleteResp.success());

2 장 RFID 정보 서버 클라이언트 API 사용 21

Page 22: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

코드 예 2-18 반환된 트랜잭션 객체의 개수 인쇄

FindByAttrResponse findResp = findReq.process();System.out.println("Results -> Got " + findResp.getTransactions().size() );

코드 예 2-19 반환된 UNIT 객체의 속성 값 인쇄

FindByAttrRequest findReq = new FindByAttrRequest(conn, "UNIT");findReq.addCondition("EPC", "urn:epc:id:gid:1.103.1", "eq");findResp = findReq.process();System.out.println("Results -> Got " + findResp.getUnits().size() );if (findResp.getUnits().size() > 0){ Unit unit = (Unit)findResp.getUnits().get(0); System.out.println("Got unit with manufacture date : " + unit.getManufactureDate());}

코드 예 2-20 getResultSet() 사용

ContainmentResponse contResp = contReq.process("urn:epc:id:gid:1.103.1", ContainmentRequest.PARENT_OF, true);System.out.println("Results -> Got " + contResp.getResultSet().size() );

코드 예 2-21 Using getRoot()

ContainmentResponse contResp = contReq.process("urn:epc:id:gid:1.103.1", ContainmentRequest.PARENT_OF, true);System.out.println("Results -> Got " + contResp.getRoot().getEpc() );

22 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 23: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

예외 처리패키지 클래스인 com.sun.autoid.epcis.EPCISException을 사용하십시오 .

2 장 RFID 정보 서버 클라이언트 API 사용 23

Page 24: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

24 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 25: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

장3

RFID 정보 서버 보고 프레임워크

이 장은 Sun Java System RFID 소프트웨어 보고 프레임워크의 사용 예제로 구성되어 있습니다 .

EPCIS에서 JasperReports와 함께 보고 프레임워크 사용이 예에서는 SourceForge.net의 오픈 소스 JasperReports 프로젝트를 사용합니다 . JasperReports에서는 무료 오픈 소스 Java 보고 라이브러리를 제공합니다 . JDBC를 포함하여 사용자 정의된 데이터 소스의 데이터를 사용하여 문서를 인쇄할 수 있도록 하는 데 XML 보고서 템플리트를 사용합니다 . 이 출력은 화면 또는 프린터로 전달되거나 PDF, HTML, XLS, CSV 및 XML 형식으로 저장될 수 있습니다 .

25

Page 26: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

1. RFID 정보 서버의 대상 디렉토리를 찾습니다 . target_home 변수를 사용하여 대상 디렉토리를 표시합니다 .

■ Application Server 7의 경우 - target_home은 다음과 같습니다 :

■ Application Server 8.1의 경우 - target_home은 다음과 같습니다 :

2. 응용 프로그램을 target_home으로 복사하기 전에 응용 프로그램 JSP 파일에 데이터베이스의 올바른 매개 변수를 구성합니다 . 예를 들어 , 응용 프로그램의 JDBC 드라이버 , 호스트 이름 , 포트 번호 , 사용자 이름 및 암호는 사용자 환경과 일치해야 합니다 .

3. 응용 프로그램 JSP 파일을 target_home으로 복사합니다 . 예를 들어 , 다음 세 가지 샘플 파일을 복사합니다 .

4. JasperReports 보고서 디자인 XML 파일을 target_home으로 복사합니다 . 예를 들어 , 샘플 파일을 사용하여 다음을 입력합니다 .

5. SourceForge.net에서 JasperReports를 다운로드하지 않은 경우 다운로드합니다 .

http://sourceforge.net/projects/jasperreports/

6. WEB-INF 아래에 lib 디렉토리가 없으면 디렉토리를 만듭니다 .

/var/opt/SUNWappserver7/domains/domain1/server1/applications/j2ee-apps/epcis/sun-rfid-is_war

/var/opt/SUNWappserver/domains/domain1/applications/j2ee-apps/epcis/sun-rfid-is_war

cp ./ReadersStatistics.jsp target_home/.cp ./TagStatistics.jsp target_home/.cp ./TagAssociation.jsp target_home/.

cp ./ReadersStatistics.jrxml target_homecp ./TagStatistics.jrxml target_homecp ./TagAssociation.jrxml target_home

mkdir ${target_home}/WEB-INF/lib

26 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 27: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

7. JasperReports 라이브러리 JAR 파일을 복사합니다 .

주 – ServletException이 발생하고 "java.lang.InternalError: Canít connect to X11 window server using ’:0.0’ as the value of the DISPLAY variable"가 표시되는 버그가 JasperReports 소프트웨어에 있습니다 . 이 문제를 해결하려면 응용 프로그램 서버의 JVM 설정에 다음 JVM 옵션을 추가하고 응용 프로그램 서버를 다시 시작해야 합니다 .

-Djava.awt.headless=true

8. 응용 프로그램 서버를 다시 시작합니다 .

9. 이제 보고서를 볼 수 있습니다 . 27페이지의 "보고 프레임워크를 시작하고 보고서를 표시하려면 " 절차를 참조하십시오 .

▼ 보고 프레임워크를 시작하고 보고서를 표시하려면1. 데이터베이스 서버가 실행되고 있는지 확인합니다 .

2. 웹 브라우저를 열고 RFID 정보 서버 설치에 적절한 URL을 입력하여 RFID 정보 서버 인덱스 페이지에 액세스합니다 .

예를 들어 , 다음과 같이 입력합니다 .

hostname 변수를 RFID 정보 서버가 설치된 시스템의 호스트 이름으로 바꿉니다 . RFID 정보 서버의 인덱스 페이지가 표시됩니다 .

cp ./jasperreports-0.6.3.jar ${target_home}/WEB-INF/lib/

http://hostname/epcis/

3 장 RFID 정보 서버 보고 프레임워크 27

Page 28: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

3. EPCIS 보고 프레임워크 > 판독기 통계를 선택합니다 .

메시지가 나타나면 사용자 이름 및 암호를 입력합니다 . 사용자 이름 및 암호는 보안 파일 영역 사용자를 만들기 위해 응용 프로그램 서버를 구성하는 동안 사용된 것입니다 . 자세한 내용은 Sun Java System RFID Software 2.0 Installation Guide 4장을 참조하십시오 .

28 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 29: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

4. 판독기 EPC 번호 (예 : urn:epc:id:gid:1.700.2)를 입력한 다음 쿼리 전송을 클릭합니다 .

판독기 통계 보고서가 브라우저에 표시됩니다 .

5. 보고 프레임워크 메뉴에서 태그 통계를 선택합니다 .

3 장 RFID 정보 서버 보고 프레임워크 29

Page 30: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

6. 태그 번호 (예 : urn:epc:id:gid:1.301.1)를 입력한 다음 . 쿼리 전송을 클릭합니다 .

태그 통계 보고서가 브라우저에 표시됩니다 .

30 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 31: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

7. 보고 프레임워크 메뉴에서 태그 연관을 선택합니다 .

태그 연관 쿼리 페이지가 표시됩니다 .

8. 태그 번호 (예 : urn:epc:id:gid:1.301.1)를 입력한 다음 쿼리 전송을 클릭합니다 .

3 장 RFID 정보 서버 보고 프레임워크 31

Page 32: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

32 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 33: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

장4

ALE 웹 서비스

이 장에서는 컬렉션 및 필터링이라고도 하는 EPCglobal ALE(Application Level Events, 응용 프로그램 이벤트 ) 사양의 Sun Java System RFID Software 2.0 구현에 대해 설명합니다 . ALE는 보고서를 정의 , 구성 및 요청할 수 있는 WSDL을 포함하는 웹 서비스 사양입니다 . ALE에는 보고서 요청 및 보고서 자체에 대한 XML 스키마도 있습니다 . ALE 구성 요소를 사용하기 전에 ALE(Application Level Events, 응용 프로그램 이벤트 ) 사양 , 버전 1.0을 반드시 숙지해야 합니다 . 이 사양은 EPCglobal 웹 사이트http://www.epcglobalinc.com에 있습니다 .

이 장은 다음 내용으로 구성되어 있습니다 .

■ 33페이지의 "넓은 구조 "■ 34페이지의 "ALE 서비스 구조 "■ 36페이지의 "기타 고려 사항 "■ 37페이지의 "ALE 웹 서비스 클라이언트 (ALEClient) API 사용 "

넓은 구조Sun Java RFID 소프트웨어는 XML 기반 RPC용 Java API(JAX-RPC)를 사용하여 ALE 웹 서비스를 구현합니다 . 이 소프트웨어는 sun-ale-service.war 파일에 포함되어 있으며 Sun Java System Application Server 7, 8.1 또는 BEA WebLogic 8.1 같은 응용 프로그램 서버에 배포됩니다 . 이 서비스는 RFID 이벤트 관리자에 포함된 Jini RMI 서비스에 대해 매개체 역할을 합니다 .

RFID 이벤트 관리자에서 ALE 구현은 ALE라는 새로운 Rio 서비스를 기반으로 합니다 . 이 서비스는 사양에서 WSDL이 아니라 RMI로 설명된 WSDL 메소드를 구현합니다 . 보고서 요청 및 보고서 메시지는 com.sun.autoid.ale.spec 패키지에서 POJO(Plain old Java objects)로 구현됩니다 .

33

Page 34: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

ALE 사양을 준수하려면 JAX-RPC를 사용하여 ALE WSDL을 처리하여 Java 웹 서비스 클래스를 생성합니다 . 이러한 클래스에는 com.sun.autoid.ale.spec에 포함된 POJO 객체와 함께 작동하는 클라이언트측 클래스가 포함되어 있습니다 . ALE WSDL 공통 서버 코드 및 클라이언트 코드는 sun-alesvc-common.jar로 패키지되어 있습니다 . JAX-RPC 코드의 복잡도를 일부 숨기기 위해 ALE 클라이언트 API가 구현되어 있습니다 . "ALE 웹 서비스 클라이언트 API 사용 " 절에서 ALE 클라이언트 API를 설명합니다 . 코드 예 4-2에 ALE 클라이언트 API 사용 샘플이 있습니다 .

ALE XML 스키마는 JAXB를 사용하여 처리되며 생성된 파일은 com.sun.autoid.ale.xml 패키지에 들어 있습니다 . 일반적으로 com.sun.autoid.ale.spec에는 JAXB에서 생성한 객체와 클래스의 일대일 매핑이 있습니다 . com.sun.autoid.ale.XMLUtil 클래스는 스펙 클래스의 JAXB 표시와 POJO 표시 간에 상호 변환할 수 있는 메소드를 제공합니다 .

ALE 기능에는 ALE 요청을 기반으로 판독기 이벤트를 등록해야 하는 요구 사항이 포함되어 있습니다 . 따라서 ALE 서비스는 모든 판독기를 찾고 요청이 활성화되면 ALE 서비스가 판독기의 이벤트 생성자 (커넥터의 com.sun.autoid.logger.REProducer)에 등록됩니다 . 실행 방법은 나중에 설명하겠습니다 .

ALE 서비스 구조ALE 서비스는 RFID 이벤트 관리자에서 Jini RMI로 배포됩니다 . 모든 ALE 보고서 요청은 장치 , 필터 및 커넥터 등을 포함한 이벤트 처리 네트워크로 변환됩니다 .

ALE 사양에는 물리적 판독기와 논리적 판독기에 대한 개념이 포함되어 있습니다 . 논리적 판독기는 하나 이상의 물리적 판독기로 구성될 수 있습니다 . 물리적 판독기나 논리적 판독기를 검색하기 위해 Rio 클래스 com.sun.rio.event.EventDescriptor가 확장되어 RFID 이벤트 관리자 일반 클래스 com.sun.autoid.event.ReaderEventDescriptor를 생성합니다 . 이 클래스는 새로운 logical 및 physical 등록 정보를 추가합니다 . 판독기가 ALE 구현에 참여하려면 물리적 판독기 이름과 논리적 판독기 이름을 정의하는 REProducer가 해당 구성에 있어야 합니다 . 판독기 구성 파일인 RfidConfig.xml에 정의된 물리적 판독기 이름은 /etc/opt/sun/rfidem에 있는 readers.xml 파일에 정의된 서비스 이름과 일치해야 합니다 . 이 구성 요소에 대한 가장 적합한 위치는 판독기 어댑터에 직접 연결되는 것이지만 필수 사항은 아닙니다 .

34 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 35: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

ALE 서비스는 계속해서 Jini 조회 서비스를 모니터링하여 ReaderEventDescriptors를 검색하며 , 이를 사용하여 검색된 판독기 목록을 유지합니다 . ALE 보고서 요청을 받으면 보고서 사양의 논리적 판독기 이름과 물리적 판독기 이름을 사용하여 해당 판독기를 찾습니다 . ReaderEventDescriptor에서 eventID 숫자를 찾아 이를 사용하여 판독기의 올바른 REProducer에 연결되는 REConsumer를 시도합니다 .

ALEEventFilter는 ALE 사양에서 설명한 대로 이벤트 주기를 구현합니다 . 사양에서 설명한 대로 이벤트 주기는 상태 시스템입니다 . 기본적으로 이벤트 주기가 시작되고 태그 이벤트가 수집되며 , 이벤트 주기가 끝날 때 태그 목록이 ALEEventReportFilter로 내보내집니다 . ALEEventFilter를 확실히 이해하려면 ALE 사양을 알고 있어야 합니다 . ECSpec은 이벤트 주기 및 각 이벤트 주기에서 생성된 하나 이상의 보고서에 대해 설명합니다 . 여기에는 읽기 주기가 이벤트 주기에 포함될 논리적 판독기 목록 , 이벤트 주기의 범위를 결정할 방법에 대한 사양 및 이벤트 주기에서 생성될 보고서를 각각 설명하는 사양 목록이 포함됩니다 . 코드 예 4-1에 ECSpec 샘플이 있습니다 .

ALE 사양은 이벤트 주기를 시작하거나 중지할 수 있는 외부 트리거를 식별합니다 . 이러한 트리거는 Iris로 지정되지만 URI 해석은 해당 구현에 따라 다릅니다 . Sun의 구현 방식의 경우 URI는 다음과 같이 실행됩니다 .

■ EPC 패턴 일치 URI - EPC에서 해당 일치 사항을 찾았을 때 트리거가 시작됩니다 .

■ JMS URI - 메시지를 받을 큐나 항목을 지정합니다 .

■ HTTP URI - 메시지를 받기 위해 열어서 읽습니다 .

■ FILE URI - 메시지를 받기 위해 열어서 읽습니다 .

■ TCP URI - 메시지를 받기 위해 열어서 읽은 소켓을 지정합니다 .

■ 항상 시작하는 것이 기본값입니다 .

JMS, HTTP, FILE 및 TCP URI의 경우 페이로드 형식은 간단한 XML 문서입니다 . 예 :

ALE 사양에서 정의한 대로 이벤트 주기가 끝날 때 ALEEventFilter에서 태그 목록 및 태그 이벤트를 생성한 판독기 목록이 있는 ALEEvent를 만듭니다 . 입력을 가져오고 ECReport 객체가 있는 등록 정보를 포함한 MiscEvent를 만드는 ALEEventReportFilter에 이 내용이 전달됩니다 .

ALE 사양에서 보고서 정의와 보고서 출력을 받을 수 있는 보고서 가입은 서로 다른 두 개의 별개 작업입니다 . 따라서 가입 요청이 들어오면 이러한 요청을 처리할 수 있는 전문 로거가 만들어집니다 .

<Trigger fired="true" /><Trigger fired="false"/>

4 장 ALE 웹 서비스 35

Page 36: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

로거의 유형은 다음과 같습니다 .

■ JMS 로거 - 보고서 XML이 JMS 큐나 항목에 대한 페이로드 메시지로 포함됩니다 .

■ 파일 로거 - 보고서 XML이 로컬 파일에 기록됩니다 .

■ TCP 로거 - 보고서가 소켓에 기록됩니다 .

■ 폴 로거 - 보고서가 폴 요청에 대한 문자열로 반환됩니다 .

■ 다른 모든 로거는 기록을 위해 여는 URL로 처리됩니다 .

적어도 가입자 한 사람이 등록되어 보고서를 받을 수 있을 때까지 이벤트 주기를 시작할 수 없습니다 . 가입이 등록되면 해당하는 Logger가 만들어지고 ALEEventReportFilter에 동적으로 연결됩니다 . 마찬가지로 가입이 제거되면 Logger가 중지되며 ALEEventReportFilter에서 연결이 끊어집니다 .

마지막으로 보고서 사양이 "정의되어 있지 않으면 " 모든 처리 구성 요소가 중지되고 ALE 서비스에서 동적으로 제거됩니다 .

기타 고려 사항ALE이 RFID 이벤트 관리자 구성 요소로 구현되었기 때문에 다른 구성 요소를 사용하는 것과 동일한 방식으로 이 구성 요소를 사용할 수 있습니다 . 구성 요소 등록 정보를 통해 ECSpec이 설정될 수 있도록 준비가 되었습니다 . 이런 방식으로 필요한 경우 ALE 구성 요소를 영구적으로 판독기에 연결할 수 있습니다 . 이를 데모하는 샘플 구성 파일이 Sun Java System RFID Software 2.0 관리 설명서 부록 C에 있습니다 .

코드 예 4-1 샘플 ECSpec 파일

<?xml version="1.0" encoding="UTF-8"?><ECSpec xmlns="urn:epcglobal:ale:xsd:1"

includeSpecInReports="true"creationDate="2005-02-07T13:42:40.790-05:00"schemaVersion="1.0">

36 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 37: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

ALE 웹 서비스 클라이언트 (ALEClient) API 사용JAX-RPC 코드의 복잡도를 일부 숨기기 위해 ALE 클라이언트 API가 구현됩니다 .

ALE 웹 서비스 클라이언트 인터페이스 및 구현ALE 클라이언트 API 인터페이스는 com.sun.autoid.ale.AleAPI.class 파일에 있습니다 . ALE 클라이언트 API의 구현은 com.sun.autoid.ale.client.ALEClient.class에 있습니다 . 이 두 개의 클래스는 모두 sun-alesvc-common.jar로 패키지되어 있습니다 .

<logicalReaders xmlns=""><logicalReader>Reader</logicalReader>

</logicalReaders><boundarySpec xmlns=""><startTrigger>http://localhost/start</startTrigger><duration>2000</duration><stableSetInterval>0</stableSetInterval>

</boundarySpec><reportSpecs xmlns=""><reportSpec reportIfEmpty="false"

reportName="reporT"reportOnlyOnChange="false">

<reportSet set="CURRENT"/><output includeCount="false" includeList="true"/>

</reportSpec></reportSpecs>

</ECSpec>

코드 예 4-1 샘플 ECSpec 파일 (계속 )

4 장 ALE 웹 서비스 37

Page 38: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

샘플 프로그램 - MyAleClient.javasun-alesvr-common.jar JAR 파일 및 sun-rfid-common.jar JAR 파일을 개발자 디렉토리의 lib 디렉토리에 복사해야 합니다 . RFID 이벤트 관리자와 선택 구성 요소가 있고 ALE 웹 서비스가 설치된 시스템에서 이 두 파일을 찾을 수 있습니다 . 디렉토리 이름은 install_dir/lib입니다 . 부록 C에 있는 기본 디렉토리는 Sun Java System RFID Software 2.0 설치 설명서를 참조하십시오 .

■ sun-alesvr-common.jar 및 sun-rfid-common.jar를 install_dir/lib에서 install_dir/samples/ale/aleclient/lib로 복사합니다 .

MyAleClient 샘플 프로그램에서는 ALE 웹 서비스 클라이언트 인터페이스인 AleAPI.class를 사용하고 구현 클래스인 ALEClient.class가 ALE 웹 서비스 구성 요소와 함께 패키지되어 있습니다 . MyAleClient.java 샘플 프로그램 및 환경의 샘플 디렉토리는 install_dir/samples/ale/aleclient에 설치됩니다 . ALE 웹 서비스 구성 요소를 설치하려면 Sun Java System RFID Software 2.0 설치 설명서 3장을 참조하십시오 .

샘플 개발 환경다음 절에서는 샘플 개발 환경에 대해 설명합니다 . 필요한 환경을 설정하고 Sun ALE 웹 서비스 클라이언트 API를 사용하여 ALE 웹 서비스 응용 프로그램 개발을 신속하게 시작할 수 있도록 도와주기 위해 이러한 샘플이 제공됩니다 .

샘플 개발 디렉토리

샘플 개발 디렉토리 트리는 코드 예 4-2에 있습니다 .

코드 예 4-2 샘플 개발 디렉토리 트리

aleclient- src (contains the source)* com/sun/epcglobal/aleclient/MyAleClient.java

- classes (contains the compiled class files)- lib (contains Sun RFID and ALE JAR files)

- sun-alesvc-common.jar- sun-rfid-common.jar

- xml (contains the ECSpec XML file)- ECSpec.xml

* build.xml* build_properties.xml

38 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 39: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

Java Web Services Developer Pack 1.5

프로그램을 컴파일하고 실행하는 데 Java WSDP(Java Web Services Developer Pack) 1.5가 필요합니다 . 코드 예 4-3에 Java WSDP의 디렉토리 구조가 있습니다 .

샘플 ANT Build XML 파일

MyAleClient를 구축하고 실행하는 데 샘플 ANT build.xml 및 build_properties.xml을 사용할 수 있습니다 . 이 파일은 install_dir/samples/ale/elegant 디렉토리에 있습니다 .

코드 예 4-3 샘플 Java WSDP 1.4 디렉토리 트리

jwsdp- jaxb/lib/*.jar- jaxp/lib/*.jar- jaxp/lib/endorsed/*.jar- jaxrpc/lib/*.jar- jwsdp-shared/lib/*.jar- saaj/lib/*.jar

4 장 ALE 웹 서비스 39

Page 40: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

40 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 41: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

장5

PML 유틸리티

이 장에서는 Sun Java System RFID Software PML 유틸리티에 대해 설명하며 다음 내용으로 구성되어 있습니다 .

■ 41페이지의 "소개 "■ 42페이지의 "PML Core를 사용한 태그 정보 캡처 "■ 43페이지의 "PML 유틸리티 패키지 "■ 46페이지의 "클래스 경로 요구 사항 "■ 47페이지의 "PML 패키지에 대한 UML 클래스 다이어그램 "

소개PML Core(Physical Markup-Language Core)의 목적은 RFID 기반 구조의 센서 (예 : RFID 판독기 )가 캡처한 데이터 교환을 위한 표준화된 형식을 제공하는 데 있습니다 . 이벤트 관리자와 다른 응용 프로그램 사이에서 이 데이터가 교환됩니다 . PML Core는 캡처된 데이터 값 전송을 위한 교환 형식을 정의하는 XML 스키마 집합을 제공합니다 .

PML 유틸리티 Java 라이브러리 (pml-util.jar)는 PML Core 메시지를 구문 분석하고 조작할 수 있는 보조 클래스를 제공합니다 . 이 라이브러리는 이벤트 관리자와 상호 작용하는 모든 응용 프로그램에서 사용하기 위한 것입니다 .

지원되는 버전은 PML_Core 버전 1.0(AutoID Center 권장 2003년 9월 15일 )입니다 .

41

Page 42: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

PML Core를 사용한 태그 정보 캡처이 절에서는 태그 정보 캡처를 위한 샘플 코어 메시지에 대해 설명합니다 .

코드 예 5-1 태그 정보 캡처를 위한 샘플 코어 메시지

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!-- The root element of PML Core --><Sensor xmlns="urn:autoid:specification:interchange:PMLCore:xml:schema:1"><!-- The EPC of the reader specified in the reader adapter properties -->

<ns1:ID xmlns:ns1="urn:autoid:specification:universal:Identifier:xml:schema:1">urn:epc:id:gid:1.1.100

</ns1:ID><!-- The root element for an observation -->

<Observation> <ns2:ID xmlns:ns2=

"urn:autoid:specification:universal:Identifier:xml:schema:1">2</ns2:ID>

<!-- The time when the observation was recorded by the reader adapter -->

<DateTime>2004-05-21T18:28:16.633-07:00</DateTime><!-- If the PML is generated from a Delta Event the value of Command is either TagsIn or TagsOut -->

<Command>TagsOut</Command><!-- A tag observation -->

<Tag> <!-- The EPC of the observed tag in identity URI format -->

<ns3:ID xmlns:ns3="urn:autoid:specification:universal:Identifier:xml:schema:1">urn:epc:id:gid:1.1.110</ns3:ID>

</Tag> <Tag><ns4:ID xmlns:ns4=

"urn:autoid:specification:universal:Identifier:xml:schema:1">urn:epc:id:gid:1.1.105</ns4:ID>

</Tag><Tag>

<ns5:ID xmlns:ns5="urn:autoid:specification:universal:Identifier:xml:schema:1">urn:epc:id:gid:1.1.104</ns5:ID>

</Tag></Observation>

</Sensor>

42 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 43: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

PML 유틸리티 패키지이 절은 다음과 같은 PML 유틸리티 패키지에 대한 내용으로 구성되어 있습니다 .

■ 패키지 - com.sun.autoid.pmlcore.pml■ 패키지 - com.sun.autoid.pmlcore.pmlparser

PML Core 패키지JAXB 컴파일러를 사용하는 PML Core XML 스키마 문서에서 com.sun.autoid.pmlcore.pml 패키지가 생성됩니다 . 기존 Java 객체 그래프를 통과하거나 새로운 그래프를 만드는 데 이 생성된 클래스를 사용할 수 있습니다 . 코드 예 5-2를 참조하십시오 .

코드 예 5-2 새 PML 메시지를 만들기 위한 샘플 XML

/** * Create a sample PML Core XML message. */ public SensorType createPMLCore() { SensorType sensor = null; try { PmlParser pmlParser = new PmlParser(); ObjectFactory objFactory = pmlParser.getPMLObjectFactory(); sensor = objFactory.createSensor();

/* Create the reader EPC */ IdentifierType idType = objFactory.createIdentifierType(); idType.setValue("urn:epc:id:gid:1.700.1"); sensor.setID(idType); /* Create the Observation object */ List obsList = sensor.getObservation(); ObservationType obs = objFactory.createObservationType(); obsList.add(obs); /* Timestamp of the observation */ obs.setDateTime(Calendar.getInstance()); /* The command element is optional.

지정된 경우 TagsIn 또는 TagsOut입니다 .*/

5 장 PML 유틸리티 43

Page 44: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

obs.setCommand("TagsIn"); /* Observation ID is currently ignored */ idType = objFactory.createIdentifierType(); idType.setValue("1"); obs.setID(idType); /* create Tags and assign them to the Observation object */ TagType tag = objFactory.createTagType(); idType = objFactory.createIdentifierType(); idType.setValue("urn:epc:id:gid:10.10.1"); tag.setID(idType); obs.getTag().add(tag); tag = objFactory.createTagType(); idType = objFactory.createIdentifierType(); idType.setValue("urn:epc:id:gid:10.10.2"); tag.setID(idType); obs.getTag().add(tag); /* debug */ System.out.println("Sensor BEGIN"); SensorUtil.dump((com.sun.autoid.pmlcore.pml.Sensor)sensor); System.out.println("Sensor END"); } catch (JAXBException jbe) { jbe.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return sensor; }

코드 예 5-2 새 PML 메시지를 만들기 위한 샘플 XML(계속 )

44 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 45: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

PML 구문 분석기 패키지

PmlParser로 XML 파일 언마샬링

표 5-1 데이터베이스 테이블

Java 클래스 설명자

PmlParser PML(Product Markup Language)을 읽고 Java 객체 그래프를 만드는 구문 분석기입니다 .

SensorUtil 센서 JAXB 트리를 덤프하는 클래스입니다 .

코드 예 5-3 PML Core XML 파일을 언마샬링하는 샘플 XML

/* Unmarshall a PML Core XML file */ public Sensor pmlCoreFromFile() { Sensor sensor = null; try {

/* Create an instance of PmlParser */ PmlParser pmlParser = new PmlParser(); /* Call the unmarshall method */ sensor = pmlParser.unmarshalPML(new File("./pml_sample.xml")); /* debug message */ System.out.println("Sensor BEGIN"); SensorUtil.dump(sensor); System.out.println("Sensor END"); } catch (JAXBException jbe) { jbe.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return sensor; }

5 장 PML 유틸리티 45

Page 46: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

클래스 경로 요구 사항PML 유틸리티를 사용하는 응용 프로그램을 컴파일하고 실행하는 데 사용된 JAR 파일(JAXB 1.0.4 및 Java WSDP 1.5의 해당 종속 JAR 파일 )이 코드 예 5-4에 표시되어 있습니다 .

코드 예 5-4 PML 유틸리티 Jar 파일

$JWSDP_HOME/jaxb/lib/jaxb-api.jar$JWSDP_HOME/jaxb/lib/jaxb-impl.jar$JWSDP_HOME/jaxb/lib/jaxb-libs.jar

$JWSDP_HOME/jwsdp-shared/lib/namespace.jar$JWSDP_HOME/jwsdp-shared/lib/relaxngDatatype.jar$JWSDP_HOME/jwsdp-shared/lib/jax-qname.jar$JWSDP_HOME/jwsdp-shared/lib/xsdlib.jar

$JWSDP_HOME/jaxp/lib/jaxp-api.jar$JWSDP_HOME/jaxp/lib/endorsed/dom.jar$JWSDP_HOME/jaxp/lib/endorsed/sax.jar$JWSDP_HOME/jaxp/lib/endorsed/xercesImpl.jar

46 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월

Page 47: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

PML 패키지에 대한 UML 클래스 다이어그램

5 장 PML 유틸리티 47

Page 48: Sun Java System RFID Software 2 - Oracle Help Center · 2010-12-23 · 6 Sun Java System RFID Software 2.0 개발 안내서• 2005 년 4 월 주 – Sun 은 이 설명서에 언급된

48 Sun Java System RFID Software 2.0 개발 안내서 • 2005 년 4 월