Eclipse 에서 SampleEJB와 SampleAppClient 프로젝트를 각각 생성한 후에 ANT 를 이용하여 패키징 및 배포하는 예제이다. Ant 를 이용하여 처리할 부분: JAR 패키징 및 JBoss 에 deploy (컴파일을 Eclipse에서 한 후 클래스 파일을 JAR 로 압축하는 부분과 생성된 JAR 파일을 JBoss에 deploy 하는 부분만 Ant를 이용하여 처리하는 예이다)
SampleEJB 프로젝트 구성파일
Sample.java
import javax.ejb.Remote;
@Remote
public interface Sample {
public String getMsg();
}
SampleBean.java
import javax.ejb.Stateless;
@Stateless
public class SampleBean implements Sample {
@Override
public String getMsg() {
return "Sample EJB";
}
}
SampleAppClient 프로젝트 구성파일
Main.java
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class Main {
public static void main(String[] args) throws Exception{
Context ctx = getJNDIContext();
Sample bean = (Sample)ctx.lookup("SampleBean/remote");
String str = bean.getMsg();
System.out.println(str);
}
public static Context getJNDIContext() {
try {
Properties props = new Properties();
props.put(InitialContext.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
props.put(InitialContext.PROVIDER_URL, "jnp://localhost:1099");
props.put(InitialContext.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
return new InitialContext(props);
} catch (NamingException e) {
e.printStackTrace();
}
return null;
}
}
Sample.java
import javax.ejb.Remote;
@Remote
public interface Sample {
public String getMsg();
}
SampleEJB 프로젝트의 루트에 다음과 같은 Ant 실행 스크립트를 작성하고 build.xml 으로 저장한다.
build.xml
<project name="SampleEJB" basedir="." default="deploy">
<property name="deploy.dir" value="D:/jboss-4.2.2.GA/server/default/deploy"/>
<target name="deploy">
<mkdir dir="build/jar"/>
<jar destfile="build/jar/${ant.project.name}.jar" basedir="build/classes"/>
<copy todir="${deploy.dir}">
<fileset dir="build/jar" includes="*.jar"/>
</copy>
</target>
</project>
다음과 같이 build.xml을 실행한다.
디플로이 결과 콘솔에 다음과 같은 성공 메시지가 출력된다.
13:55:32,000 WARN [JmxKernelAbstraction] jboss.j2ee:jar=SampleEJB.jar,name=SampleBean,service=EJB3 is not registered
13:55:32,281 INFO [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
13:55:32,296 INFO [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=SampleEJB.jar,name=SampleBean,service=EJB3 with dependencies:
13:55:32,312 INFO [EJBContainer] STARTED EJB: SampleBean ejbName: SampleBean
13:55:32,343 INFO [EJB3Deployer] Deployed: file:/D:/jboss-4.2.2.GA/server/default/deploy/SampleEJB.jar
SampleAppClient.java 를 실행하여 그 결과를 확인한다.