상세 컨텐츠

본문 제목

Eclipse에 JBoss Server플러그인 설치하기

프로그래밍/JAVA

by 라제폰 2015. 2. 10. 15:03

본문

Eclipse에 JBoss Server플러그인 설치하기

Summary : JBoss는 무료로 사용할 수 있는 강력한 Application Server이다. EJB를 공부하는 개발자나 실무에 EJB를 적용하려는 이들에게 손쉽고 무료로 이용할 수 있다. 따라서 자바지기 강좌에서 Eclipse에 JBoss 플러그인을 설치하여 사용이 가능하도록 해본다. 계속되는 강좌를 통하여 JBoss세팅을 통하여 EJB개발에 대한 강좌도 진행할 생각이다.

JBoss Application Server 설치하기

JBoss 플러그인을 설치하기에 앞서 JBoss를 설치해야 한다. JBoss는 Tomcat의 설치만큼이나 간단하다. JBoss는 EJB를 위한 Application Server이기 때문에 JSP 서비스가 가능하도록 하기 위하여 Tomcat이 내장되어 있는 JBoss를 설치한다.

JBoss를 설치하는 과정은 다음과 같다.

1. http://sourceforge.net/project/showfiles.php?group_id=22866&release_id=129791 에 접근하여 Tomcat이 내장되어 있는 가장 최신의 버전을 다운 받는다. 2003년 1월 7일 현재 jboss-3.0.4_tomcat-4.1.12.zip이 안정화된 가장 최신 버전이다.

jboss-3.0.4_tomcat-4.1.12.zip을 다운 받을 수 있는 URL은 http://prdownloads.sourceforge.net/jboss/jboss-3.0.4_tomcat-4.1.12.zip?download 이다.

http://www.jboss.org/downloads.jsp 에서도 다운 받을 수 있다.

2. 다운받은 Zip파일을 개발자들이 원하는 위치에서 압축을 푼다. 현재 필자는 D:\Server\jboss-3.0.4_tomcat-4.1.12 에 설치했다고 가정하고 설명한다.

3. 압축을 푼 후 시스템 환경변수에 JBOSS_DIST=D:\Server\jboss-3.0.4_tomcat-4.1.12를 세팅한다.

4. JBoss가 정상적으로 설치되었는지를 확인하기 위하여 JBoss설치 디렉토리\bin\run.bat을 실행시킨다.

5. 뭐가 뭔지 모를 Log들이 한참을 올라간다. 로그 마지막에 "Started in 0m:39s:827ms"이 출력되면 JBoss가 시작된 것이다.

6. http://localhost:8080/jmx-console/index.jsp 를 실행시켜 
다음과 같은 화면이 나타나면 JBoss가 정상적으로 설치된 것이다. 생각보다 JBoss의 설치가 간단함을 알 수 있다.

JBoss 플러그인 설치하기

JBoss 플러그인은 http://www.genuitec.com/products_easie.htm 에서 제공하는 플러그인을 이용하여 Eclipse와 연동하도록 하겠다.

JBoss 플러그인을 설치하는 과정은 다음과 같다.

1. http://www.genuitec.com/products_easie.htm 에서 Eclipse버전에 해당하는 JBoss플러그인을 다운받는다. 대부분 2002년 4월 9일 이후에 만들어진 Eclipse라고 생각하고 여기서는 버전 1.0.6을 이용한다.

1.0.6을 다운 받을 수 있는 URL은 http://www.genuitec.com/products/EASIEJBoss1.0.6.zip 이다.

2. 다운 받은 파일을 개발자들이 원하는 곳에 압축을 푼다.

3. 압축을 푼 디렉토리\plugin 아래에 보면 com.genuitec.eclipse.easie.core_1.0.0, com.genuitec.eclipse.easie.jboss_1.0.6두개의 package가 생길 것이다. 이 모두를 [Eclipse install dir]\plugins에 복사하면 된다.

4. Eclipse를 시작한다. 만약 Eclipse가 시작된 상태라면 재시작해야한다.

5. Eclipse Menu에서 Window > Preferences > Option "Jboss"로 이동한다.

6. 위 화면을 보면 총 6개의 입력 필드가 있다.

Jboss Home Directory : JBoss를 설치한 홈 디렉토리

XML Document Builder Factory Class : org.apache.crimson.jaxp.DocumentBuilderFactoryImpl

SAX Parser Factory Class : org.apache.crimson.jaxp.SAXParserFactoryImpl

Optional Java VM Arguments : 필요한 경우 넣는다.

Optional Program Arguments : 필요한 경우 넣는다. 위 그림의 -c default는 default 옵션으로 시작하라는 내용.

Optional Shutdown Arguments : 필요한 경우 넣는다.

