작성과정
1. 원격 인터페이스 , 홈 인터페이스 , 빈 클래스 작성
2. Compile
3. 배치 디스크립터 작성
4. JAR 압축
5. Deploy
- 원격 인터페이스
: javax.ejb.EJBObject 나 javax.ejb.EJBLocalObject 를 상속 받는다.
클라이언트가 호출 할 비지니스 메소드를 정의함
웹로직 서버 한대일때는 EJBLocalObject ( RMI 사용하지 않음 ) 상속받는 것이 좋다.
example)
package ejb.example;
import javax.ejb.EJBObject;
import java.rmi.RemoteException; // EJBObject 의 경우만
public interface Example extends EJBObject {
public String Example() throws RemoteException;
}
- 홈 인터페이스
: javax.ejb.EJBHome 이나 javax.ejb.EJBLocalHome 을 상속 받는다.
빈 클래스를 생성 , 검색 , 삭제 할 수 있는 메소드를 선언
example)
package ejb.example;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBHome;
public interface ExampleHome extend EJBHome {
public Example create() throws CreateException , RemoteException;
}
- 빈 클래스
: 세션 빈의 경우에는 javax.ejb.SessionBean 인터페이스를 구현
원격 인터페이스에서 선언한 비지니스 메소드를 실질적으로 구현
EJB 클래스는 원격 인터페이스를 구현하지 않는다.
* 원격인터페이스 , 홈 인터페이스를 구현하지 않는다.
example)
package ejb.example;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
public class ExampleBean implements SessionBean {
private SessionContext ctx;
public void setSessionContext ( SessionContext c ) {
ctx = c;
}
public String Example() {
return " Bean Class";
}
public void ejbCreate() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
}
* WEBLogic 의 경우
1. Build 후 WEBLogic 에서 folder OPEN
2. Bean 항목 확인 후 JNDI 명 확인
3. Classes 탭에서 Bean, Home, Remote 확인
4. Save
* JSP 에서 호출
<%@ page contentType = "text/html;charset=UTF-8" %>
<%@ page import = "javax.rmi.*" %>
<%@ page import = "javax.naming.*" %>
<%@ page import = "javax.transaction.*" %>
<html>
<head>
</head>
<body>
<%
context ctx = null;
try{
ctx = new InitialContext();
Object h = ctx.lookup("ExampleBean");
ExampleHome home = ( ExampleHome ) PortableRemoteObject.narrow( h, ExampleHome.class );
Example exp = home.create();
out.println( exp.example() );
}
catch ( Eception e ) {
out.println( e.toString() );
}
%>
</body>
</html>