웹모듈(Servlet, JSP)에서 무상태 세션빈(Stateless Session Bean)에 접근하는 예
위에서 사용된 @EJB(name="HelloSLSB")는 @EJB만 사용해도 된다.
JSP에서 빈 객체에 접근하는 예
서블릿에서 빈 객체에 접근할 때에 @EJB(name="HelloSLSB")와 같은 방법으로 주입을 한 경우에는 다른 JSP에서도 동일한 이름을 이용하여 다음과 같은 방법으로 빈객체에 접근할 수 있게 된다 (Local접근인 경우)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@page import="javax.ejb.EJB"%>
<%@ page import="com.itbank.ejb.test.*"%>
<%@ page import="javax.naming.*" %>
<%@ page import="javax.rmi.*" %>
<%
Context ctx = new javax.naming.InitialContext();
Object obj = ctx.lookup("java:comp/env/HelloSLSB");
HelloSLSBLocal bean = (HelloSLSBLocal)PortableRemoteObject.narrow(obj,HelloSLSBLocal.class);
String msg = bean.sayHello();
%>
클라이언트가 EJB에 원격접속하는 경우는 여기를 참조하세요.
Servlet에서 JSP로 EJB 객체를 포워드하여 전달하는 예
package com.itbank.ejb.webclient;
import java.io.*;
import javax.ejb.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import com.itbank.ejb.test.*;
public class EJBClientServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@EJB(name="HelloSLSB")
private HelloSLSBLocal helloBean;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int dan = Integer.parseInt(request.getParameter("dan"));
/* 서블릿에서 JSP로 직접 EJB객체를 전달할 수도 있다 */
request.setAttribute("helloBean", helloBean);
/* 서블릿에서 EJB객체의 메소드를 호출하여 그 리턴된 데이터를 JSP에 전달할 수 있다*/
request.setAttribute("message", helloBean.gugu(dan));
/* 서블릿에서 JSP로 포워드한다 */
getServletContext().getRequestDispatcher("/view.jsp").forward(request, response);
}
}
view.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page import="com.itbank.ejb.test.*" %>
<%
HelloSLSBLocal helloBean = (HelloSLSBLocal) request.getAttribute("helloBean");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>결과 페이지</title>
</head>
<body><center>
<% int dan = Integer.parseInt(request.getParameter("dan")); %>
<%-- 서블릿으로부터 포워드된 EJB객체를 사용하는 예 --%>
<%=helloBean.gugu(dan)%><hr>
<%=(String)request.getAttribute("message")%><hr>
${message}
</center>
</body>
</html>