Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-14.log failed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:ejb:rad [2008/03/29 03:26] bananastudy:ejb:rad [2008/04/06 15:29] (現在) banana
行 21: 行 21:
 오른쪽 아래구석에 **Enable/Disable roles**아이콘을 클릭한다.  오른쪽 아래구석에 **Enable/Disable roles**아이콘을 클릭한다. 
 그림에 보이는 **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가 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:ejb:depend.jpg|dependent jars}} {{study:ejb:depend.jpg|dependent jars}}
  
-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 Explorer view에서 Test EJB를 마우스 오른쪽 클릭하고 Deploy를 선택한다.+project Explorer view에서 Test EJB를 마우스 오른쪽 클릭하고 Deploy를 선택한다.
  
 Deploy한 후에는 RAD가 자동으로 코드를 생성해 준다. 생성된 client project의 stub class들은 Test EJBClient project에서 확인할 수 있다. 그 이외의 생성된 class는 EJB project에서 확인가능하다. Deploy한 후에는 RAD가 자동으로 코드를 생성해 준다. 생성된 client project의 stub class들은 Test EJBClient project에서 확인할 수 있다. 그 이외의 생성된 class는 EJB project에서 확인가능하다.
 +
 +
 +
  
  
行 128: 行 135:
 {{study:ejb:server.jpg|Server}} {{study:ejb:server.jpg|Server}}
  
