넷빈(Netbeans)6.8에서 stateless 세션과 servlet 3.0 연동하기 - basic
Written on 오전 6:38 by 강여사(J.Y.Kang)
이번 예제에서는 서블릿 3.0 에다 EJB 무상태 세션 빈(Stateless Session Bean)을 연결해보도록 하겠습니다.
우선 작업환경은 다음과 같습니다.
넷빈: 6.8
서버: 글래스피시 v3 도메인
버전: EE 6 Web
그럼 프로젝트를 새로 만듭니다.
파일 - 새 프로젝트
Java Web - Web Application 선택
다음 클릭
프로젝트 명은 StatelessServlet 이라고 줬습니다.
경로 적당히
다음 클릭
서버를 글래스피시 v3 도메인으로
버전은 EE 6 Web 으로 줍니다.
마침 클릭
그럼 기본 웹 어플리케이션이 만들어집니다.
여기에 서블릿을 새로 만들도록 하겠습니다.
프로젝트에서 오른쪽 마우스 클릭 - new - other
Web - Servlet 선택
다음 클릭
이름을 StatelessServlet 이라고 줬습니다.
패키지는 stateless 라고 줍니다.
다음 클릭
역시 자바 서블릿 3.0 에서는 web.xml 이 옵션가능이므로 체크가 해제되어 있습니다.
기본 그대로
마침 클릭
만들어진 서블릿 소스에
@WebServlet 어노테이션과 함께 지정된 내용들이 작성되어 있는 것을 확인해볼 수 있습니다.
==================================================================
@WebServlet(name="NewServlet", urlPatterns={"/NewServlet"})
public class NewServlet extends HttpServlet {
==================================================================
자 그럼 이 서블릿에서 호출할 무상태 세션빈을 만들도록 하겠습니다.
프로젝트에서 오른쪽 마우스 클릭 - new - other
Java EE - Session Bean 선택
다음 클릭
클래스 이름은 NewSessionBean
패키지 이름은 stateless
유형에 Stateless 를 선택합니다.
다음 클릭
만들어진 세션 빈 소스에서 주석에 나온대로 메소드를 추가하기 위해 소스 삽입(insert code: ALT+INSERT)를 선택합니다. 그럼 그림처럼 add business method 메뉴가 나타납니다.
클릭
팝업창이 뜨면 그림과 같이 작성합니다.
메소드 이름 sayHello
리턴유형 java.lang.String
파라미터 추가(add)버튼을 눌러
파라미터 변수 이름에 name (<-parameter대신) 바꿉니다.
OK
작성된 코드에서 return null; 부분을 다음과 같이 바꿉니다.
==========================================================
return "Hello, " + name + "!\n";
==========================================================
이제 서블릿 소스로 다시 돌아와 좀전에 작성한 EJB 비즈니스를 호출하도록 하겠습니다.
서블릿 소스에서 소스 삽입(insert code:ALT+INSERT)를 선택하면 메뉴 중 call Enterprise Bean 메뉴가 있습니다.
클릭.
팝업창에 EJB 빈이 나타나는데 확장해서 위에 작성한 NewSessionBean 을 선택합니다.
OK 클릭
그럼 다음 소스와 같이 작성됩니다.(확인)
--------------------------------------------------------------------------------
@EJB--------------------------------------------------------------------------------
private NewSessionBean newSessionBean;
이번에는 게시물의 try 안의 주석으로 되어 있는 부분 대신 다음 코드를 복사해서 붙여넣습니다. (직접 작성하셔도 됩니다. ^^)
================================================================================
out.println("<html>");
out.println("<head>");
out.println("<title>무상태 세션 빈 연동 서블릿 테스트</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>이름을 넣어주십시오</h1>");
out.println("<form method=\"POST\">");
out.println("<TABLE>");
out.println("<tr><td>Name: </td>");
out.println("<td><input type=\"text\" name=\"name\"> </td>");
out.println("</tr><tr><td></td>");
out.println("<td><input type=\"submit\" name=\"sub\"> </td>");
out.println("</tr>");
out.println("</TABLE>");
out.println("</form>");
String val = request.getParameter("name");
if ((val != null) && (val.trim().length() > 0)) {
out.println("<FONT size=+1 color=red> Greeting from StatelessSessionBean: </FONT> "
+ newSessionBean.sayHello(val) + "<br>");
}
out.println("</body>");
out.println("</html>");
================================================================================
이제 이 서블릿을 실행해야 하는데 프로젝트에서 서블릿으로 바로 호출되도록 등록정보를 수정하겠습니다.
프로젝트에서 오른쪽 마우스 클릭 - 등록 정보(properties)
Run 부분에서 그림과 같이 relative URL 값에다 /NewServlet 를 적어줍니다.
프로젝트 실행 (RUN)
그럼 브라우저에서 입력박스가 나타납니다.
적당히 abc 라고 줍니다.
해당 내용이 무상태 세션 빈을 통해 다시 서블릿으로 출력됩니다.
수고하셨습니다.
자 그럼 퀴즈~~
여기서 값을 "가나다"로 온전히 출력하려면 어떻게 하면 될까요? ㅎㅎ
아시는 분은 답글을..