위 4개 항목을 입력한다. 아래 두 항목은 입력하지 않아도 된다. JBoss를 사용하다 필요할 경우 추가해 주면 된다. 이번 강좌는 Eclipse에 JBoss를 플러그인하는 강좌이기 때문에 위에서 4개의 항목에 대해서만 값을 입력하도록 한다.

7. Eclipse Menu에서 Window > Customize Perspective > Other > EASIE Jboss의 체크박스에 체크해 주면 Eclipse의 Toolbar에 Jboss의 시작과 종료를 위한 버튼이 나타난다.

8. Start Jboss버튼을 클릭하면 JBoss가 실행됨을 콘솔창을 통하여 확인할 수 있다. JBoss의 run.bat을 실행했을 때 나타나던 로그들이 콘솔창에서 올라가는 것을 확인할 수 있다.

9. http://localhost:8080/jmx-console/index.jsp 을 실행하여 JBoss단독으로 실행했을 때와 같은 결과가 나타나는지 확인한다. 같은 화면이 나타나면 Eclipse에 JBoss 플로그인이 정상적으로 세팅되었다.

EJB 테스트하기

지금까지 JBoss Application Server를 플러그인을 이용하여 Eclipse에 붙였다. 간단한 HelloWorld를 출력하는 EJB예제를 통하여 JBoss가 정상적으로 설정되었는지를 확인해 보겠다.

/*
 * Generated file - Do not edit!
 */
package net.javajigi.hello;

import java.lang.*;
import javax.ejb.SessionBean;

/**
 * Remote interface for Hello.
 * @xdoclet-generated at 2003-01-05 오후 3:54:48
 */
public interface Hello
   extends javax.ejb.EJBObject
{

   public java.lang.String helloWorld(  ) throws java.rmi.RemoteException;

}

/*
 * Generated file - Do not edit!
 */
package net.javajigi.hello;

import java.lang.*;
import javax.ejb.SessionBean;

/**
 * Home interface for Hello. Lookup using {1}
 * @xdoclet-generated at 2003-01-05 오후 3:54:47
 */
public interface HelloHome
   extends javax.ejb.EJBHome
{
   public static final String COMP_NAME="java:comp/env/ejb/Hello";
   public static final String JNDI_NAME="jndi/HelloBean";

   public net.javajigi.hello.Hello create() throws javax.ejb.CreateException, java.rmi.RemoteException;

}

/*
 * Generated file - Do not edit!
 */
package net.javajigi.hello;

import java.lang.*;
import javax.ejb.SessionBean;

/**
 * Session layer for Hello.
 * @xdoclet-generated at 2003-01-05 오후 3:54:48
 */
public class HelloSession
   extends net.javajigi.hello.HelloBean
   implements javax.ejb.SessionBean
{

   static final long serialVersionUID = 430399660870769569L;

   public void ejbActivate() 
   {
   }

   public void ejbPassivate() 
   {
   }

   public void setSessionContext(javax.ejb.SessionContext ctx) 
   {
   }

   public void unsetSessionContext() 
   {
   }

   public void ejbRemove() 
   {
   }

   public void ejbCreate() 
   {
   }

}

/*
 * Generated file - Do not edit!
 */
package net.javajigi.hello;

import java.lang.*;
import javax.ejb.SessionBean;

import javax.rmi.PortableRemoteObject;
import javax.naming.NamingException;
import javax.naming.InitialContext;

import java.util.Hashtable;

/**
 * Utility class for Hello.
 * @xdoclet-generated at 2003-01-05 오후 3:54:50
 */
public class HelloUtil
{
   // Home interface lookup methods

   /**
    * Obtain remote home interface from default initial context
    * @return Home interface for Hello. Lookup using COMP_NAME
    */
   public static net.javajigi.hello.HelloHome getHome() throws NamingException
   {
      InitialContext initialContext = new InitialContext();
      try {
         java.lang.Object objRef = initialContext.lookup(net.javajigi.hello.HelloHome.COMP_NAME);
         net.javajigi.hello.HelloHome home = (net.javajigi.hello.HelloHome)PortableRemoteObject.narrow(objRef, net.javajigi.hello.HelloHome.class);
         return home;
      } finally {
         initialContext.close();
      }
   }

   /**
    * Obtain remote home interface from parameterised initial context
    * @param environment Parameters to use for creating initial context
    * @return Home interface for Hello. Lookup using COMP_NAME
    */
   public static net.javajigi.hello.HelloHome getHome( Hashtable environment ) throws NamingException
   {
      InitialContext initialContext = new InitialContext(environment);
      try {
         java.lang.Object objRef = initialContext.lookup(net.javajigi.hello.HelloHome.COMP_NAME);
         net.javajigi.hello.HelloHome home = (net.javajigi.hello.HelloHome)PortableRemoteObject.narrow(objRef, net.javajigi.hello.HelloHome.class);
         return home;
      } finally {
         initialContext.close();
      }
   }
}

