본문 바로가기

기술 이야기/WildFly/JBossEAP

JBoss EAP6 서버의 공통 라이브러리(Shared Library) 형태의 등록

# 질문

JBoss 도입되는 버전에서 서버전역에서 사용가능한 공통 라이브러리 설정하는 방법을 알고 싶습니다. 

# 답변

아래와 같이 라이브러리를 등록하시면 웹 애플리케이션 내의 클래스에서 사용하실 수 있습니다.


JBoss는 modules라는 디렉토리 하위에 클래스 로딩을 osci과 같은 형태로 진행하므로 필요한 클래스를 modules 하위에 등록합니다.


라이브러리가 제공되는 경우 하위의 3번 작업 부터 하시면 됩니다.


1. 코드 작성

 package com.osci;


public class Test {

    public Test() {

        System.out.println("Test Created");

    }


    public void test() {

        System.out.println("Test Called!");

    }

}



2. Compile 


 javac -d . Test.java

 jar -cvf test.jar com/


3. 모듈의 등록


3.1 모듈을 등록하기 위하여 JBoss 엔진 디렉토리 하위의 /opt/jboss-eap-6.1/modules/system/layers/base/로 이동합니다.


3.2 아래의  com/osci 디렉토리는 사용하는 라이브러리의 root 패키지명입니다.

mkdir -p com/osci/main


3.3 디렉토리를 이동합니다.

cd com/osci/main


3.4 위의 test.jar 파일을 main 디렉토리의 하위로 위치시킵니다.

그리고 module.xml 파일을 생성하여 아래와 같이 입력합니다.

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


<module xmlns="urn:jboss:module:1.1" name="com.osci">

    <resources>

        <resource-root path="test.jar"/>

        <!-- Insert resources here -->

    </resources>


    <dependencies>

    </dependencies>

</module>


resource-root path는 등록할 라이브러리의 실제 이름이며, /opt/jboss-eap-6.4/modules/system/layers/base/com/osci/main 하위에 위치해야 합니다. 여기서 com/osci는 패키지의 이름입니다.

(또는 /opt/jboss-eap-6.4/modules.ext/com/osci/main)


4. standalone-ha.xml 파일에 라이브러리 등록


eus11/configuration/standalone-ha.xml 파일의 profile중 domain:ee 부분을 찾아 아래와 같이 입력합니다. 굵은 부분이 추가된 부분입니다. com.osci의 이름음 위의 module.xml의 이름입니다.


<subsystem xmlns="urn:jboss:domain:ee:1.1">

            <spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>

            <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement>

            <global-modules>

                <module name="com.osci" slot="main" />

            </global-modules>


</subsystem>


5. 테스트 진행 

Test.jsp를 통해 테스트를 진행합니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"

    import="com.osci.*"

    %>


<%

    Test test = new Test();

    test.test();

%>

주의할 점은 dependency가 있는 라이브러리의 경우 해당 라이브러리들을 각각 등록해 주셔야 합니다.