Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-14.log failed
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
study:ejb:rad [2008/03/29 03:47] – banana | study:ejb:rad [2008/04/06 15:29] (現在) – banana | ||
---|---|---|---|
行 21: | 行 21: | ||
오른쪽 아래구석에 **Enable/ | 오른쪽 아래구석에 **Enable/ | ||
그림에 보이는 **Advanced J2EE** role을 클릭하면 선택된 역할에 해당되는 메뉴를 보여준다. | 그림에 보이는 **Advanced J2EE** role을 클릭하면 선택된 역할에 해당되는 메뉴를 보여준다. | ||
+ | |||
+ | |||
+ | |||
行 54: | 行 57: | ||
이제 **finish**를 클릭한다.\\ | 이제 **finish**를 클릭한다.\\ | ||
- | 여기서 EJB project가 EJB client project의 home interface에 어떻게 접근하는지 짚고 넘어가자. EJB client project는 utility JAR project((utility JAR project의 개념은 매우 오래된것으로 자세한 논의는 이 강좌의 범위를 벗어난다.))로서 Enterprise application project(예제에서는 **Test Application**이다.)에 설정되어 있다. | + | 여기서 |
EJB project(예제에서는 **Test EJB**)는 client project에 의존하고 있다. | EJB project(예제에서는 **Test EJB**)는 client project에 의존하고 있다. | ||
行 65: | 行 68: | ||
{{study: | {{study: | ||
- | Test_EJBClient.jar에 체크를 하자. EJB client계층(여기서는 Web project)은 client JAR파일에만 의존해야 하면 실제의 EJB JAR파일에 의존해서는 안된다. 여기서 EJB JAR파일은 EJB 모듈이 배포되는 application 서버에만 설치된다. 반면에 client JAR파일은 원하는 서버에 분산되어 배포될 수 있다. | + | Test_EJBClient.jar에 체크를 하자. EJB client계층(여기서는 Web project)은 client JAR파일에만 의존해야 하며 실제의 EJB JAR파일에 의존해서는 안된다. 여기서 EJB JAR파일은 EJB 모듈이 배포되는 application 서버에만 설치된다. 반면에 client JAR파일은 원하는 서버에 분산되어 배포될 수 있다. |
+ | |||
+ | **다음**을 클릭하자. Features창에서 Struts나 JSTL을 추가할 수도 있다. 하지만 우리의 간단한 application은 추가 feature를 필요로 하지 않는다. **Finish**버튼을 클릭하고 **Confirm Perspective Switch** 대화창에서 **No**를 클릭한다. | ||
- | **다음**을 클릭하자. Features창에서 Struts나 JSTL을 추가할 수도 있다. 하지만 우리의 간단한 application은 추가 feature를 필요로 하지 않는다. **Finish**버튼을 클릭하고 **Confirm Perspective Switch** 대화창에서 **No**를 클릭하자. | ||
行 120: | 行 124: | ||
이것으로 EJB 개발을 마쳤다. 이제 deployment code를 생성할 차례다. | 이것으로 EJB 개발을 마쳤다. 이제 deployment code를 생성할 차례다. | ||
- | poject | + | project |
Deploy한 후에는 RAD가 자동으로 코드를 생성해 준다. 생성된 client project의 stub class들은 Test EJBClient project에서 확인할 수 있다. 그 이외의 생성된 class는 EJB project에서 확인가능하다. | Deploy한 후에는 RAD가 자동으로 코드를 생성해 준다. 생성된 client project의 stub class들은 Test EJBClient project에서 확인할 수 있다. 그 이외의 생성된 class는 EJB project에서 확인가능하다. | ||
+ | |||
+ | |||
行 137: | 行 143: | ||
{{study: | {{study: | ||
- | **JNDI Explorer**를 클릭한다. **ejb-> | + | **JNDI Explorer**를 클릭한다. **ejb-> |
{{study: | {{study: | ||
- | 왼쪽편에 **SimpleSession-> | + | 왼쪽편에 **< |
{{study: | {{study: | ||
- | 왼쪽편에 SimpleSession 1을 펼쳐서 getSquareRoot메소드를 클릭한다. | + | 왼쪽편에 |
{{study: | {{study: | ||
- | 오른쪽에 메소드 parameter값으로 4.0을 입력하고 **Invoke**버튼을 클릭한다. 이것으로 SquareRootResultBean Object를 얻어오게 | + | 오른쪽에 메소드 parameter값으로 4.0을 입력하고 **Invoke**버튼을 클릭한다. 이것으로 |
{{study: | {{study: | ||
- | 왼쪽에 **Objects-> | + | 왼쪽에 **< |
{{study: | {{study: | ||
行 160: | 行 166: | ||
model계층 test가 끝났으니 이제 우리는 client계층-Web계층으로의 build단계로 넘어갈 수 있다. | model계층 test가 끝났으니 이제 우리는 client계층-Web계층으로의 build단계로 넘어갈 수 있다. | ||
- | ====== Develop the Controller ====== | + | |
+ | |||
+ | |||
+ | ===== Develop the Controller ===== | ||
+ | Project Explorer view에서 **Dynamic Web Prjects-> | ||
+ | |||
+ | **EJB Reference**를 선택하고 **Next**를 클릭한다. | ||
+ | |||
+ | {{study: | ||
+ | |||
+ | reference name으로 **< | ||
+ | |||
+ | **Deployment Descriptor : Test Web**을 오른쪽 클릭하고 **New-> | ||
+ | |||
+ | **< | ||
+ | |||
+ | <code java> | ||
+ | import javax.naming.*; | ||
+ | import com.webage.beans.*; | ||
+ | import com.webage.ejbs.*; | ||
+ | </ | ||
+ | |||
+ | doGet method의 parameter를 아래와 같이 변경한다. | ||
+ | <code java> | ||
+ | protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, | ||
+ | </ | ||
+ | |||
+ | doGet method안에 다음코드를 입력한다. | ||
+ | |||
+ | < | ||
+ | protected void doGet(HttpServletRequest request, | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | try { | ||
+ | val = Double.parseDouble(request.getParameter(" | ||
+ | } catch (NumberFormatException e) { | ||
+ | errorMessage = " | ||
+ | } catch (NullPointerException e) { | ||
+ | errorMessage = " | ||
+ | } | ||
+ | |||
+ | if (errorMessage != null) { | ||
+ | request.setAttribute(" | ||
+ | request.getRequestDispatcher("/ | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | try { | ||
+ | SimpleSessionHome sh; | ||
+ | SimpleSession s; | ||
+ | Context ctx = new InitialContext(); | ||
+ | |||
+ | Object o = ctx.lookup(" | ||
+ | sh = (SimpleSessionHome) PortableRemoteObject.narrow(o, | ||
+ | SimpleSessionHome.class); | ||
+ | s = sh.create(); | ||
+ | |||
+ | SquareRootResultBean rb = s.getSuqareRoot(val); | ||
+ | request.setAttribute(" | ||
+ | request.getRequestDispatcher("/ | ||
+ | } catch (Exception e) { | ||
+ | throw new ServletException(" | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Ctrl+Shift+O로 import구문을 정리하고 저장한다. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Develop the View ===== | ||
+ | **Project Explorer** view에서 **Test Web**을 오른쪽 클릭하고 **New-> | ||
+ | |||
+ | Jsp editor의 **Source view**로 바꿔서 다음과 같이 < | ||
+ | |||
+ | <code html> | ||
+ | < | ||
+ | < | ||
+ | <form action=" | ||
+ | Number: <input type=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 저장하고 file을 닫는다. | ||
+ | |||
+ | < | ||
+ | |||
+ | <code html> | ||
+ | < | ||
+ | < | ||
+ | <form action=" | ||
+ | Number: <input type=" | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | 저장하고 file을 닫는다. | ||
+ | |||
+ | |||
+ | ===== Test the Application ===== | ||
+ | Application을 테스트하기에 앞서 < | ||
+ | 쪽 클릭하고 **Properties**를 선택한 후 **Server** property를 선택한다. | ||
+ | |||
+ | {{study: | ||
+ | |||
+ | < | ||
+ | |||
+ | {{study: | ||
+ | |||
+ | **Test Web-> | ||
+ | |||
+ | {{study: | ||
+ | |||
+ | error 조건들과 success조건을 Test한다. | ||
+ | |||
+ | |||
+ | |||
+ | ===== Conclusion ===== | ||
+ | In this tutorial, we learned the following items. | ||
+ | 이 강좌에서는 다음의 내용을 다루었다. | ||
+ | - RAD v6에서 J2EE projects를 생성하는 방법 | ||
+ | - remote interface를 갖는 Session bean을 생성하는 방법 | ||
+ | - J2EE application project를 test server에 배포하는 방법 | ||
+ | - Session EJB를 unit test(単体テスト)하는 방법 | ||
+ | - EJB를 사용하는 Servlet을 개발하는 방법 | ||
+ | - Servlet을 unit test(単体テスト)하는 방법 | ||
+ | |||
+ | ===== Resources | ||
+ | - http:// | ||