Simple EJB3 Session Bean + Servlet Application( Call EJB3 from Servlet using Annotation)
DEVELOPMENT 2009/11/30 16:31
Textcube플러그인을 테스겸 해볼까하여 포스팅합니다. EJB3의 stateless 세션빈을 Servlet에서 EJB Injection하여 호출하는 샘플입니다.
EJB Business Interface Code
EJB
위의 컴파일된 business interface를 servlet의 클래스 패스로 노출시킵니다. 즉 Calculator.class를 web application의 WEB-INF/classes 또는 jar로 묶어 WEB-INF/lib에 복사하여 놓습니다.
Servlet
web.xml
EJB Business Interface Code
package org.jboss.demo.ejb3;
import javax.ejb.Remote;
@Remote
public interface Calculator {
public int add(int a, int b);
public int multiply(int a, int b);
}
EJB
package org.jboss.demo.ejb3;
import javax.ejb.Stateless;
/**
* Session Bean implementation class TestEJB
*/
@Stateless
public class CalculatorBean implements Calculator {
/**
* Default constructor.
*/
public CalculatorBean() {
System.out.println("Calculator Bean");
}
public int add(int a, int b) {
return a + b;
}
public int multiply(int a, int b) {
return a + b;
}
}
위의 컴파일된 business interface를 servlet의 클래스 패스로 노출시킵니다. 즉 Calculator.class를 web application의 WEB-INF/classes 또는 jar로 묶어 WEB-INF/lib에 복사하여 놓습니다.
Servlet
package org.jboss.demo.web;
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jboss.demo.ejb3.Calculator;
/**
* Servlet implementation class ProvAccount
*/
public class CalcServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// if ejb is local, you should use @EJB(beanName="CalculatorBean/local")
// 만약 ejb 비즈니스 인터페이스가 로컬이라면 mappedName 대신 beanName을 사용합니다.
@EJB(mappedName="CalculatorBean/remote")
private Calculator calc;
/**
* @see HttpServlet#HttpServlet()
*/
public CalcServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
process(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
process(request, response);
}
public void process(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
System.out.println("REQUEST FROM CLIENT : " + request);
String firstNumber = request.getParameter("firstNumber");
String secondNumber = request.getParameter("secondNumber");
int a = 0;
int b = 0;
if( firstNumber != null) a = Integer.parseInt(firstNumber);
if( secondNumber != null) b = Integer.parseInt(secondNumber);
int add = calc.add(a, b);
int mul = calc.multiply(a, b);
PrintWriter out = response.getWriter();
out.println("add : " + add);
out.println("multiply : " + mul);
out.close();
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>hello-war</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <description></description> <display-name>CalcServlet</display-name> <servlet-name>CalcServlet</servlet-name> <servlet-class>org.jboss.demo.web.CalcServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CalcServlet</servlet-name> <url-pattern>/calc</url-pattern> </servlet-mapping> </web-app>
http://www.javapattern.info/trackback/310