package net.javajigi.hello;

import javax.ejb.SessionBean;

/**
 * @ejb:bean name="Hello"
 *	jndi-name="jndi/HelloBean"
 *	type="Stateless" 
**/
public abstract class HelloBean implements SessionBean {


	/**
	 * @ejb:interface-method
	 *	tview-type="remote" 
	**/
	public String helloWorld(){ 
	 	return "Hello from JavaJiGi"; 
	}
}

EJB플러그인의 Lomboz를 이용하여 생성한 소스라 생각보다 복잡하다. 하지만 위 소스에서 하는 일은 helloWorld()를 호출할 경우 "Hello from JavaJiGI"라는 메세지를 출력하는 역할만을 한다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar >

   <description>No Description.</description>
   <display-name>Generated by XDoclet</display-name>

   <enterprise-beans>

      <!-- Session Beans -->
      <session >
         <description>No Description.</description>

         <ejb-name>Hello</ejb-name>

         <home>net.javajigi.hello.HelloHome</home>
         <remote>net.javajigi.hello.Hello</remote>
         <ejb-class>net.javajigi.hello.HelloSession</ejb-class>
         <session-type>Stateless</session-type>
         <transaction-type>Container</transaction-type>

      </session>

     <!--
       To add session beans that you have deployment descriptor info for, add
       a file to your merge directory called session-beans.xml that contains
       the <session></session> markup for those beans.
     -->

      <!-- Entity Beans -->

     <!--
       To add entity beans that you have deployment descriptor info for, add
       a file to your merge directory called entity-beans.xml that contains
       the <entity></entity> markup for those beans.
     -->

      <!-- Message Driven Beans -->
     <!--
       To add message driven beans that you have deployment descriptor info for, add
       a file to your merge directory called message-driven-beans.xml that contains
       the <message-driven></message-driven> markup for those beans.
     -->

   </enterprise-beans>

   <!-- Relationships -->

   <!-- Assembly Descriptor -->
   <assembly-descriptor >

   <!-- finder permissions -->

   <!-- transactions -->

   <!-- finder transactions -->
   </assembly-descriptor>

</ejb-jar>

지금까지 작성한 예제를 jar로 묶어 JBoss에 디폴로이 한다. JBoss에서 디폴로이 되는 위치는 Jboss설치 디렉토리\server\default\deploy에 압축한 jar파일을 놓으면 디플로이 된다.

package net.javajigi.test;

import java.rmi.RemoteException;
import java.util.Hashtable;

import javax.ejb.CreateException;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class TestClient {

	private net.javajigi.hello.HelloHome getHome() throws NamingException {
		return (net.javajigi.hello.HelloHome) getContext().lookup(
			net.javajigi.hello.HelloHome.JNDI_NAME);
	}
	private InitialContext getContext() throws NamingException {
		Hashtable props = new Hashtable();

		//----------------------JBOSS
		props.put(
			InitialContext.INITIAL_CONTEXT_FACTORY,
			"org.jnp.interfaces.NamingContextFactory");
		props.put(InitialContext.PROVIDER_URL, "jnp://127.0.0.1:1099");
		//----------------------JBOSS

		InitialContext initialContext = new InitialContext(props);
		return initialContext;
	}
	public void testBean() {

		try {
			net.javajigi.hello.Hello myBean = getHome().create();
			
			System.out.println(myBean.helloWorld());

			//--------------------------------------
			//This is the place you make your calls.
			//System.out.println(myBean.callYourMethod());

		} catch (RemoteException e) {
			e.printStackTrace();
		} catch (CreateException e) {
			e.printStackTrace();
		} catch (NamingException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		TestClient test = new TestClient();
		test.testBean();

	}
}

위 소스 코드는 지금까지 생성한 EJB파일을 테스트하기 위한 클래스이다. main을 포함하고 있는 클래스이기 때문에 Eclipse에서 Run >> Run as >> Java Application을 실행하면 "Hello from JavaJiGi"라는 메세지를 볼 수 있을 것이다.

이 메세지를 확인하는 순간 Eclipse에 JBoss가 제대로 플러그인 되었음을 확인할 수 있다.

Eclipse 강좌에 대한 의견 공유 포럼

강좌에 대하여

작성자 : 박재성
작성일 : 2005년 2월 20일

문서이력 :

  • 2005년 2월 20일 박재성 문서 최초 생성

참고 자료


관련글 더보기