-Servers view에서 WebSphere Application Server v6.0을 선택해 기동시킨다.((RAD는 WSAD는 달리 서버를 기동시키고 나서야 프로젝트를 추가할 수 있다. 서버가 기동되어 있지 않다면 RAD는 debug모드로 시작할 것이다. non-debug모드로 기동시키고 project를 추가하는 것이 속도면에서 빠르다.))+Servers view에서 <nowiki>WebSphere Application Server v6.0</nowiki>을 선택해 기동시킨다.((RAD는 WSAD는 달리 서버를 기동시키고 나서야 프로젝트를 추가할 수 있다. 서버가 기동되어 있지 않다면 RAD는 debug모드로 시작할 것이다. non-debug모드로 기동시키고 project를 추가하는 것이 속도면에서 빠르다.))
  
 서버가 기동되기를 기다리자. console창에 몇가지 에러메세지가 나오더라도 무시하자. server를 오른쪽 클릭해서 **Add or Remove Projects**를 선택한다. Test Application project를 server에 추가하고 **Finish**를 클릭한다. project가 배포되는데 1~2초정도 걸린다. 서버가 기동되기를 기다리자. console창에 몇가지 에러메세지가 나오더라도 무시하자. server를 오른쪽 클릭해서 **Add or Remove Projects**를 선택한다. Test Application project를 server에 추가하고 **Finish**를 클릭한다. project가 배포되는데 1~2초정도 걸린다.
  
 다시 server를 오른쪽 클릭하여 **Run universal test client**를 선택한다. 다시 server를 오른쪽 클릭하여 **Run universal test client**를 선택한다.
 +
 +{{study:ejb:jndi.jpg|JNDI}}
 +
 +**JNDI Explorer**를 클릭한다. **ejb->com->webage->ejbs**를 펼쳐서 위의 그림에 보이듯 **<nowiki>SimpleSessionHome</nowiki>**을 클릭한다.
 +
 +{{study:ejb:home.jpg|SimpleSessionHome}}
 +
 +
 +왼쪽편에 **<nowiki>SimpleSession->SimpleSessionHome</nowiki>**을 펼쳐서 create()를 클릭한다. **Invoke**버튼을 클릭하면 remote interface의 reference를 얻어오게 된다. 다음으로 **Work with Object**버튼을 클릭한다.
 +
 +{{study:ejb:remote.jpg|Remote Interface}}
 +
 +왼쪽편에 <nowiki>SimpleSession 1</nowiki>을 펼쳐서 <nowiki>getSquareRoot</nowiki>메소드를 클릭한다.
 +
 +{{study:ejb:param.jpg|Parameter}}
 +
 +오른쪽에 메소드 parameter값으로 4.0을 입력하고 **Invoke**버튼을 클릭한다. 이것으로 <nowiki>SquareRootResultBean Object</nowiki>를 얻어오게  된다. 앞서와 마찬가지로 **Work with Object** 버튼을 클릭한다.
 +
 +{{study:ejb:result.jpg|Result}}
 +
 +왼쪽에 **<nowiki>Objects->SquareRootResultBean</nowiki>**를 펼쳐서 getResultValue()를 클릭한다. Invoke를 클릭한 후 결과값으로 2.0이 돌아오는 것을 확인한다.
 +
 +{{study:ejb:result2.jpg|Result2}}
 +
 +model계층 test가 끝났으니 이제 우리는 client계층-Web계층으로의 build단계로 넘어갈 수 있다.
 +
 +
 +
 +
 +===== Develop the Controller =====
 +Project Explorer view에서 **Dynamic Web Prjects->Test Web**을 펼친다. **Deployment Descriptor:Test Web**을 오른쪽 클릭하고 **New->Reference**를 선택한다.
 +
 +**EJB Reference**를 선택하고 **Next**를 클릭한다.
 +
 +{{study:ejb:ref.jpg|reference}}
 +
 +reference name으로 **<nowiki>SimpleSessionRef</nowiki>**을 입력하고 위의 그림에 보이듯 **<nowiki>SimpleSssion EJB</nowiki>**를 선택한다. 이제 **Finish**를 클릭한다.
 +
 +**Deployment Descriptor : Test Web**을 오른쪽 클릭하고 **New->Servlet**을 선택한다. Servlet name으로 <nowiki>SquareRootServlet</nowiki>을 입력하고 **Next**을 클릭한다. package name으로 com.webage.servlets을 입력하고 **Finish**을 클릭한다.
 +
 +**<nowiki>Java Resources->JavaSource->com.webage.servlets</nowiki>**을 펼쳐서 <nowiki>SquareRootServlet.java</nowiki>을 더블클릭한다. 밑의 import 구문을 추가한다.
 +
 +<code java>
 +import javax.naming.*;
 +import com.webage.beans.*;
 +import com.webage.ejbs.*;
 +</code>
 +
 +doGet method의 parameter를 아래와 같이 변경한다.
 +<code java>
 +protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 +</code>
 +
 +doGet method안에 다음코드를 입력한다.
 +
 +<code>
 +protected void doGet(HttpServletRequest request,
 +     HttpServletResponse response) throws ServletException, IOException {
 +     double val = 0.0;
 +     String errorMessage = null;
 +
 +     try {
 +          val = Double.parseDouble(request.getParameter("value"));
 +     } catch (NumberFormatException e) {
 +          errorMessage = "Please enter a valid number.";
 +     } catch (NullPointerException e) {
 +          errorMessage = "Please enter a value.";
 +     }
 +
 +     if (errorMessage != null) {
 +          request.setAttribute("errorMessage", errorMessage);
 +          request.getRequestDispatcher("/failure.jsp").forward(request, response);
 +          return;
 +     }
 +
 +     try {
 +          SimpleSessionHome sh;
 +          SimpleSession s;
 +          Context ctx = new InitialContext();
 +
 +          Object o = ctx.lookup("java:comp/env/SimpleSessionRef");
 +          sh = (SimpleSessionHome) PortableRemoteObject.narrow(o,
 +          SimpleSessionHome.class);
 +          s = sh.create();
 +
 +          SquareRootResultBean rb = s.getSuqareRoot(val);
 +          request.setAttribute("resultBean", rb);
 +          request.getRequestDispatcher("/success.jsp").forward(request, response);
 +     } catch (Exception e) {
 +         throw new ServletException("doGet failed", e);
 +     }
 +}
 +</code>
 +
 +Ctrl+Shift+O로 import구문을 정리하고 저장한다.
 +
 +
 +
 +
 +===== Develop the View =====
 +**Project Explorer** view에서 **Test Web**을 오른쪽 클릭하고 **New->JSP**을 선택한다. file name으로 <nowiki>success.jsp</nowiki>을 입력하고 **Finish**를 클릭한다.\\
 + 
 +Jsp editor의 **Source view**로 바꿔서 다음과 같이 <BODY>태그의 내용을 입력한다.((JSP2.0는 EL 표현식을 사용할 수 있다. 예를 들면 ${resultBean.sourceNumber}는 resultBean object의 sourceNumber값을 참조할 수 있게 해준다. EL 표현식을 사용하면 JSP 스크립틀릿을 사용하지 않아도 되기때문에 코드가 간단해지며 가독성이 높아진다.))
 +
 +<code html>
 +<BODY>
 +<P>Square root of ${resultBean.sourceNumber} is ${resultBean.resultValue}.</P>
 +<form action="SquareRootServlet">
 +Number: <input type="text" name="value"> <input type="submit" value="Calculate">
 +</form>
 +</BODY>
 +</code>
 +
 +저장하고 file을 닫는다.
 +
 +<nowiki>failure.jsp</nowiki>라는 다른 JSP파일을 생성해서 위와 같은 방식으로 <BODY>태그안에 다음내용을 입력한다.
 +
 +<code html>
 +<BODY>
 +<P>${errorMessage}</P>
 +<form action="SquareRootServlet">
 +Number: <input type="text" name="value"> <input type="submit" value="Calculate">
 +</form>
 +</BODY>
 +</code>
 +
 +저장하고 file을 닫는다.
 +
 +
 +===== Test the Application =====
 +Application을 테스트하기에 앞서 <nowiki>WepSphere v6 test server</nowiki>와 project을 연결시켜야 한다. **Test Web** project를 오른
 +쪽 클릭하고 **Properties**를 선택한 후 **Server** property를 선택한다.
 +
 +{{study:ejb:serverpref_000.jpg|Server property}}
 +
 +<nowiki>WebSphere Application Server v6.0</nowiki>를 기본 runtime server로 선택하고 **OK**를 클릭한다.
 +
 +{{study:ejb:run.jpg|Run}}
 +
 +**Test Web->Deployment Descriptor : Test Web->Servlets**을 펼쳐서 <nowiki>SquareRootServlet</nowiki>을 오른쪽 클릭한 후 **Run->Run on Server**을 선택한다.
 +
 +{{study:ejb:run_result.jpg|Run Result}}
 +
 +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://www.webagesolutions.com/knowledgebase/waskb/waskb017/index.html
  
  

QR Code
QR Code study:ejb:rad (generated for current page)