페이지

2013년 5월 21일 화요일

[XMPP] Openfire 플러그인 개발하기

1. 들어가기

    Openfire는 XMPP 프로토콜을 지원하는 메시징 서버이다. 그리고 새로운 기능을 추가하고 Admin Console에 UI를 추가할 수 있도록 플러그인 방식을 지원하고 있다. 이 문서는 Openfire를 리눅스 서버에 설치해서 실행하고 윈도우 환경에서 플러그인을 개발하는 과정을 간략히 정리한 것이다.

2. 개발 및 운영 환경

    2.1 개발 환경

        Windows 7 (64-bit)
        JDK 1.6.0_45 (64-bit)
        Ant 1.7.1
        Openfire 3.8.1 소스

    2.2 운영 환경

        Ubuntu 12.04 LTS (64-bit)
        JDK 1.6.0_45 (64-bit)
        Openfire 3.8.1

3. Openfire 설치 및 실행

    3.1 다운로드

        아래의 위치에서 Openfire 3.8.1을 다운로드한다.

            http://www.igniterealtime.org/downloads/download-landing.jsp?file=openfire/openfire_3_8_1.tar.gz

    3.2 설치

        아래와 같이 압축을 풀고 원하는 위치로 옮긴다.

            $ tar -xzvf openfire_3_8_1.tar.gz
            $ mv openfire /opt

    3.3 실행

        아래의 명령으로 Openfire를 실행한다.

            $ /opt/openfire/bin/openfire start

    3.4 서버 설정 및 Admin Console 접속

        브라우져를 열고 아래의 URL 주소로 접속하면 서버 설정 과정을 거치게 된다. 설정이 끝나면 Admin Console 화면이 나타난다.

            http://<host_address>:9090

4. 플러그인 개발

    4.1 Openfire 3.8.1 소스 다운로드

        http://www.igniterealtime.org/downloads/source.jsp

    4.2 전체 플러그인 빌드

        $ ant plugins

    4.3 플러그인 작성

        단원 "5. 플러그인 작성" 참조.

    4.4 하나의 플러그인 빌드

        $ ant -Dplugin=<pluginName> plugin

    4.5 플러그인 설치

        1) Admin Console의 Plugins 탭으로 이동한다.

        2) "파일 선택" 버튼을 눌러 아래의 위치에서 설치하고자 하는 플러그인 파일을 선택한다.

            openfire_src\target\openfire\plugins

        3) "Upload Plugin" 버튼을 누른다.

5. 플러그인 작성

    이번 단원에서는 최소한의 파일들만으로 플러그인을 작성해 보았다. 플러그인 작성에 대해 보다 자세히 알아 보고자 한다면 Openfire Plugin Developer Guide를 읽어 보기 바란다.

    5.1 디렉토리 생성

        1) 다음 위치에 helloWorld 디렉토리를 만든다.

            openfire_src\src\plugins

        2) 아래와 같이 하부 디렉토리 구조와 파일을 만든다.

            helloWorld
                src
                    java
                        com
                            myplugin
                                hello
                                    HelloWorldPlugin.java
                    web
                        index.html
                plugin.xml

    5.2 plugin.xml

        <?xml version="1.0" encoding="UTF-8"?>
        <plugin>
            <class>com.myplugin.hello.HelloWorldPlugin</class>
            <name>HelloWorld</name>
            <description>HelloWorld plugin</description>
            <author>trvoid</author>
            <version>1.0</version>
            <date>05/16/2013</date>
            <url>http://trvoid.blogspot.com</url>
            <minServerVersion>3.0.0</minServerVersion>
            <licenseType>internal</licenseType>

            <adminconsole>
                <tab id="tab-helloworld" name="HelloWorld"
                        description="Click to manage HelloWorld">
                    <sidebar id="sidebar-hello-config" name="Configuration">
                        <item id="hello-intro" name="Introduction"
                                url="index.html"
                                description="Click to view Introduction"/>
                    </sidebar>
                </tab>
            </adminconsole>
        </plugin>

    5.3 HelloWorldPlugin.java

        package com.myplugin.hello;

        import org.jivesoftware.openfire.container.Plugin;
        import org.jivesoftware.openfire.container.PluginManager;

        import java.io.File;

        public class HelloWorldPlugin implements Plugin {
            public void initializePlugin(PluginManager manager, File pluginDirectory) {
             
            }

            public void destroyPlugin() {
             
            }
        }

    5.4 index.html

        <html>
            <head>
                <title>HelloWorld</title>
                <meta name="pageID" content="hello-intro"/>
            </head>
            <body>
                <h1>Hello World!</h1>
            </body>
        </html>

6. 참고 자료

    가. Installation Guide
    나. Openfire Plugin Developer Guide

댓글 없음:

댓글 쓰기

국어 맞춤법 참고 자료

  제목 설명(인용) 출처 IT 글쓰기와 번역 노트 IT 기술 문서 및 서적을 집필/번역/교정하면서 얻은 경험/정보/지식을 공유합니다. 전뇌해커 [우리말 바루기] ‘대로’의 띄어쓰기 명사 뒤에서는 붙여 쓰고, 그 외에는 띄어 쓴다고 생각하면 쉽다. 다...