Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2010 幎 10 æ ISE | Rational Solution Group © Copyright 2010 IBM Corporation IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ⢠ãã®è³æã«å«ãŸããæ å ±ã¯å¯èœãªéãæ£ç¢ºãæããŠãããŸãããæ¥æ¬ã¢ã€ã»ããŒã»ãšã æ ªåŒ äŒç€Ÿãªãã³ã«æ¥æ¬ã¢ã€ã»ããŒã»ãšã ã·ã¹ãã ãºã»ãšã³ãžãã¢ãªã³ã°æ ªåŒäŒç€Ÿã®æ£åŒãª ã¬ãã¥ãŒãåããŠãããŸãããåœè³æã¯ãè³æå ã§èª¬æãããŠãã補åã®ä»æ§ãä¿èšŒãã ãã®ã§ã¯ãããŸããã ⢠è³æã®å 容ã«ã¯æ£ç¢ºãæãããã泚æããŠãããŸããããã®è³æã®å 容㯠2010 幎 10 æ çŸåšã®æ å ±ã§ããã補åã®æ°ãããªãªãŒã¹ãPTF ãªã©ã«ãã£ãŠåäœãä»æ§ãå€ããå¯èœæ§ ãããã®ã§ã泚æäžãããåœè³æã«èšèŒããã補ååãŸãã¯äŒç€Ÿåã¯ããããã®å瀟㮠åæšãŸãã¯ç»é²åæšã§ãã ⢠è³æã®ãã¹ãŠãããã¯ïŒéšãåãããæ¥æ¬ã¢ã€ã»ããŒã»ãšã ã·ã¹ãã ãºã»ãšã³ãžãã¢ãªã³ã° æ ªåŒäŒç€Ÿã®èš±å¯ãªã䜿çšãæ¹å€ããããšãçŠããŸãã © 2010 IBM Corporation -1- IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ç®æ¬¡ 1 2 3 ã¯ããã« ..............................................................................................................................- 4 1.1 æŠèŠ ..............................................................................................................................- 4 - 1.2 éçºã®æµããšé¢é£ãã RAD ã®æ©èœ ...............................................................................- 5 - 1.3 éçºå¯Ÿè±¡ã®ã¢ããªã±ãŒã·ã§ã³ ...........................................................................................- 7 - 1.4 åæ ..............................................................................................................................- 8 - Web UI å±€ã®äœæ ................................................................................................................- 9 2.1 Web2.0 ãããžã§ã¯ãã®äœæ ............................................................................................- 9 - 2.2 Web ããŒãžã®äœæ ......................................................................................................- 17 - 2.3 Web ããŒãžãžã® Dojo ã¬ã€ã¢ãŠãã»ãŠã£ãžã§ããã®è¿œå ......................................................- 19 - 2.4 Dojo ããŒã¿ã»ã°ãªããã®äœæ ..........................................................................................- 25 - 2.4.1 JSON ãã¡ã€ã«ã®ç¢ºèª............................................................................................- 25 - 2.4.2 ããŒã¿ã»ã°ãªããã®äœæ ............................................................................................- 30 - 2.5 ã«ã¹ã¿ã Dojo ã¬ã€ã¢ãŠãã»ãŠã£ãžã§ããã®äœæ ...................................................................- 40 - 2.6 ã«ã¹ã¿ã Dojo ãŠã£ãžã§ããã® Web ããŒãžãžã®è¿œå ........................................................- 55 - 2.7 Dojo ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ã .......................................................................................- 62 - ããŒã¿ã»ã¢ã¯ã»ã¹å±€ã®äœæ ...................................................................................................- 67 3.1 JPA1.0, EJB3,0 ãããžã§ã¯ãã®äœæ..............................................................................- 67 - 3.2 JPA ãšã³ãã£ãã£ãŒã®äœæ ............................................................................................- 71 - 3.2.1 Movie ãšã³ãã£ãã£ãŒã®äœæ ..................................................................................- 72 - 3.2.2 Feedback ãšã³ãã£ãã£ãŒã®äœæ ............................................................................- 78 - 3.2.3 ãšã³ãã£ãã£ãŒéã®é¢é£äœæ ..................................................................................- 80 - 3.3 3.3.1 ããŒã¿ããŒã¹æ¥ç¶ã®äœæ .......................................................................................- 90 - 3.3.2 ããŒãã«ã®çæ.....................................................................................................- 92 - 3.3.3 JDBC ãããã€ã¡ã³ãã®ãããžã§ã¯ãæ§æ ..................................................................- 95 - 3.4 JPA ãããŒãžã£ãŒBean ã®äœæ ..................................................................................- 100 - 3.4.1 ã»ãã·ã§ã³ Bean ã®äœæ........................................................................................- 100 - 3.4.2 JPA 管çã¡ãœããã® EJB ãžã®è¿œå ........................................................................- 102 - 3.4.3 JPA 管çã¡ãœããã®ããã¢ãŒã ...............................................................................- 106 - 3.5 4 JPA ãšã³ãã£ãã£ãŒããããŒãã«ã®äœæ ........................................................................- 90 - ããŒã¿ã»ã¢ã¯ã»ã¹å±€ã®åäœç¢ºèª .................................................................................... - 117 - 3.5.1 Universal Test Client ã䜿çšããããŒã¿ã®è¿œå .................................................... - 118 - 3.5.2 ããŒã¿ã»ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒã»ãã¥ãŒã䜿çšããããŒã¿ã®ç¢ºèª ..........................- 122 - ããžãã¹ã»ããžãã¯å±€ã®äœæ ...............................................................................................- 125 4.1 EJB3.0 ãããžã§ã¯ãã®äœæ .........................................................................................- 125 - © 2010 IBM Corporation -2- IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5 6 4.2 ããžãã¹ã»ã¢ãã«ã®äœæ ..............................................................................................- 128 - 4.3 ã»ãã·ã§ã³ Bean ã®äœæ ..............................................................................................- 133 - Web UI å±€ãšããžãã¹ã»ããžãã¯å±€ã®æ¥ç¶ ............................................................................- 139 5.1 RPC ã¢ããã¿ãŒã»ãµãŒãã¹ã®äœæ ...............................................................................- 140 - 5.2 Web ããŒãžã®ä¿®æ£ ....................................................................................................- 145 - 5.2.1 ShowMovies ããŒãæã®æ¯ãèãã®å€æŽ .............................................................- 145 - 5.2.2 feedbackDialog ã® submit æã®æ¯ãèãã®å€æŽ ..................................................- 148 - 5.2.3 DataGrid ãžã®ãªã³ããŠã¹ã»ãªãŒããŒæã®æ¯ãèãã®å€æŽ......................................- 151 - ã¢ããªã±ãŒã·ã§ã³ã®ãããã°ã»ãã¹ã.....................................................................................- 162 6.1 Firebug çµ±åã«ãããããã° .......................................................................................- 162 - 6.2 ã³ãŒãã»ã«ãã¬ããžã«ããç¶²çŸ æ§ã®ç¢ºèª ........................................................................- 170 - © 2010 IBM Corporation -3- IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 1 ã¯ããã« 1.1 æŠèŠ æ¬ è³ æ 㯠ãWeb2.0 㢠ã 㪠㱠㌠㷠㧠㳠ã J2EE 㢠ã 㪠㱠㌠㷠㧠㳠é çº è ã 察 象 ã« ã IBM Rational Application Developer for WebSphere Software V8.0 (ä»¥äž RAD) ã䜿çšããŠãã·ã³ãã«ãª 3 å±€æ§ é ã® J2EE ã¢ããªã±ãŒã·ã§ã³ãéçºããæµãããã³ãºãªã³åœ¢åŒã§èª¬æããŸãããŸããéçºã®æµãã®äžã§ã RAD ã®æ©èœã®æŽ»çšæ¹æ³ãããã³ãã¡ãªããã説æããŸãããã¹ãŠãçµäºããã«ã¯çŽ 4 æéããããŸãã 3 å±€æ§é ãšã¯ãäžè¬ç㪠Web ã·ã¹ãã ã§åºãæ¡çšãããŠãããWeb UIãããããžãã¹ã»ããžãã¯ãããããŒã¿ã» ã¢ã¯ã»ã¹ãå±€ãæããŸããæ¬è³æã§ã¯ãåå±€ã®å®è£ ãã¬ãŒã ã¯ãŒã¯ãšããŠä»¥äžã«ç€ºãæè¡ãæ¡çšããŸãã å±€ å®è£ ãã¬ãŒã ã¯ãŒã¯ å®è£ ãã¬ãŒã ã¯ãŒã¯ Web UI JSP/Servlet V2.5 Dojo V1.4.1 ããžãã¹ã» ããžãã¹ã»ããžã㯠EJB V3.0 ããŒã¿ã» ããŒã¿ã»ã¢ã¯ã»ã¹ EJB V3.0 JPA V1.0 Derby V10.5 æ¬è³æã¯ãäžèšæ§é ãæã€ã¢ããªã±ãŒã·ã§ã³ãã以äžã®æµãã§éçºããæé ã瀺ããŸãã 1. Web UI å±€ã®äœæ ïŒWeb UI éçºè åãã2 ç« åç §ãïŒ 2. ããŒã¿ã»ã¢ã¯ã»ã¹å±€ã®äœæ ïŒããŒã¿ã»ã¢ã¯ã»ã¹éçºè åãã3 ç« åç §ãïŒ 3. ããžãã¹ã»ããžãã¯å±€ã®äœæ ïŒããžãã¹ã»ããžãã¯éçºè åãã4 ç« åç §ãïŒ 4. Web UI å±€ãšããžãã¹ã»ããžãã¯ã®æ¥ç¶ ïŒWeb UI éçºè åãã5 ç« åç §ãïŒ 5. ã¢ããªã±ãŒã·ã§ã³ã®ãããã°ããã¹ã ïŒåå±€ã®éçºè ããã¹ã¿ãŒåãã6 ç« åç §ãïŒ © 2010 IBM Corporation -4- IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 1.2 éçºã® éçºã®æµããšé¢é£ ããšé¢é£ãã é¢é£ãã RAD ã®æ©èœ éçºã®æµãã®äžã§ã掻çšãã RAD ã®æ©èœãšãæ©èœã«ããã§ããããšã以äžã«ç€ºããŸãã ã2. Web UI å±€ã®äœæãã§æŽ»çšããæ©èœ 掻çšãã 掻çšããæ©èœ ããæ©èœ ãã®æ©èœ ãã®æ©èœã«ããã§ããããš æ©èœã«ããã§ããããš Dojo Toolkit ãªãã㪠UI ãæ〠Dojo Web ã¢ããªã±ãŒã·ã§ã³éçºãè¿ éã〠容æã«ããŸãã ããŒãžã» ããŒãžã»ãã¶ã€ã㌠WYSIWYG(What You See Is What You Get) 㪠UI éçºã å®çŸããŸãã Dojo ã«ã¹ã¿ã ã» ã«ã¹ã¿ã ã»ãŠã£ãžã§ãã åå©çšå¯èœãª UI éšåïŒããšãã°ãè€æ°ã®ç»é¢ã§äœ¿çšãããã·ã§ ããã³ã°ã»ã«ãŒããªã©ïŒã®éçºãå©çšãè¿ éãã€å®¹æã«ããŸãã JSON ãšãã£ã¿ãŒ ãã©ãŒããããããã³ã匷調/è²ã¥ã衚瀺ã«ãã JSON ããŒã¿ã» ãã©ãŒãããã®æ§é ç解ã容æã«ããŸãããŸããå®è¡æã®ãã ã«ããŒã¿ã®å§çž®ãè¡ããŸãã Ajax ãã¹ãã» ãã¹ãã»ãµãŒã㌠軜éãªãµãŒããŒã«ãããAjax ã¢ããªã±ãŒã·ã§ã³ã® Web UI 局㫠ããããã¹ããè¿ éã«ããŸãã ã3. ããŒã¿ã»ã¢ã¯ã»ã¹å±€ã®äœæãã§æŽ»çšããæ©èœ 掻çšãã 掻çšããæ©èœ ããæ©èœ ãã®æ©èœ ãã®æ©èœã«ããã§ããããš æ©èœã«ããã§ããããš ãšã³ãã£ãã£ãŒã ãšã³ãã£ãã£ãŒ ã ããã³ã ããã³ ã 管 JPA ã®ãšã³ãã£ãã£ãŒãããšã³ãã£ãã£ãŒã管çããããã® çã¡ãœããäœæ ã¡ãœããäœæãŠã£ã¶ãŒã äœæãŠã£ã¶ãŒã ã¡ãœãããèªåçæããéçºãè¿ éãã€å®¹æã«ããŸãã ãããããŠã³ã» ãããããŠã³ã»ãããã³ã° JPA ãšã³ãã£ãã£ãŒããããŒã¿ããŒã¹ã®ããŒãã«ã èªåçæããŸãã Universal Test Client ããŒã«ã«ããŸãã¯ããªã¢ãŒãã»ãµãŒããŒäžã® EJB ã Java ãªããž ã§ã¯ãã®ã¡ãœãããWeb ãµãŒãã¹ãªã©ããã¹ãããããšãã§ããŸãã ããŒã¿ã» ããŒã¿ã» ãœãŒã¹ã» ãœãŒã¹ã» ãšã¯ã¹ãã㌠ããŒã¿ããŒã¹æ¥ç¶ã®ç®¡çãæ¥ç¶ãããããŒã¿ã»ãªããžã§ã¯ãã® ã©ãŒ ãã©ãŠãºãå€æŽã RAD äžããè¡ããŸãã ã4. ããžãã¹ã»ããžãã¯å±€ã®äœæãã§æŽ»çšããæ©èœ 掻çšãã 掻çšããæ©èœ ããæ©èœ ãã®æ©èœ ãã®æ©èœã«ããã§ããããš æ©èœã«ããã§ããããš EJB äœæãŠã£ã¶ãŒã äœæãŠã£ã¶ãŒã EJB ãèªåçæããéçºãè¿ éãã€å®¹æã«ããŸãã © 2010 IBM Corporation -5- IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ã5. Web UI å±€ãšããžãã¹ã»ããžãã¯ã®æ¥ç¶ãã§æŽ»çšããæ©èœ 掻çšãã 掻çšããæ©èœ ããæ©èœ ãã®æ©èœ ãã®æ©èœã«ããã§ããããš æ©èœã«ããã§ããããš RPC ã¢ããã¿ãŒã» ã¢ããã¿ãŒã»ãµãŒãã¹ ãµãŒããŒã»ãµã€ã Java ãªããžã§ã¯ããš JSON ã®å€æãè¡ãã ãµãŒããŒã»ãµã€ã Java ãš Ajax ã¢ããªã±ãŒã·ã§ã³ã®æ¥ç¶ãè¿ éã ã€å®¹æã«ããŸãã ã6. ã¢ããªã±ãŒã·ã§ã³ã®ãããã¯ãšãã¹ããã§æŽ»çšããæ©èœ 掻çšãã 掻çšããæ©èœ ããæ©èœ ãã®æ©èœ ãã®æ©èœã«ããã§ããããš æ©èœã«ããã§ããããš Firebug çµ±å JavaScript ãããã¬ãŒâFirebugâãšã®çµ±åã«ããã JavaScript ã®åé¡å€å¥ã容æã«ããŸãã ã³ãŒãã» ã³ãŒãã»ã«ãã¬ããž ã¢ããªã±ãŒã·ã§ã³ã®å質ãæ€èšŒããäžã§ã®ææšãšãªãã«ãã¬ããž ã®ç¢ºèªãããã³ãå®è¡ãããŠããªããœãŒã¹ã»ã³ãŒãã®è¡ãã¡ãœãã ãæ€åºããŸãã © 2010 IBM Corporation -6- IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ éçºå¯Ÿè±¡ã® éçºå¯Ÿè±¡ã®ã¢ããªã±ãŒã·ã§ã³ 1.3 éçºããã¢ããªã±ãŒã·ã§ã³ã¯ãRAD ãã¥ãŒããªã¢ã«(*) ãšåããMy Movie Web Applicationãã§ãããã®ã¢ ããªã±ãŒã·ã§ã³ã¯ãæ ç»ããŒã¿ã衚瀺ãã Web ããŒãžã§æ§æãããŠãããæ ç»ã«é¢ããè©äŸ¡ããã³ã³ã¡ ã³ããè¡ãããšãã§ããŸããã¢ããªã±ãŒã·ã§ã³ã®ç»é¢ã€ã¡ãŒãžã以äžã«ç€ºããŸãã å©çšè ã¯ããMy Movie Web Applicationãã«ã¢ã¯ã»ã¹ãããšãå·Šã»ã¯ã·ã§ã³ã«ãŠæ ç»ã®ãã¿ã€ãã«ããç£ç£ã ã圹è ãã説æããäžèŠ§è¡šã§ç¢ºèªã§ããŸãããŸããè¡šã®äžã«ã«ãŒãœã«ãåããããšãåæ ç»ã«å¯ŸããŠæçš¿ã ããã³ã¡ã³ãã確èªããããšãã§ããŸãã å³ã»ã¯ã·ã§ã³ã§ã¯ãæçš¿ãããè©äŸ¡ããã³ã³ã¡ã³ãã®ãã¹ãŠã確èªã§ããŸãã ãŸããå©çšè ã¯æ ç»ã«è©äŸ¡ãããã³ãã³ã¡ã³ããæçš¿ããããšãã§ããŸããæçš¿ããã«ã¯ãå·Šã»ã¯ã·ã§ã³å ã®è©äŸ¡ãããæ ç»ã®è¡ã®ãRate and Comment!ãåãã¯ãªãã¯ããŸãããããšããRate and Comment!ãã ã€ã¢ãã°ã衚瀺ããã5 段éè©äŸ¡ãšã³ã¡ã³ããç»é²ããããšãã§ããŸãã 2 ç« ãŸã§ã§äœæããã®ã¯ãã®ãããªã¢ããªã±ãŒã·ã§ã³ã§ãã *ãã¥ãŒããªã¢ã«: Dojo ã䜿çšãã Web 2.0 ã¢ããªã±ãŒã·ã§ã³ã®äœæ http://publib.boulder.ibm.com/infocenter/radhelp/v8/index.jsp?topic=/com.ibm.rad.samptut.doc/tu torials/web/topics/dojo_abstract.html 3 ç« ä»¥éã¯ããã®ã¢ããªã±ãŒã·ã§ã³ãæ©èœæ¡åŒµããŸããæ¡åŒµããã®ã¯ä»¥äžã® 2 ç®æã«ãªããŸãã ã» è¡šã®äžã«ã«ãŒãœã«ãåããããšãåæ ç»ã«å¯ŸããŠæçš¿ãããè©äŸ¡ã®å±¥æŽãšã³ã¡ã³ãã«å ããè© äŸ¡ã®å¹³åç¹ã確èªã§ããããã«ããŸãã ã» å³ã»ã¯ã·ã§ã³ã§ã¯ãæè¿æçš¿ãããè©äŸ¡ããã³ã³ã¡ã³ããæ°ããé ã«æ倧 5 件衚瀺ããããã«ã ãŸãã © 2010 IBM Corporation -7- IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ åæ 1.4 以äžã®é ç®ãç解ããŠãããšãæ¬è³æã®ç解ãããæ·±ãŸããŸãã Java EE 5 ããã³ Java ããã°ã©ãã³ã° EJB V3.0 ã®æŠå¿µ JPA V1.0 ã®æŠå¿µ JavaScriptãããã³ãDojo ããã°ã©ãã³ã° ãŸããæ¬è³æã®ãã³ãºãªã³ãå®æœããããã«ã¯ã以äžã®ããŒã«ããã³ã³ã³ããŒãã³ããã€ã³ã¹ããŒã«ãã ãŠããå¿ èŠããããŸãã Rational Application Developer for WebSphere Software V8.0 (Rational Application Developer for Standard Edition V8.0 ã§ã¯ã³ãŒãã»ã«ãã¬ããžã®æ©èœ ããã³ EJB/JPA ã¯ã©ã¹ã® UML å¯èŠåãå©çšã§ããŸãã) WebSphere Application Server Test Environment V7.0 Feature Pack for Web2.0 Mozilla Firefox 3.5 ä»¥äž © 2010 IBM Corporation -8- IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2 Web UI å±€ã®äœæ ãã®æŒç¿ã§ã¯ããMy Movie Web Applicationãã® Web UI å±€ãäœæããæé ã瀺ããŸããæŒç¿ã«ã¯ãã ãã 90 åãèŠããŸãã ãªããæ¬ç« ã®å 容ã¯ãããã¥ãŒããªã¢ã«: Dojo ã䜿çšãã Web 2.0 ã¢ããªã±ãŒã·ã§ã³ã®äœæããšåãã§ãã ãã¥ãŒããªã¢ã«ãæ¢ã«å®æœããŠããæ¹ã¯ã3 ç« ã«é²ãã§ãã ããã 2.1 Web2.0 ãããžã§ã¯ãã® ãããžã§ã¯ãã®äœæ ãã®æŒç¿ã§ã¯ãç¹å®ã®ãããžã§ã¯ãã»ãã¡ã»ããã䜿çšå¯èœã«ããŠãWeb 2.0 ã¢ããªã±ãŒã·ã§ã³éçºçšã«æ§ æããã Web ãããžã§ã¯ããäœæããæ¹æ³ã«ã€ããŠåŠç¿ããŸãã Web 2.0 ã¢ããªã±ãŒã·ã§ã³éçºçšã«æ§æããã Web ãããžã§ã¯ããäœæããã«ã¯ã以äžã®ããã«ã㟠ãã 1. ã¡ãã¥ãŒã»ããŒããããã¡ã€ã«ã > ãæ°èŠã > ãåç Web ãããžã§ã¯ãããéžæããŸãã © 2010 IBM Corporation -9- IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2. ãæ°èŠåç Web ãããžã§ã¯ãããã€ã¢ãã°ãéããŸãã 3. ããããžã§ã¯ãåããã£ãŒã«ãã«ãMyMovieWEBããšå ¥åããŸãã 4. ãã¿ãŒã²ããã»ã©ã³ã¿ã€ã ãã§ãµãŒããŒããWebSphere Application Server 7.0ããéžæããŸãã 5. ãæ§æãã»ã¯ã·ã§ã³ã§ããå€æŽããã¯ãªãã¯ããŠãWeb 2.0 ãããžã§ã¯ãã»ãã¡ã»ããã䜿çšå¯èœã«ããŸãã ããããžã§ã¯ãã»ãã¡ã»ããããŠã£ã³ããŠãéããŸãã 6. ãWeb 2.0ããå±éãã以äžã®ãã¡ã»ãããéžæãããOKããã¯ãªãã¯ããŸãã ãããžã§ã¯ãã» ãããžã§ã¯ãã»ãã¡ã»ãã ããŒãžã§ã³ Dojo Toolkit 1.0 © 2010 IBM Corporation - 10 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ãµãŒããŒã» ãµãŒããŒã»ãµã€ãã» ãµã€ãã»ãã¯ãããžãŒã» ãã¯ãããžãŒã»ãã¡ã»ãã ãµãŒããŒã»ãµã€ãã»ãã¯ãããžãŒã»ãã¡ã»ããã䜿çšå¯èœã«ããããšã«ãããWebSphere Application Server Feature Pack for Web 2.0 ã®éçºãµããŒãããã³ã©ã³ã¿ã€ã ã»ãµã㌠ãã®äž¡æ¹ã«å¯Ÿå¿ãããã Web ãããžã§ã¯ããæ§æãããŸãããã¹ãŠã®å¿ é JAR ãã¡ ã€ã«ããããžã§ã¯ãã® Java ã®ãã«ãã»ãã¹ããã³ãããã€ã¡ã³ãèšè¿°åã«è¿œå ãã㟠ãã Dojo Toolkit ãã¡ã»ãã Dojo Toolkit ãã¡ã»ããã䜿çšå¯èœã«ããããšã«ãããDojo Web ã¢ããªã±ãŒã·ã§ã³ã® éçºçšã« Web ãããžã§ã¯ããæ§æãããŸããWebSphere Application Server Feature Pack for Web 2.0 ã«ä»å±ã® Dojo Toolkit ã«ã¯ããªãŒãã³ã»ãœãŒã¹ã® Dojo Toolkitããã ã³åºæ¬ã® Dojo Toolkit ãžã®è¿œå ã® IBM æ¡åŒµ (ATOM (ATOM ã·ã³ãžã±ãŒã·ã§ã³ã»ãã©ãŒ ããã) ããŒã¿ã»ã¢ã¯ã»ã¹çšã©ã€ãã©ãªãŒãã¢ããã°ã»ã²ãŒãžããã³ããŒã»ã²ãŒãžãã ãã³ SOAP Web ãµãŒãã¹ãžã®ç°¡æã¢ã¯ã»ã¹ãªã©) ãå«ãŸããŸãã ãããžã§ã¯ãã» ãããžã§ã¯ãã»ãã¡ã»ããã«ã€ããŠããã« ãã¡ã»ããã«ã€ããŠããã«åŠç¿ ã«ã€ããŠããã«åŠç¿ããã åŠç¿ãããæ¹ ãããæ¹ã« ãããžã§ã¯ãã»ãã¡ã»ããã¯ãç¹å®ã®æ©èœãå¿ èŠãªå Žåã«ããããžã§ã¯ãã«è¿œå ã§ãããã®æ©èœã® ãŠãããã§ãããããžã§ã¯ãã»ãã¡ã»ããããããžã§ã¯ãã«è¿œå ãããšããã®ãããžã§ã¯ãã®ç¹æ§ã«å¿ã ãŠãããŒãã£ãŒããã«ããŒãã¯ã©ã¹ãã¹ã»ãšã³ããªãŒãããã³ãªãœãŒã¹ããããžã§ã¯ãã«è¿œå ã§ã㟠ããWeb 2.0 ãã¡ã»ããã§ã¯ãWeb 2.0 察å¿ã® Web ã¢ããªã±ãŒã·ã§ã³ã®ç¹æ§ãå®çŸ©ãã㟠ãããŸããWeb 2.0 ãã¡ã»ããã§ã¯ãWeb 2.0 ãããžã§ã¯ãã«é©çšãããèŠä»¶ããã³å¶çŽãæå® ãããŸãã © 2010 IBM Corporation - 11 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ã EAR ã« ã ã 㞠㧠㯠ã ã è¿œ å ã ã 㧠ã 㯠㻠ã ã 㯠㹠ã éž æ ã® äž ã ã EAR ã ã 㞠㧠㯠ã å ã ã« ãMyMovieEARããšå ¥åããã次ãžããã¯ãªãã¯ããŸãã 8. ãŠã£ã¶ãŒãã®ãDojo ãããžã§ã¯ãã»ã»ããã¢ãããããŒãžã衚瀺ããããŸã§ã次ãžããã¯ãªãã¯ããŸãã 9. ãDojo ãããžã§ã¯ãã»ã»ããã¢ãããã§ã¯ãããã©ã«ãã§ã¯ãIBM ã§ãµããŒããããææ°ã® Dojo ã Web ãããžã§ã¯ãã«ã³ããŒãããèšå®ã«ãªã£ãŠããŸããããããã®ã»ããã¢ããã»ãªãã·ã§ã³ãå€æŽãã ã¯ãªãã¯ããŸãããDojo ãããžã§ã¯ãã»ã»ããã¢ããã®ãªãã·ã§ã³ããŠã£ã¶ãŒããéããŸãã ãDojo ãããžã§ã¯ãã» ãããžã§ã¯ãã»ã»ããã¢ããã® ã»ããã¢ããã®ãªãã·ã§ã³ã ãªãã·ã§ã³ããŠã£ã¶ãŒã ãã®ãŠã£ã¶ãŒãã¯ãWeb ãããžã§ã¯ãã§ã® Dojo Toolkit ã®äœ¿çšæ¹æ³ã決å®ããéã«åœ¹ç« ã¡ãŸãã ãããžã§ã¯ãã§ã® Dojo ã®ã»ããã¢ããã«ã¯ã以äžã® 3 ã€ã®ãªãã·ã§ã³ããããŸãã Dojo ããã®ãããžã§ã¯ã ããã®ãããžã§ã¯ãã« ãããžã§ã¯ãã«ã³ããŒããŸã ã³ããŒããŸãã ããŸããDojo ã¯ããããããã〠ã¯ãããããããã€ãã㟠ãããã€ãã㟠ãã Dojo Toolkit ã Web ãããžã§ã¯ãå ã«å«ããŸããDojo ãã©ã«ããŒã®ååãæå®ã§ © 2010 IBM Corporation - 12 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ããŸãããŸããã©ã³ã¿ã€ã ã«ä»å±ã®ããã©ã«ãã® Dojo ãã£ã¹ããªãã¥ãŒã·ã§ã³ã 䜿çšãããããããšãã䜿çšã®ã¯ãŒã¯ã¹ããŒã¹ãŸãã¯ãã¡ã€ã«ã»ã·ã¹ãã å ã® Dojo ãã£ã¹ããªãã¥ãŒã·ã§ã³ã䜿çšããããæå®ã§ããŸãã Dojo ã¯ã¯ãŒã¯ã¹ããŒã¹å ã¯ãŒã¯ã¹ããŒã¹å ã®ãããžã§ã¯ãã«ãã ãããžã§ã¯ãã«ããã ã«ãããããããããã〠ãããããããã€ãããŸã ãããã€ãããŸãã ãããŸã ã¯ãŒã¯ã¹ããŒã¹å ã®å¥ã®ãããžã§ã¯ãã«ãã Dojo ã®ã«ãŒãã»ãã©ã«ããŒãåç §ã§ ããŸãã Dojo Toolkit ã¯ã䜿çšã®ãããžã§ã¯ãã«ã³ããŒãããªãããšã«æ³šæããŠã ã ãããããã¯ãToolkit ãå«ããããžã§ã¯ããããããã€ãããŸãã Dojo ã¯ããªã¢ãŒãåŽ ãªã¢ãŒãåŽã«ãããã€ãããŠããã ãããã€ãããŠãããã ãããŠããããå ¬é CDN äžã«ãããŸãã ã«ãããŸãã ãªã¢ãŒãã»ãã±ãŒã·ã§ã³ã«ãã Dojo Toolkit ãéžæã§ããŸããDojo Toolkit ãœãŒã¹ã®ãªã¢ãŒ ãã»ãã±ãŒã·ã§ã³ã以äžã®ããã«æå®ã§ããŸãã * ãããªã㯠CDN: äžè¬ã«å ¬éãããŠããã³ã³ãã³ãã»ããªããªãŒã»ãããã¯ãŒã¯ã® URL ãå ¥åã§ããŸããã³ã³ãã³ãã»ããªããªãŒã»ãããã¯ãŒã¯ã¯ããªãŒãã³ã»ãœãŒã¹ JavaScript ã©ã€ãã©ãªãŒã«ãå°ççã«åæ£ããããã¹ãã£ã³ã°ãæäŸããŸãããã©ãŠã¶ ãŒã¯ãWeb ã¢ããªã±ãŒã·ã§ã³ã§ URL ã解決ãããšãæãè¿ãã«ãã䜿çšå¯èœãªãµãŒ ããŒããèªåçã«ãã¡ã€ã«ãããŠã³ããŒãããŸãã * ãªã¢ãŒã URI: Dojo ã®ã«ãŒãã»ãã©ã«ããŒãåç §ãããªã¢ãŒãã»ãã±ãŒã·ã§ ã³ã® URL ãå ¥åã§ããŸãã ã察å¿ãã Dojoãã»ã¯ã·ã§ã³ã§ã¯ãã䜿çšã®ãªã¢ãŒã Dojo Toolkit ã«æé©ã® Dojo ãœãŒ ã¹ã»ãã£ã¹ããªãã¥ãŒã·ã§ã³ãéžæã§ããŸããããã«ãããã³ã³ãã³ãã»ã¢ã·ã¹ããšãã£ãããŒã« ãæäŸãããŸããæ¬è£œåã«ä»å±ã®ããã©ã«ãã® Dojo 1.3.2 ãŸã㯠1.4.1 ãéžæãããã ã䜿çšã®ã¯ãŒã¯ã¹ããŒã¹ãŸãã¯ãã¡ã€ã«ã»ã·ã¹ãã ã«ãã Dojo ãã©ã«ããŒãåç §ã§ã㟠ãã © 2010 IBM Corporation - 13 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 10. ãã®ãã¥ãŒããªã¢ã«ã§ã¯ãDojo Toolkit ã Web ãããžã§ã¯ãå ã«å«ããŸãããDojo ããã®ãããžã§ã¯ ãã«ã³ããŒããŸããDojo ã¯ãããããããã€ãããŸãããã©ãžãªã»ãã¿ã³ãéžæããŸãã 11. ã次ãžããã¿ã³ãã¯ãªãã¯ãããããã€ã¡ã³ãã®ã»ããã¢ããã»ãªãã·ã§ã³ã衚瀺ããŸãã 12. ãDojoãã»ã¯ã·ã§ã³ã®ãæäŸæžã¿ããªã¹ãã§ãDojo Toolkit SDK 1.4.1ããéžæããŸãã © 2010 IBM Corporation - 14 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 13. ãçµäºããã¯ãªãã¯ãããDojo ãããžã§ã¯ãã»ã»ããã¢ããã®ãªãã·ã§ã³ããŠã£ã¶ãŒããçµäºããŸãã 14. ãçµäºããã¯ãªãã¯ããWeb 2.0 察å¿ã® Web ãããžã§ã¯ããäœæããŸãã Web ã ã 㞠㧠㯠ã MyMovieWEB ã äœ æ ã ã 㟠ã ã ã ã¡ ã» ã ã ã æ å¹ ã« ã ã Dojo Toolkit ã WebContent/dojo ãã©ã«ããŒã«ã€ã³ããŒããããŸãã © 2010 IBM Corporation - 15 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã Web 2.0 察å¿ã® Web ãããžã§ã¯ããäœæããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã Web 2.0 察å¿ã® Web ãããžã§ã¯ãã®äœææ¹æ³ã Web 2.0 ã¢ããªã±ãŒã·ã§ã³éçºçšã®ãããžã§ã¯ãã»ãã¡ã» ããã®ã«ã¹ã¿ãã€ãºæ¹æ³ã WebSphere Application Server Feature Pack for Web 2.0 ã«ãã䜿çšå¯èœã«ãªã Web 2.0 ãããžã§ã¯ãã» ãã¡ã»ããã«ã€ããŠã Dojo 察å¿ã® Web ãããžã§ã¯ãã®ã»ããã¢ããã»ãª ãã·ã§ã³ã®å€æŽæ¹æ³ã © 2010 IBM Corporation - 16 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ Web ããŒãžã® ããŒãžã®äœæ 2.2 ãã®æŒç¿ã§ã¯ãWeb ããŒãžã®äœææ¹æ³ã«ã€ããŠåŠç¿ããŸãã ShowMovies Web ããŒãžãäœæããã«ã¯ã以äžã®ããã«ããŸãã 1. ããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã§ããMyMovieWEBããå±éããŸãã 2. ãWebContentããå³ã¯ãªãã¯ãããæ°èŠã > ãWeb PageããšéžæããŸãã ãæ°èŠ Web ããŒãžããŠã£ã¶ ãŒããéããŸãã 3. ããã¡ã€ã«åããã£ãŒã«ãã«ãShowMoviesããšå ¥åããŸãã 4. ããã³ãã¬ãŒãããªã¹ãã§ããBasic Templatesã > ãHTML/XHTMLããšã¯ãªãã¯ãããçµäºããã¯ãªãã¯ã㟠ãã ShowMovies.html ãäœæããããšãã£ã¿ãŒå ã«éããŸãã © 2010 IBM Corporation - 17 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã Dojo ãŠã£ãžã§ãããå«ãã HTML Web ããŒãžãäœæããŸã ãã © 2010 IBM Corporation - 18 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2.3 Web ããŒãžãžã® ããŒãžãžã® Dojo ã¬ã€ã¢ãŠãã» ã¬ã€ã¢ãŠãã»ãŠã£ãžã§ããã® ãŠã£ãžã§ããã®è¿œå ã ã® æŒ ç¿ ã§ ã¯ ã Border Container ㊠㣠㞠㧠ã ã ã ã ㌠㞠㫠远 å ã ã ã ãš ã« ã ã ã My Movie Web Application ã® Web ã¯ã©ã€ã¢ã³ãã»ã€ã³ã¿ãŒãã§ãŒã¹ã®äœæãéå§ããŸãããã®æŒç¿ã¯ãWeb ã¢ããªã±ãŒ ã·ã§ã³äœæçšã®ããŸããŸãª Dojo ããŒã«ã調ã¹ãæ©äŒãšããªããŸãã 1. ãWebãããŒã¹ãã¯ãã£ãã«åãæ¿ããŸãã 2. ShowMovies.html ãéã ãŠã ãŸã£ã å Žåãã ãšã³ã¿ãŒãã©ã€ ãºã» ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã§ã ãMyMovieWEBã > ãWebContentããå±éããShowMovies.html ãããã«ã»ã¯ãªãã¯ããŸããã㌠ãžã»ãã¶ã€ããŒã§ããŒãžãéããŸãã ããŒãžã» ããŒãžã»ãã¶ã€ã㌠ããŒãžã»ãã¶ã€ããŒã«ã¯ãWeb ã¢ããªã±ãŒã·ã§ã³ã®éçºã«åœ¹ ç«ã€ã4 ã€ã®äŸ¿å©ãªãã€ã³ãçšæãããŠããŸãã ãã¶ã€ã³ ããã¶ã€ã³ããã€ã³ã¯ããžã¥ã¢ã«ç·šéæ©èœãå®åãã WYSIWYG ç°å¢ã§ããããã¬ãããããã³ããšã³ã¿ãŒãã©ã€ãºã» ãšã¯ã¹ãããŒã©ãŒããã¥ãŒããã®ãã©ãã°ã»ã¢ã³ãã»ãããããå¯èœ ã§ãã ãœãŒã¹ ããœãŒã¹ããã€ã³ã§ã¯ããœãŒã¹ã»ã³ãŒããšããŒã¯ã¢ãããçŽæ¥åŠç ã§ããŸãã åå² ãåå²ããã€ã³ã¯ã2 ã€ä»¥äžã®ãã€ã³ã 1 ã€ã®åå²ç»é¢ã㥠ãŒã«çµåããŸããããã©ã«ãã¯ããèšèšããã€ã³ãšããœãŒã¹ãã〠ã³ã§ã®åå²ã§ããåå²ç»é¢ã® 1 ã€ã®éšåã§å ããå€æŽã¯ã åå²ç»é¢ã®ããäžæ¹ã®éšåã«å³åº§ã«è¡šç€ºãããŸããç»é¢ã¯æ°Ž å¹³ãŸãã¯åçŽã«åå²ã§ããŸãã ãã¬ãã¥ãŒ ããã¬ãã¥ãŒããã€ã³ã¯ãçŸè¡ããŒãžãå€éš Web ãã©ãŠã¶ãŒ ã§è¡šç€ºããå Žåã®äºæ³ãããå€èŠ³ã瀺ããèªã¿åãå°çšã®ã ã¥ãŒã§ããFirefox ãŸã㯠Internet Explorer ã§ã¯ããŒãžã ã©ã®ããã«è¡šç€ºããããã確èªã§ããŸãã 3. Page Designer ã§ããã¶ã€ã³ãã¿ããéžæããŸãã © 2010 IBM Corporation - 19 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 4. ããã¬ãããã§ãDojo ã¬ã€ã¢ãŠãã»ãŠã£ãžã§ãããããã¯ãŒãã¯ãªãã¯ããŸãã ãã¬ãã Dojo 察å¿ã® Web ãããžã§ã¯ãã§äœæ¥ããå Žåãããã¬ããã ã«ã¯ããã¯ãŒå¥ã«ç·šæãããããŸããŸãª Dojo ãŠã£ãžã§ããã å«ãŸããŠããŸãããããã®ãŠã£ãžã§ããã Web ããŒãžã«ãã©ã ã°ã»ã¢ã³ãã»ããããã§ããŸãããŠã£ãžã§ããã®äžã«ã«ãŒãœã«ã移 åãããšãåãŠã£ãžã§ããã®èª¬æã衚瀺ã§ããŸãã ããã¬ããããã¥ãŒãéããŠããªãå Žåã¯ãããŠã£ã³ããŠã > ãã ã¥ãŒã®è¡šç€ºã > ããã¬ããããéžæããŸãã 5. ãBorderContainerããŠã£ãžã§ãããéžæããŠãããŒãžã«ãã©ãã°ããŸãã ãInsert Border Containerã ãŠã£ã³ããŠãéããŸãããã®ãŠã£ã³ããŠã§ã¯ããHeadlineããšãSidebarããšãã 2 ã€ã®èšèšã¢ãŒããéžæ ã§ããŸããè¿œå ããé åãéžæãããšãããã«å¿ã㊠BorderContainer ã Web ããŒãžã«ã¬ã³ã ãªã³ã°ãããæ§åã瀺ããã¬ãã¥ãŒã衚瀺ãããŸãã 6. ãTopãé åãéžæãããOKããã¯ãªãã¯ããŸããBorderContainer ãŠã£ãžã§ããã Web ããŒãžã«æ¿å ¥ã ããŸãã © 2010 IBM Corporation - 20 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ãããããã£ãŒããã¥ãŒã䜿çšããŠãBorderContainer ãŠã£ãžã§ãããŸãã¯ä»ã®ã¬ã€ã¢ãŠãã»ãŠã£ãžã§ãã ã®ããããã£ãŒãç·šéã§ããŸããããã¶ã€ã³ããã€ã³ã§ãBorderContainerããéžæããŠããããããã ã£ãŒããã¥ãŒãéããšãç·šéå¯èœãªããŸããŸãªããããã£ãŒã衚瀺ãããŸãã ãããããã£ãŒããã¥ãŒãéããŠããªãå Žåã¯ãããŠã£ã³ããŠã > ããã¥ãŒã®è¡šç€ºã > ãããããã£ãŒããéžæããŸãã 8. ãBorderContainerãã¿ãã®ãPropertiesããã£ãŒã«ãã«ãheight: 100%; width: 100% ãšå ¥åããŸãã 9. BorderContainer ㊠㣠㞠㧠ã ã ã« å¥ ã® é å ã è¿œ å ã ã 㫠㯠ã ã BorderContainer ã ã¿ ã ã® äž ã® ãRegionãã¿ããã¯ãªãã¯ãããè¿œå ããã¯ãªãã¯ããŸãã 10. äœæããããã®é åã®ãé åãã»ã«ãã¯ãªãã¯ããŸãã 11. ããããããŠã³ã»ãªã¹ããããcenterãã®å€ãéžæããŸãã é åãã³ã³ãããŒã®äžå€®ã«äœçœ®èª¿æŽãã㟠ãã 12. åæ§ã«ãé åãè¿œå ããããããããŠã³ã»ãªã¹ããããrightããéžæããŸããé åãã³ã³ãããŒã®äžå€®ã« äœçœ®èª¿æŽãããŸãã © 2010 IBM Corporation - 21 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 13. ã ãã¶ã€ ã³ã ã〠ã³ã§ BorderContainer ã®äžéšé åã éžæã ãŸããã ãããã㣠㌠ã ãã¥ãŒã® ãBorderContainerãã¿ãã®äžã«ãContentPaneãã¿ãã衚瀺ãããŸãã 14. ãPropertiesããã£ãŒã«ãã®é£ã®ãåç §ããã¿ã³ãã¯ãªãã¯ããŸãã ãæ°èŠã¹ã¿ã€ã«ããã€ã¢ãã°ãéã㟠ãã 15. å·ŠåŽã®ãã€ã³ã§ãããã¹ãã»ã¬ã€ã¢ãŠãããéžæããŸãã 16. å³åŽã®ãã€ã³ã®ãæ°Žå¹³æ¹åã®äœçœ®åãããã°ã«ãŒãã§ãäžå€®ããã¿ã³ãéžæãããOKããã¯ãªãã¯ã㟠ãã © 2010 IBM Corporation - 22 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 17. ããã¶ã€ã³ããã€ã³ã§ BorderContainer ã®äžéšé åãéžæãããMy Movie Web Application! ããš å ¥åããŸãã 18. ããŒãžãä¿åããŸããããŒã«ã»ããŒã®ãä¿åãã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã Dojo Toolkit ã«ã€ããŠããã«åŠç¿ ã«ã€ããŠããã«åŠç¿ãã åŠç¿ãã Dojo Toolkit ã¯ã匷åãã€æè»ãªã¢ãžã¥ã©ãŒ AJAX ãœãã㊠ã§ã¢éçºãããã§ãããã㯠3 ã€ã®äž»èŠãªå±€ã«åãããŠã㟠ãã Dojo Core - AJAX éçºã«å¿ èŠãªãã¹ãŠã®äž»èŠæ©èœã« å ããä»ã®ããŒã«ãããã«ã¯ãªãå€æ°ã®æ©èœãåããŠã㟠ãã Dijit - AJAX ã¢ããªã±ãŒã·ã§ã³ã®éçºæã«äœ¿çšã§ããã察 話æ§ã«å¯ãã ãé«å質ãªãŠã£ãžã§ãããšããŒãã®ã»ããã DojoX (Dojo eXtensions) - AJAX ã¢ããªã±ãŒã·ã§ã³ã® éçºã«åœ¹ç«ã€ãã®ã®ããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ã«å¿ èŠãš ããããã§ã¯ãªããŠã£ãžã§ãããš API ãå«ããããã®ã¢ãž ã¥ãŒã«ã Dojo Toolkit ã®è©³çŽ°ã«ã€ããŠã¯ãDojo Toolkit Web ãµã€ãã« ã¢ã¯ã»ã¹ããŠãã ããã © 2010 IBM Corporation - 23 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã Dojo ã¯ã©ã€ã¢ã³ãçšã® Web ããŒãžã®ã³ãŒããäœæããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã © 2010 IBM Corporation Web ããŒãžã§ Dojo éçºãå¯èœã«ããæ¹æ³ã Dojo ãŠã£ãžã§ããã Web ããŒãžã«è¿œå ããæ¹æ³ã Dojo Toolkit ã«ã€ããŠã - 24 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ Dojo ããŒã¿ã» ããŒã¿ã»ã°ãªããã® ã°ãªããã®äœæ 2.4 ãã®æŒç¿ã§ã¯ãWeb ã¯ã©ã€ã¢ã³ãã»ã€ã³ã¿ãŒãã§ãŒã¹ã®äœæãç¶è¡ããDojo ããŒã¿ã»ã°ãªããã»ãŠã£ãžã§ãã ãããŒãžã«è¿œå ããã°ãªããã«ããŒã¿ãåã蟌ã¿ãŸãã ããŒã¿ãžã® ããŒã¿ãžã®ã¢ã¯ã»ã¹ ãžã®ã¢ã¯ã»ã¹ My Movie Web Application ã§ã¯ãJSON ããŒã¿äº€æ圢åŒã 䜿çšããŠããŒã¿ã«ã¢ã¯ã»ã¹ããŸããããŒã¿ã«ã¢ã¯ã»ã¹ããã« ã¯ã2 ã€ã®æ¹æ³ããããŸãã1 ã€ã¯ãããŒã¿ãä¿æããŠãã JSON ãã¡ã€ã«ããçŽæ¥ã¢ã¯ã»ã¹ããæ¹æ³ããã 1 ã€ã¯ EJB ã POJO ãšãã£ããµãŒããŒã»ãµã€ã Java ãªããžã§ã¯ããã ããŒã¿ãååŸããJSON ãã¡ã€ã«ãåºåãããµãŒããŒã»ãµã€ã ã®ãµãŒãã¹ãæ¢çŽ¢ããæ¹æ³ã§ãã 2.4 ç¯ã§ã¯ãJSON ãã¡ã€ã«ãããŒã¿ã»ãœãŒã¹ãšããŠäœ¿çšã㟠ã ã ã ã ã ã ã ã JSON ã 㡠〠㫠ã ã ㊠㳠ã ㌠ã (*) ã ã WebContent ãã©ã«ããŒã«ä¿åããŠçœ®ããŠãã ããã 5.2 ç¯ã§ã¯ãRPC ã¢ããã¿ãŒã»ãµãŒãã¹ã䜿çšããŠãEJB ãã ããŒã¿ãååŸããŸãã * JSON ãã¡ã€ã«ã®ããŠã³ããŒã URL http://publib.boulder.ibm.com/infocenter/radhelp/v8/topic/com.ibm.rad.samptut.doc/tutorials/web/ resources/MovieList.json 2.4.1 JSON ãã¡ã€ã«ã® ãã¡ã€ã«ã®ç¢ºèª ãŸããã¢ã¯ã»ã¹ãã JSON ãã¡ã€ã«ã確èªããŸãã 1. WebContent ãã©ã«ããŒã«ä¿åãããMovieList.json ãå³ã¯ãªãã¯ãããã¢ããªã±ãŒã·ã§ã³ããéãã -> ãJSON ãšãã£ã¿ãŒããã¯ãªãã¯ããŸãã JSON ãšãã£ã¿ãŒ JSON ãšãã£ã¿ãŒã¯ãJSON ããŒã¿ã®ãã©ãŒããããããã³ã匷 調/è²ã¥ã衚瀺ã«ãããã©ãŒãããã®æ§é ç解ã容æã«ã㟠ãããŸããå®è¡æã®ããã«ããŒã¿ã®å§çž®ãè¡ããŸãã © 2010 IBM Corporation - 25 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2. JSON ãšãã£ã¿ãŒãéããŸãã 3. JSON ããŒã¿æ§é ãç解ããããããããã«ãã©ãŒããããããŸããJSON ãšãã£ã¿ãŒå ã§å³ã¯ãªã㯠ãããSourceã -> ããã©ãŒãããããã¯ãªãã¯ããŸãã 4. JSON ããŒã¿ããã©ãŒããããããŸãã 5. JSON ãšãã£ã¿ãŒã®åŒ·èª¿ã»è²ã¥ã衚瀺ãå€æŽããŸããã¡ãã¥ãŒã»ããŒãããããŠã£ã³ããŠã -> ãèšå®ãã ã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 26 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 6. ãèšå®ããã€ã¢ãã°ã§ããWebã -> ãJSONã -> ããšãã£ã¿ãŒããã¯ãªãã¯ããŸããã察å¿ããæ¬åŒ§ã®åŒ· 調衚瀺ãã«ãã§ãã¯ãå ¥ãã匷調衚瀺ãããè²ãã®èšå®ãèªç±ã«å€æŽããŸãã JSON ãšãã£ã¿ãŒã® ãšãã£ã¿ãŒã®èšå®ïŒ èšå®ïŒå¯Ÿå¿ãã 察å¿ããæ¬åŒ§ ããæ¬åŒ§ã® æ¬åŒ§ã®åŒ·èª¿è¡šç€ºïŒ åŒ·èª¿è¡šç€ºïŒ ãèšå®ããã€ã¢ãã°ã®ãWebã -> ãJSONã -> ããšãã£ã¿ãŒãã« ãŠã察å¿ããæ¬åŒ§ã匷調衚瀺ããèšå®ãã§ããŸããã察å¿ã ãæ¬åŒ§ã®åŒ·èª¿è¡šç€ºãã«ãã§ãã¯ãå ¥ããããšã«ãã£ãŠããšãã£ã¿ ãŒäžã§éžæããæ¬åŒ§ã«å¯Ÿå¿ããæ¬åŒ§ããæå®ãããè²ãã§åŒ· 調衚瀺ãããŸãã © 2010 IBM Corporation - 27 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ãèšå®ããã€ã¢ãã°ã§ããWebã -> ãJSONã -> ããšãã£ã¿ãŒã -> ãæ§æã®è²ã®æå®ããã¯ãªãã¯ã㟠ããæ§æã®è²ããã©ã³ããèªç±ã«å€æŽããŸãã JSON ãšãã£ã¿ãŒã® ãšãã£ã¿ãŒã®èšå®ïŒ èšå®ïŒæ§æã® æ§æã®è²ã®æå®ïŒ æå®ïŒ ãèšå®ããã€ã¢ãã°ã®ãWebã -> ãJSONã -> ããšãã£ã¿ãŒã -> ãæ§æã®è²ã®æå®ãã«ãŠãæ§æã®è²ãããã³ããã©ã³ããæ å®ã§ããŸãã èšå®å¯èœãªæ§æã®èŠçŽ ã¯ä»¥äžã§ãã ååïŒå€ã«å¯ŸããããŒãšãªãååã äŸïŒ{âactorâ : âVivien Leighâ,⊠ã¹ããªã³ã°ïŒæåååã®å€ã äŸïŒ{âactorâ : âVivien Leighâ,⊠© 2010 IBM Corporation - 28 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ çªå·ïŒæ°å€åã®å€ã äŸïŒ{âratingâ : 3.0,⊠å®æ°ïŒããŒã¿ãµã€ãºãçž®å°ããããã«ãç¹°ãè¿ããã ååã眮ãæããå®æ°ã äŸïŒïœâresultâ : [{âactorâ : âVivien Leighâ,⊠ãå®æ°çœ®æãããšã{r : [{a : âVivien Leghâ,⊠ãªããžã§ã¯ãïŒé åºä»ããããªãååãšå€ã®ã»ããã äŸïŒ{âactorâ : âVivien Leighâ , âtitleâ : âGone with the Windâ} é åïŒé åºä»ããããå€ã®ã»ããã äŸïŒ{"result": [{"actor":"Vivien Leigh","title":"Gone with the Windâ}, {"actor": "Michael J Fox", "title":"Back To The Future"}] } èšå®å¯èœãªãã©ã³ãã¯ä»¥äžã§ãã 倪å ã€ã¿ãªã㯠æã¡æ¶ãç· äžç· 8. ããŒã¿ãµã€ãºãçž®å°ããããã« JSON ãã¡ã€ã«ãå§çž®ããŸããJSON ãšãã£ã¿ãŒå ã§å³ã¯ãªãã¯ãã ãSourceã -> ãå§çž®ããã¯ãªãã¯ããŸãã 9. JSON ãã¡ã€ã«ãå§çž®ãããããšã確èªããä¿åããŸãã © 2010 IBM Corporation - 29 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2.4.2 ããŒã¿ã» ããŒã¿ã»ã°ãªããã® ã°ãªããã®äœæ 次ã«ãã ãŒããŒã»ãªããžã§ã¯ãã衚瀺ããã°ãªãããäœæããŸãã 1. ããã¬ãããã§ãDojo ããŒã¿ã»ãŠã£ãžã§ãããããã¯ãŒãã¯ãªãã¯ããŠéããŸãã 2. ãDataGridãã BorderContainer ã®ãcenterãé åã«ãã©ãã°&ããããããŸããDataGrid ãŠã£ãžã§ã ãã«ãããã¹ãã¬ããã·ãŒãã®ãããªè¡šãäœæãããŸãã 3. ãDojo DataGridããã€ã¢ãã°ãéããŸãããã°ãªãããåã蟌ã JavaScript ã®çæããã§ãã¯ã»ãã㯠ã¹ãã¯ãªã¢ããŸãã 4. ãåãã»ã¯ã·ã§ã³ã§ãåã®èŠåºãã©ãã«ãš JavaScript ããããã£ãŒãåããšã«æå®ããŸãã a. ãèŠåºãã©ãã«ããã£ãŒã«ãã«ãã¿ã€ãã«ããšå ¥åããŸãã b. ãJavaScript ããããã£ãŒããã£ãŒã«ãã«ãtitleããšå ¥åããŸãã c. ãè¿œå ããã¯ãªãã¯ããåèŠåºãã©ãã« - JavaScript ããããã£ãŒã®ãã¢ãäžã®è¡šã«è¿œå ããŸãã d. åã®ã¹ããããç¹°ãè¿ããŠã以äžã®åèŠåºãã©ãã« - JavaScript ããããã£ãŒã®ãã¢ã è¿œå ããŸãã èŠåºã èŠåºãã©ãã« JavaScript ããããã£ãŒ ã¿ã€ãã« title ç£ç£ director 圹è actor 説æ description © 2010 IBM Corporation - 30 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5. ãçµäºããã¯ãªãã¯ããŸããããã¶ã€ã³ããã€ã³ã§ãDataGrid ãè¿œå ãããŠããããšã確èªã§ããŸãããŸãã ããœãŒã¹ããã€ã³ã§ãDataGrid ã® html ããŒã¯ã¢ãããè¿œå ãããŠããããšã確èªã§ããŸããfield å± æ§ã«ã¯ JavaScript ããããã£ãŒãåã蟌ãŸããŠããã察å¿ããèŠåºãã©ãã«ãååãšããŠèšå®ã ããŠããŸãã © 2010 IBM Corporation - 31 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ãã¬ããããã® ãã¬ããããã® Dojo ãŠã£ãžã§ããã® ãŠã£ãžã§ããã®ãã©ãã°&ãããã ãã©ãã° ãããã ãã¬ãããã Dojo ãŠã£ãžã§ããããã©ãã°&ããããããããšã§ãåãŠã£ãžã§ããã®è¡šç€º ã«å¿ èŠãªèšå®ãèªåã§çæãããŸããå ·äœçã«ã¯ãdojo.require ã¹ããŒãã¡ã³ãã ããã³ãCSS ãªã³ã¯ã®èšå®ãçæãããŸãã dojo.require ã¹ããŒãã¡ã³ã dojo.require ã¹ããŒãã¡ã³ãã¯ãWeb ããŒãžäžã®ãŠã£ãžã§ããã«å¿ èŠãªãã¹ãŠã® Dojo ããã±ãŒãžãããŒãããŸãã ã 㬠ã ã ã ã DataGrid ã ã ã© ã ã° & ã ã ã ã ã ã ã 㚠㧠ã DataGrid ã ã ã³ ItemFileReadStore ã dojo.require ã¹ããŒãã¡ã³ããšããŠèªåçã«è¿œå ãã㊠ããŸãã CSS ãªã³ã¯ CSS ãªã³ã¯ã¯ããŠã£ãžã§ãããåç §ããã¹ã¿ã€ã«ã·ãŒããžã®ãªã³ã¯ã§ãããã¬ãããã DataGrid ããã©ãã°&ããããããããšã§ãCSS ãªã³ã¯ã Web ããŒãžã®ãœãŒã¹ã»ã³ ãŒãã«è¿œå ãããŸããtundra.css ãš dijit.css ã¯ããŠã£ãžã§ããã®ã«ãã¯ã»ã¢ã³ãã»ã ã£ãŒã«ãäžè²«æ§ã®ãããã®ãšãªããããDojo ã«çšæãããŠããããã©ã«ãã®ããŒã ã®äžéšã§ãã Grid.css ãš tundraGrid.css ã¯ãDataGrid 衚瀺ã«åºæã®ã¹ã¿ã€ã«ã·ãŒãã§ãã 6. ããã§ãããŒã¿ã»ã°ãªããã«ããŒã¿ãåã蟌ããããã«ãªããŸããã次ã«ã³ã³ãã³ãã»ã¢ã·ã¹ãã䜿çšã㊠script ã¿ã°ãè¿œå ããŸããããã«ãDataGrid ã«ããŒã¿ãåã蟌ã JavaScript ã³ãŒããå ¥ããããš ã«ãªããŸããæåã§ã³ã³ãã³ãã»ã¢ã·ã¹ããèµ·åããã«ã¯ãCtrl + ã¹ããŒã¹ãæŒããŸãã © 2010 IBM Corporation - 32 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ã³ã³ãã³ãã» ã³ã³ãã³ãã»ã¢ã·ã¹ã ã³ã³ãã³ãã»ã¢ã·ã¹ãã¯ãã¿ã°ãŸãã¯é¢æ°ãæ¿å ¥ãããå®æãã ããããäžã§ããããã¯ã³ãŒãè¡ãå®æãããäžã§åœ¹ç«ã¡ãŸ ããã³ã³ãã³ãã»ã¢ã·ã¹ãã¯ããœãŒã¹ã»ãã¡ã€ã«å ã®ã«ãŒãœã«äœçœ® ãã³ã³ããã¹ããšããŠãå®æ圢ã®åè£ãæ瀺ããŸããHTMLã JavaScriptãããã³ Dojo ã§ã³ã³ãã³ãã»ã¢ã·ã¹ããå©çšã§ã ãŸããã³ã³ãã³ãã»ã¢ã·ã¹ãã§ã¯ãdojo ãã³ãã¬ãŒããäžéšã® é¢æ°çšã«çšæãããŠããŸããããã«ãããé¢æ°ã®æ£ããäœ¿çš æ³ãèšè¿°ãã䟿å©ãªãã³ãã¬ãŒãã»ã³ãŒãããœãŒã¹ã«åã蟌ã㟠ãã 7. ããœãŒã¹ããã€ã³ã§ãdojo.require ã¹ããŒãã¡ã³ãã®å ¥ã£ã </script> ã¿ã°ã®äžã«ã< ãšå ¥åããŸããã³ ã³ãã³ãã»ã¢ã·ã¹ãã衚瀺ãããŸãã 8. script ãéžæããŸãã script ãéžæãããšã次ã®ã³ãŒããè¿œå ãããŸãã <script type="text/javascript"> </script> 9. 空㮠script ã¿ã°ã®å éšã§ dojo. ãšå ¥åããCTRL + ã¹ããŒã¹ãæŒããŠã³ã³ãã³ãã»ã¢ã·ã¹ããèµ·å ããŸããdojo.ad..ãšå ¥åããã«ã€ããŠã衚瀺ãããã³ã³ãã³ãã»ã¢ã·ã¹ãã®ãªãã·ã§ã³ããã£ã«ã¿ãŒåŠ çãããŠãããŸãã 10. dojo.addOnLoad é¢æ°ãéžæããŸããaddOnLoad é¢æ°ã«ã¯ãããŒã¿ã»ã°ãªããã«åã蟌ãããŒã¿ ãååŸããã³ãŒããå ¥ããŸãã © 2010 IBM Corporation - 33 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ addOnLoad é¢æ° addOnLoad ã¯ãããŒãžããŒãåŸã«å®è¡ãããé¢æ°ãç»é²ã ããdojo é¢æ°ã§ãããã®ã·ããªãªã§ã¯ããŒãžããŒãåŸã«ã㌠ã¿ã®èªã¿èŸŒã¿ãšã°ãªãããžã®è¡šç€ºãè¡ããããªåŠçãèšè¿°ã㟠ãã 11. 次ã«ããµãŒãã¹ URL ãŸã㯠JSON ãã¡ã€ã«ããããŒã¿ãååŸãã Ajax é¢æ°ãäœæããŸãã dojo xhrGet é¢æ°ã䜿çšããŸãã xhrg ãšå ¥åããdojo.xhrGet ãã³ãã¬ãŒããéžæããŸãã ã³ã³ãã³ãã»ã¢ã·ã¹ãã«ãããxhrGet é¢æ°çšã® dojo ãã³ãã¬ãŒããæäŸãããŸãããããéžæãããšãã ãŒã«ãããã«ç€ºãããã³ãŒãããœãŒã¹ã«åã蟌ãŸããŸããæ¿å ¥ãããã³ãŒãã¯æ¬¡ã®ãããªãã®ã§ãã dojo.xhrGet({ url : "url", handleAs : "text", load : function(response, ioArgs) { }, error : function(response, ioArgs) { } }); 12. URL å±æ§ã JSON ãã¡ã€ã«ãžã®çžå¯Ÿãã¹ãMovieList.jsonãã«å€æŽããŸãã 13. handleAs å±æ§ã json ã«èšå®ããŸãã © 2010 IBM Corporation - 34 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ url : "MovieList.json", handleAs : "json", 14. ããŒã¿ãæ£åžžã«ããŒãããããšãload ããããã£ãŒå ã§å®£èšãããé¢æ°ãå®è¡ãããããšã«ãªããŸãã load ããããã£ãŒã«ä»¥äžã®ã³ãŒããè¿œå ããŸãããã®ã³ãŒãã¯ãããŒã¿ã»ã°ãªããã«ããŒã¿ãåã蟌㿠ãŸãã var newData = { identifier : "title", items : response.result }; MovieList.json ã«å®çŸ©ãããããŒã¿ã®å±æ§åã® äžã§ããŠããŒã¯ ID ã«ããå±æ§ãæå®ããŸãã MovieList.json ã®äžã§æ¬äœãšãªãããŒã¿é åã® å±æ§åã item å€æ°ã«ä»£å ¥ããŸãã var dataStore = new dojo.data.ItemFileReadStore({ data : newData, id : "dataStoreId" }); var grid = dijit.byId("gridId"); Step 5 ã§è¿œå ãã DataGrid ã® id å±æ§ãšãã ããå¿ èŠããããŸãã grid.setStore(dataStore); äžèšã®ã³ãŒãã¯ãresponse ã«å«ãŸããããŒããããããŒã¿ã dojo.data.ItemFileReadStore ãå¿ èŠãš ãã圢åŒã«å€æŽãã圢åŒå€æŽåŸã®ããŒã¿ãå ¥ã£ã ItemFileReadStore ããŒã¿ã»ã¹ãã¢ãäœæãããã ãããããããŒã¿ã»ã°ãªããã«è¿œå ããŸããå€æ°åã®åã« var ããŒã¯ãŒããè¿œå ãããšãå€æ°ã®æå¹ç¯å² 㯠load é¢æ°ã«å¯ŸããŠããŒã«ã«ã«ãªããŸãã 15. error å±æ§ã§å®£èšãããé¢æ°ã«ã¯ã次ã®ã³ãŒããè¿œå ããŸãã alert("An error occurred while invoking the service."); 16. ããŒãžãä¿åããŸããããŒã«ã»ããŒã®ãä¿åãã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã ShowMovies.html ã®ãœãŒã¹ã»ã³ãŒãã¯æ¬¡ã®ããã«ãªãã¯ãã§ãã <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" type="text/css" © 2010 IBM Corporation - 35 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ href="dojo/dijit/themes/dijit.css"> <link rel="stylesheet" type="text/css" href="dojo/dijit/themes/tundra/tundra.css"> <title>ShowMovies</title> <meta http-equiv="Content-Type" content="text/html; charset=windows-31j"> <script type="text/javascript" djconfig="isDebug: false, parseOnLoad: true" src="dojo/dojo/dojo.js"></script> <script type="text/javascript"> dojo.require("dijit.layout.BorderContainer"); dojo.require("dijit.layout.ContentPane"); dojo.require("dojox.grid.DataGrid"); dojo.require("dojo.data.ItemFileReadStore"); </script> <script type="text/javascript"> dojo.addOnLoad(function() { dojo.xhrGet({ url : "MovieList.json", handleAs : "json", load : function(response, ioArgs) { var newData = { identifier : "title", items : response.result }; var dataStore = new dojo.data.ItemFileReadStore({ data : newData, id : "dataStoreId" }); var grid = dijit.byId("gridId"); grid.setStore(dataStore); }, error : function(response, ioArgs) { alert("An error occurred while invoking the service."); } © 2010 IBM Corporation - 36 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ }); }); </script> <link rel="stylesheet" type="text/css" title="Style" href="dojo/dojox/grid/resources/Grid.css"> <link rel="stylesheet" type="text/css" title="Style" href="dojo/dojox/grid/resources/tundraGrid.css"> </head> <body class="tundra"> <div dojoType="dijit.layout.BorderContainer" id="BorderContainer" design="headline" style="height: 100%; width: 100%"> <div dojoType="dijit.layout.ContentPane" region="top" style="text-align: center">My Movie Web Application!</div> <div dojoType="dijit.layout.ContentPane" id="" title="" region="center"> <table id="gridId" dojotype="dojox.grid.DataGrid" autowidth="true" rowselector="20px"> <thead> <tr> <th field="title">ã¿ã€ãã«</th> <th field="director">ç£ç£</th> <th field="actor">圹è </th> <th field="description">説æ</th> </tr> </thead> </table> </div> <div dojoType="dijit.layout.ContentPane" id="" title="" region="right"></div> </div> </body> </html> ãããŸã§ã§ãShowMovies.html ã®ãã¬ãã¥ãŒã確èªããŠã¿ãŸããShowMovies.html ãéããããã¬ã㥠ãŒãã¿ããã¯ãªãã¯ããŠãã ãããã°ãªããäžã«æ ç»ããŒã¿ã衚瀺ãããããšã確èªã§ããŸã © 2010 IBM Corporation - 37 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 泚æïŒ æ³šæïŒ Internet Explore ã§ãã¬ãã¥ãŒã確èªããå Žåã以äžã®ããã«ã³ãŒããä¿®æ£ããå¿ èŠã ãããŸãã ã» dojo.xhrGet å ã« headers å±æ§ã®è¿œå url : "MovieList.json", headers : { "If-Modified-Since" : 0 }, handleAs : "json",⊠㻠DataGrid ããŒãã«ã® âautowidthâããããã£ãŒã®é€å» <table id="gridId" dojotype="dojox.grid.DataGrid" autowidth="true" rowselector="20px"> © 2010 IBM Corporation - 38 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã Dojo ã¯ã©ã€ã¢ã³ãçšã® Web ããŒãžã®ã³ãŒããäœæããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã ããŒã¿ã»ã°ãªããã Web ããŒãžã«è¿œå ããæ¹æ³ã Dojo ã³ãŒããçŽ æ©ãäœæããããã«ã³ã³ãã³ãã»ã¢ã·ã¹ã ã䜿çšããæ¹æ³ã © 2010 IBM Corporation - 39 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ã«ã¹ã¿ã Dojo ã¬ã€ã¢ãŠãã» ã¬ã€ã¢ãŠãã»ãŠã£ãžã§ããã® ãŠã£ãžã§ããã®äœæ 2.5 ãã®æŒç¿ã§ã¯ããŠãŒã¶ãŒãã ãŒããŒã®è©äŸ¡ãã³ã¡ã³ãè¿œå ãã§ãããã«ã¹ã¿ã Dojo ãŠã£ãžã§ãããäœæã ãŸãã Dojo ãŠã£ãžã§ãã Dojo ãŠã£ãžã§ãã㯠3 ã€ã®ãã¡ã€ã«ã§æ§æãããŠããŸãã HTML ãã¡ã€ã« JavaScript ãã¡ã€ã« CSS ãã¡ã€ã« ãæ°èŠ Dojo ãŠã£ãžã§ããããŠã£ã¶ãŒãã§ãããã® 3 ã€ã®ãã¡ã€ ã« ã äœ æ ã ã 㟠ã ã ã ã ã ã ã HTML ã ã³ ã 㬠㌠ã ãš JavaScript ãã¡ã€ã«ãç·šéããŸãã 1. ããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã§ dojo ãã©ã«ããŒãå³ã¯ãªãã¯ãããæ°èŠã > ãDojo ãŠã£ãžã§ããããéžæããŸãã ãæ°èŠ Dojo ãŠã£ãžã§ããããŠã£ã¶ãŒãã衚瀺ãããŸãã © 2010 IBM Corporation - 40 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2. ããŠã£ãžã§ããåããã£ãŒã«ãã« RateAndComment ãšå ¥åããŸãã ãŠã£ãžã§ããã«é¢é£ãã HTML ãã³ãã¬ãŒããšã¹ã¿ã€ã«ã·ãŒãã®ãã¹ãèªåçã«å ¥åãããŸãã 3. ãçµäºããã¯ãªãã¯ããŸãã ãŠã£ãžã§ããã® JavaScript ãœãŒã¹ã»ãã¡ã€ã«ãäœæããããšãã£ã¿ãŒã§éã ããŸãã © 2010 IBM Corporation - 41 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 泚æïŒ æ³šæïŒ RateAndComment.js ã® 2 è¡ç®ãæååãããŠããå Žåãä¿ç®¡ãã§ããŸããã ãã®è¡ãåé€ããŠãã ããã ã«ã¹ã¿ã ã» ã«ã¹ã¿ã ã»ãŠã£ãžã§ããã« ãŠã£ãžã§ããã«é¢ä¿ãã é¢ä¿ãããã¡ã€ã« ãããã¡ã€ã«ã® ãã¡ã€ã«ã®é çœ®å Žæ ãæ°èŠ Dojo ãŠã£ãžã§ããããŠã£ã¶ãŒãã§çæããããã¡ã€ã«ã¯ãã ãã©ã«ãã§ã¯ãWebContent/dojo é äžã®ã¢ãžã¥ãŒã«åãã©ã« ããŒã®äžã«é 眮ãããŸãã ãã®æŒç¿ã§ã¯ãWebContent/dojo/myDojo ã§ãã 4. ããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã§ããMyMovieWEBã -> ãWebContentã -> ãdojoã -> ãmyDojoã -> ãtemplateã -> ãRateAndComment.htmlã ãã¡ã€ã«ãããã«ã»ã¯ãªãã¯ããŸãã HTML ãã¡ã€ã«ããšãã£ã¿ãŒã§éããŸãã 5. ããœãŒã¹ãã¿ããã¯ãªãã¯ããŠãHTML ããŒã¯ã¢ããã衚瀺ããŸãã 6. ããã¬ãããã§ãDojo ã¢ããªã±ãŒã·ã§ã³ã»ãŠã£ãžã§ãããããã¯ãŒãå±éããŸãã © 2010 IBM Corporation - 42 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ãDialogããŠã£ãžã§ããã div ã¿ã°ã®äžã«ãã©ãã°ã»ã¢ã³ãã»ããããããŸãã dijit.Dialog Dojo dijit.Dialog ã¯ã¢ãŒãã«ã»ãã€ã¢ãã°ã»ããã¯ã¹ã§ãããã ã€ã¢ãã°ã®è¡šç€ºäžã¯èŠªç»é¢ãžã®ã¢ã¯ã»ã¹ããããã¯ããç»é¢ã ãŒãã衚瀺ããŸãã 8. Dojo ãã€ã¢ãã°ã»ãŠã£ãžã§ããã®æ¥ç¶ãã€ã³ããšã¿ã€ãã«ãã以äžã®ããã«è¿œå ããŸãã <div dojoType="dijit.Dialog" id="Dialog" dojoattachpoint="dialogbox" title="Rate and Comment!"></div> æ¥ç¶ãã€ã³ã æ¥ç¶ãã€ã³ã(dojoattachpoint) ãã€ã³ã æ¥ç¶ãã€ã³ãã«ãããHTML ãã¡ã€ã«ã§å®çŸ©ããã dojo ãŠã£ãž ã§ããã« JavaScript å€æ°ããã¢ã¯ã»ã¹ã§ããããã«ãªããŸãã 9. ãã€ã¢ãã°ã® div å ã§ã³ã³ãã³ãã»ã¢ã·ã¹ãã䜿çšããŠãè©äŸ¡ãšã³ã¡ã³ãã®æ©èœãè¿œå ããŸãã a. Rate: < ãšå ¥åããCtrl + ã¹ããŒã¹ãæŒããŠã³ã³ãã³ãã»ã¢ã·ã¹ããèµ·åããŸãã b. ã³ã³ãã³ãã»ã¢ã·ã¹ããã div ãéžæããŸãã c. æ¿å ¥ããã div ã®åŸã«ã«ãŒãœã«ã眮ããã¹ããŒã¹ãæŒããŸãã © 2010 IBM Corporation - 43 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ d. ã³ã³ãã³ãã»ã¢ã·ã¹ããèµ·åã㊠dojotype å±æ§ãæ¢ãããããéžæããŸãã e. ã«ãŒãœã«ãåŒçšç¬Šã®éã«çœ®ããã³ã³ãã³ãã»ã¢ã·ã¹ããèµ·åããŸããDojo ãŠã£ãžã§ããã®ãªã¹ã ã衚瀺ãããŸãã f. dojox.form.Rating ãŠã£ãžã§ãããæ¢ããŸãããŠã£ãžã§ããã®ååãå ¥åããŠããã«ã€ããŠãã³ã³ã ã³ãã»ã¢ã·ã¹ãã衚瀺ãããªã¹ããçµã蟌ãŸããŠãããŸãã g. div ã¿ã°ãç·šéããŸããdojoattachpoint=âratingâ ãšè¿œå ããŸãã h. numstâŠãšå ¥åããã³ã³ãã³ãã»ã¢ã·ã¹ããèµ·åããŸãããnumstarããéžæããŸãã ã³ã³ãã³ãã» ã³ã³ãã³ãã»ã¢ã·ã¹ã numstars 㯠dojox.form.Rating ã® ã« ã¹ ã¿ ã å± æ§ ã§ html æšæºã§ã¯ãããŸããããã³ã³ãã³ãã»ã¢ã·ã¹ãããå ¥åã§ã㟠ãã i. numstars=â5âãšããŸãã Rate : <div dojotype="dojox.form.Rating" dojoattachpoint="rating" numstars="5"></div> © 2010 IBM Corporation - 44 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ j. 以äžã®ã³ãŒããã³ããŒããŠããšãã£ã¿ãŒã® Dialog ãŠã£ãžã§ããå ã® Rating ãŠã£ãžã§ããã®äžã« 貌ãä»ããŸãã <br> <br> Comments : <div dojotype="dijit.form.Textarea" dojoattachpoint = "comments" style="width: 60%;"></div> <br> <button dojotype="dijit.form.Button" dojoattachevent="onClick: saveFeedback">Submit</button> æ¥ç¶ãã€ã³ã æ¥ç¶ãã€ã³ã(dojoattachevent) ãã€ã³ã dojoattachevent ã«ãããã€ãã³ãã»ãã³ãã©ãŒãç»é²ã§ããŸãã ããã§ã¯ããã¿ã³ã®ã¯ãªãã¯æã« RateAndComment ãŠã£ãžã§ ããã® saveFeedback é¢æ°ãåŒã³åºãããã«ããŸãã TextArea ãŠãžã§ãããš ãŠãžã§ãããš Button ãŠã£ãžã§ãã TextArea ãŠã£ãžã§ããã¯ãã³ã¡ã³ããå ¥åããã®ã«äœ¿çšãã㟠ãããŸããButton ãŠã£ãžã§ããã¯ããŠãŒã¶ãŒãè©äŸ¡ãšã³ã¡ã³ãã éä¿¡ããããã®ãã®ã§ãã æ€èšŒ ãšãã£ã¿ãŒã§ã¯ãªã¢ã«ã¿ã€ã æ€èšŒããµããŒããããŠããŸããç¡å¹ãªèŠçŽ ãæžã ãšãæ€èšŒãè¡ãããŠèŠåãåºãããŸããç¡å¹ãªèŠçŽ ã®äžã«ã«ãŒãœã«ã移åãã ãšãèŠåã®èª¬æã衚瀺ãããŸãã以äžã«ãdojox.form.Rating dojo ãŠã£ãžã§ãã ã«æªå®çŸ©ã®å±æ§ãæžããå Žåã®äŸã瀺ããŸãã 10. ããã¬ãããã§ãDojo ã¢ããªã±ãŒã·ã§ã³ã»ãŠã£ãžã§ãããããã¯ãŒãå±éããŸãã © 2010 IBM Corporation - 45 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 11. ãTitlePaneããŠã£ãžã§ããããã€ã¢ãã°ã® div ã®äžã«ãã©ãã°ã»ã¢ã³ãã»ããããããŸãã TitlePane ãŠã£ãžã§ãã TitlePane ã¯ãäžéšã«ã¿ã€ãã«ã瀺ããããå±éãŸãã¯çç¥è¡š 瀺å¯èœãªãã€ã³ã§ãã 12. TitlePane ã次ã®ããã«ç·šéããŸãã <div dojoType="dijit.TitlePane" id="TitlePane" title="History of Ratings and Comments"> <ol id="feedbacklist"></ol> </div> ã³ã¡ã³ããšè©äŸ¡ã®å±¥æŽãé åºä»ããªã¹ãã®äžã«ä¿ç®¡ãããŸããçŸåšãHTML ãã³ãã¬ãŒãã«ã¯ä»¥äžã®èŠçŽ ãããã¯ãã§ãã <div class="RateAndComment"> <div dojoType="dijit.Dialog" id="Dialog" dojoattachpoint="dialogbox" title="Rate and Comment!"> Rate : <div dojotype="dojox.form.Rating" dojoattachpoint="rating" numstars="5"></div> <br> <br> Comments : <div dojotype="dijit.form.Textarea" dojoattachpoint=="comments" style="width: 60%;"></div> <br> <button dojotype="dijit.form.Button" dojoattachevent="onClick: saveFeedback">Submit</button> </div> © 2010 IBM Corporation - 46 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ <div dojoType="dijit.TitlePane" id="TitlePane" title="History of Ratings and Comments"> <ol id="feedbacklist"></ol> </div> </div> 13. ã« ã¹ ã¿ ã 㻠㊠㣠㞠㧠ã ã ã® HTML ã ã³ ã 㬠㌠ã ã äœ æ 㧠ã ã 㮠㧠ã ã« ã¹ ã¿ ã 㻠㊠㣠㞠㧠ã ã ã® JavaScript ãç·šéããŸããããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã§ããMyMovieWebã -> ãWebContentã -> ãdojoã -> ãmyDojoã -> ãRateAndComment.jsããã¡ã€ã«ãããã«ã»ã¯ãªã㯠ããŠéããŸãã 14. HTML ãã³ãã¬ãŒãã§äœ¿çšãããŠãã Dojo ãŠã£ãžã§ããããšã« dojo.require ã¹ããŒãã¡ã³ããè¿œå ããŸãã以äžãã³ããŒããŠãdojo.require("dijit._Templated") ã»ã¯ã·ã§ã³ã®äžã«è²Œãä»ããŸãã dojo.require("dojox.form.Rating"); dojo.require("dojo.data.ItemFileWriteStore"); dojo.require("dijit.form.Textarea"); dojo.require("dijit.Dialog"); dojo.require("dijit.form.Button"); dojo.require("dijit.TitlePane"); dojo.require ã¹ããŒãã¡ã³ã dojo.require ã¹ããŒãã¡ã³ãã¯ãJava ã® import ã¹ããŒãã¡ã³ã ã«äŒŒãŠããŸãã 15. Dojo ãŠã£ãžã§ããã HTML ãã³ãã¬ãŒãã®äžã§äœ¿çšããã®ã§ãwidgetsInTemplate å€æ°ã true ã«èšå®ããŸãã // Set this to true if your widget contains other widgets widgetsInTemplate : true, 16. 以äžã®ã³ãŒããã³ããŒããŠãwidgetsInTemplate å€æ°ã®äžã«è²Œãä»ããŸãã movieTitle : "", rcStore : new dojo.data.ItemFileWriteStore({ data : { items : [] } }), © 2010 IBM Corporation - 47 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ movieTitle ã«ã¯ãè©äŸ¡ãããã ãŒããŒã®ååãå ¥ããããŸãã rcStore ã¯ããŠãŒã¶ãŒãè©äŸ¡ãšã³ã¡ã³ã ã®ã¢ã¯ã·ã§ã³ã®å®è¡äžã«å ¥åããããŒã¿ãä¿ç®¡ãããDojo ããŒã¿ã»ã¹ãã¢ã§ãããã®æç¹ã§ã¯ãã¡ã¢ãªãŒ äžã«ã³ã¡ã³ãã®å±¥æŽãä¿ç®¡ãããããå±¥æŽä¿ç®¡çšã® dojo ãªããžã§ã¯ããäœæããŸããã 17. 以äžã®é¢æ°ãã³ããŒããŠãã³ã³ã¹ãã©ã¯ã¿ãŒé¢æ°ã®åŸã«è²Œãä»ããŸãã getComment : function(){ return this.comments.attr('value'); }, getRating : function(){ return this.rating.attr('value'); }, setComment : function(value){ this.comments.attr("value", value); }, setRating : function(value){ this.rating.attr("value", value); }, ãããã®é¢æ°ã¯ãdojox.form.Rating ãŠã£ãžã§ãããš dijit.form.Textarea ãŠã£ãžã§ããã®å€ã® getter ãã ã³ setter ãšããŠæ©èœããŸããé¢æ°ã¯ãããããHTML ãã³ãã¬ãŒãã«èšå®ãããŠããåãŠã£ãžã§ããã® dojoattachpoint å€ã䜿çšããŠãvalue å±æ§ã«ã¢ã¯ã»ã¹ããŸãã © 2010 IBM Corporation - 48 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 18. 以äžã®ã³ãŒããã³ããŒããŠãgetter ããã³ setter ã®åŸã«è²Œãä»ããŸãã showFeedbackTools : function(movieTitle){ this.movieTitle = movieTitle; this.dialogbox.show(); }, showFeedbackTools é¢æ°ã¯ãè©äŸ¡ãšã³ã¡ã³ãçšã®ãã©ãŒã ãæã€ãã€ã¢ãã°ã衚瀺ããŸããmovieTitle ã¯çŸåšè©äŸ¡äžã®ã ãŒããŒã®ã¿ã€ãã«ã§ããdijit.Dialog.show()㯠dijit.Dialog ãŠã£ãžã§ããã®é¢æ°ã§ãã dialogbox å±æ§ã¯ template html äžã«å®çŸ©ãã dijit.Dialog ã® dojoattachpoint ã«æå®ããååãš äžèŽããå¿ èŠããããŸãã 19. ãã€ã¢ãã°ã® Submit ãã¿ã³ãæŒããæç¹ã§ã³ã¡ã³ããšè©äŸ¡ããŠã£ãžã§ããã®ããŒã¿ã»ã¹ãã¢ã«ä¿ç®¡ãããš ããæ©èœãå®è£ ããé¢æ°ããshowFeedbackTools ã®åŸã«äœæããŸããããã« saveFeedback ãš ããååãä»ããŸãããŠã£ãžã§ããã® HTML ãã³ãã¬ãŒãã«ãããŠãSubmit ãã¿ã³ã® onClick ã€ã ã³ãã® dojoattachevent å±æ§ã«ãã®é¢æ°åãèšå®ããããã§ãã saveFeedback : function(){ }, e. æåã«ããŠãŒã¶ãŒããã€ã¢ãã°ã§èšå®ããå€ãååŸããå¿ èŠããããŸããåã«äœæãã getter é¢æ°ã䜿çšããŸããé¢æ°ã®äžã§ var userRating = this. ãšå ¥åããŸãã f. ã³ã³ãã³ãã»ã¢ã·ã¹ãã䜿çšããJavaScript ãã¡ã€ã«ã®äžã§å¿ èŠãªããããã£ãŒãæ¢ããŸãã getRating() ãéžæããŸãã g. åæ§ã«ã以äžã®ã³ãŒãã䜿çšããŠãã³ã¡ã³ãçšã®å€æ°ãèšå®ããŸãã var userComment = this.getComment(); h. 以äžã®ã³ãŒãã䜿çšããŠããã£ãŒãããã¯ã»ããŒã¿ãä¿ç®¡ããŸãã this.rcStore.newItem({ title : this.movieTitle, comment : userComment, rating : userRating }); © 2010 IBM Corporation - 49 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ããŒã¿ã¯ rcStore ã«æ°ããé ç®ãšããŠä¿ç®¡ãããŸããããã«ã¯ããã€ã¢ãã°ãéããæç¹ã§ããããã èšå®ãããã ãŒããŒã®ã¿ã€ãã«ãããã³ãŠãŒã¶ãŒãèšå®ããè©äŸ¡ãšã³ã¡ã³ããå ¥ããããŸãã 次㮠i-j ã¹ãããã§ã¯ãã³ã¡ã³ãã®å±¥æŽãã衚瀺ãããããžãã¯ãäœæããŸãã i. æçš¿ãããã³ã¡ã³ããšè©äŸ¡ã®å±¥æŽãä¿æãããªã¹ãã«ãå€ãè¿œå ããŸããå€ã¯ããŠã£ãžã§ãã ã® HTML ãã³ãã¬ãŒãã«ããã¿ã€ãã«ã»ãã€ã³ã®å éšã«èšå®ããããol HTML èŠçŽ ã®å èŠçŽ ãšããŠè¿œå ãããŸãã dojo.create("<li>", {innerHTML : "<b>Title:</b> " + this.movieTitle + " <b>Rating:</b>" + userRating + "<br> <b>Comments:</b> " + userComment}, "feedbacklist"); j. å€ããªã»ããããŠããã€ã¢ãã°ãé衚瀺ã«ããŸãã以äžã®ã³ãŒããã³ããŒããŠãåã®ã¹ããã ã®ã³ãŒãã®äžã«è²Œãä»ããŸãã this.dialogbox.hide(); this.setComment(""); this.setRating(0); å€ããªã»ãããããšãã£ãŒã«ããã¯ãªã¢ãããã®ã§ãåã®ãè©äŸ¡ãšã³ã¡ã³ããã¢ã¯ã·ã§ã³ã®ãã£ãŒã«ãã®å€ã¯ãæ° ãããè©äŸ¡ãšã³ã¡ã³ããã¢ã¯ã·ã§ã³ã«åŒãç¶ãããŸããããã€ã¢ãã°ãé衚瀺ã«ããããšã§ããŠãŒã¶ãŒã¯åŒã ç¶ãããŒã¿ã»ã°ãªããã®ä»ã®ã ãŒããŒã®è©äŸ¡ãå®æœã§ããŸãã 20. getCommentsByMovieTitle é¢æ°ãã³ããŒããŠãsaveFeedback é¢æ°ã®äžã«è²Œãä»ããŸãããã® é¢æ°ã¯ movieTitle ããã©ã¡ãŒã¿ãŒãšããŠåãåããããŒã¿ã»ã¹ãã¢ã«ä¿ç®¡ãããŠããããã®ã ãŒã㌠ã«é¢ããŠãªããããã¹ãŠã®ã³ã¡ã³ããå ¥ã£ãé åãè¿ããŸãã getCommentsByMovieTitle : function(movieTitle){ var comments = []; var store = this.rcStore; this.rcStore.fetch({ query : {title : movieTitle}, onComplete : function(items, request){ dojo.forEach(items, function(item){ comments.push(store.getValue(item, "comment")); }); } }); return comments; © 2010 IBM Corporation - 50 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ }, ãã®æç¹ã§ãRateAndComment.js ã¯æ¬¡ã®ããã«ãªãã¯ãã§ãã dojo.provide("myDojo.RateAndComment"); // dojo.require the necessary dijit hierarchy dojo.require("dijit._Widget"); dojo.require("dijit._Templated"); dojo.require("dojox.form.Rating"); dojo.require("dojo.data.ItemFileWriteStore"); dojo.require("dijit.form.Textarea"); dojo.require("dijit.Dialog"); dojo.require("dijit.form.Button"); dojo.require("dijit.TitlePane"); dojo.declare("myDojo.RateAndComment", [ dijit._Widget, dijit._Templated ], { // Path to the template templateString : dojo.cache("myDojo", "templates/RateAndComment.html"), // Set this to true if your widget contains other widgets widgetsInTemplate : true, movieTitle : "", rcStore : new dojo.data.ItemFileWriteStore({ data : { items : [] } }), // Override this method to perform custom behavior during dijit © 2010 IBM Corporation - 51 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ // construction. // Common operations for constructor: // 1) Initialize non-primitive types (i.e. objects and arrays) // 2) Add additional properties needed by succeeding lifecycle methods constructor : function() { }, getComment : function() { return this.comments.attr('value'); }, getRating : function() { return this.rating.attr('value'); }, setComment : function(value) { this.comments.attr("value", value); }, setRating : function(value) { this.rating.attr("value", value); }, showFeedbackTools : function(movieTitle) { this.movieTitle = movieTitle; this.dialogbox.show(); }, saveFeedback : function() { var userRating = this.getRating(); var userComment = this.getComment(); this.rcStore.newItem({ title : this.movieTitle, comment : userComment, rating : userRating © 2010 IBM Corporation - 52 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ }); dojo.create("<li>", { innerHTML : "<b>Title:</b> " + this.movieTitle + " <b>Rating:</b>" + userRating + "<br> <b>Comments:</b> " + userComment }, "feedbacklist"); this.dialogbox.hide(); this.setComment(""); this.setRating(0); }, getCommentsByMovieTitle : function(movieTitle) { var comments = []; var store = this.rcStore; this.rcStore.fetch({ query : { title : movieTitle }, onComplete : function(items, request) { dojo.forEach(items, function(item) { comments.push(store.getValue(item, "comment")); }); } }); return comments; }, // When this method is called, all variables inherited from superclasses are // 'mixed in'. // Common operations for postMixInProperties // 1) Modify or assign values for widget property variables defined in the © 2010 IBM Corporation - 53 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ // template HTML file postMixInProperties : function() { } }); æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã ããã§ã«ã¹ã¿ã Dojo ãŠã£ãžã§ãããäœæã§ããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã ã«ã¹ã¿ã Dojo ãŠã£ãžã§ããã«åãã㊠HTML ãã³ã㬠ãŒããå€æŽããæ¹æ³ ã«ã¹ã¿ã Dojo ãŠã£ãžã§ããã«åãã㊠JavaScript ãã¡ ã€ã«ãå€æŽããæ¹æ³ © 2010 IBM Corporation - 54 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ã«ã¹ã¿ã Dojo ãŠã£ãžã§ããã® ãŠã£ãžã§ããã® Web ããŒãžãžã® ããŒãžãžã®è¿œå ãžã®è¿œå 2.6 ãã®æŒç¿ã§ã¯äœæããã«ã¹ã¿ã Dojo ãŠã£ãžã§ããã Web ããŒãžã«æ¿å ¥ããŸãã ã«ã¹ã¿ã Dojo ãŠã£ãžã§ããã¯äœæåŸãããã¬ãããã®ããã®ä»ã® Dojo ãŠã£ãžã§ãããããã¯ãŒã«è¿œå ããã ããããŠã£ãžã§ããã Web ããŒãžã«è¿œå ãããããªã£ãŠããŸãã 1. ããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒãããShowMovies.html ãã¡ã€ã«ãéããããã¶ã€ã³ã ã¿ããã¯ãªãã¯ããŸãã 2. ããã¬ãããã§ããã®ä»ã® Dojo ãŠã£ãžã§ãããããã¯ãŒãå±éããŸãã 3. ãRateAndCommentããŠã£ãžã§ããããBorderContainerãã®å³åŽé åã«ãã©ãã°ã»ã¢ã³ãã»ããããã㟠ãã 4. ããœãŒã¹ãã¿ãã«åãæ¿ããŠãããŒãžäžæ¹ã®ä»ã® dojo.require ã¹ããŒãã¡ã³ããããä»è¿ã«ã次ã«ç€º ã dojo.require() ã¹ããŒãã¡ã³ããè¿œå ããŸãã dojo.require() ã¹ããŒãã¡ã³ãã¯ãåŸã»ã©è¿œå ãã dijit.Tooltip ãŠã£ãžã§ããçšã§ãã dojo.require("dijit.Tooltip"); © 2010 IBM Corporation - 55 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5. 次ã«ç€ºã css ã¹ã¿ã€ã«ã®ã€ã³ããŒãããdojo.require ã¹ããŒãã¡ã³ãã®å«ãŸãã</script>ã¿ãã®åŸã« è¿œå ããŸãã <style type="text/css"> @import "dojo/dojox/form/resources/Rating.css"; </style> 6. 次ã«ç€ºãã³ãŒãããaddOnLoad é¢æ°ã®å«ãŸãã</script> ã¿ã°ã®åŸã«è¿œå ããŸãã <script type="text/javascript"> function showComments(e){ var grid = dijit.byId("gridId"); var movieTitle = grid.store.getValue(grid.getItem(e.rowIndex), "title"); var comments = dijit.byId("RateAndComment").getCommentsByMovieTitle(movieTitle); if(comments.length == 0){ dijit.showTooltip("No comments made!", e.cellNode); } else{ var list = "<b>Comments:</b><ul>"; for(i in comments){ list +="<li>" + comments[i] + "</li>"; } list += "</ul>"; dijit.showTooltip( list , e.cellNode); } }; function hideComments(e){ dijit.hideTooltip(e.cellNode); } function showFeedbackDialog(e){ //IF A Click to rate!! cell was clicked if(e.cellIndex == 4){ var grid = dijit.byId("gridId"); var movieTitle = © 2010 IBM Corporation - 56 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ grid.store.getValue(grid.getItem(e.rowIndex), "title"); var rcwidget = dijit.byId("RateAndComment"); rcwidget.showFeedbackTools(movieTitle); } } function getContent(){ return "Click to rate!"; } </script> showComments é¢æ°ã¯ãã»ã«è¡ã®äžã«ããŠã¹ã移åãããã³ã«å®è¡ãããŸãã該åœããè¡ã®ã ãŒã ãŒã»ã¿ã€ãã«ãããã³ãŠã£ãžã§ããã® getCommentsByMovieTitle ã䜿çšããããšã§ãåãŠã£ãžã§ããã§ãµã ããããããã³ã¡ã³ããååŸããã³ã¡ã³ãã dijit.showTooltip ã衚瀺ããããŒã«ãããå ã«ãªã¹ã衚瀺ããŸãã hideComments é¢æ°ã¯ããŠãŒã¶ãŒãããŠã¹ãè¡ã®å€ã«ç§»åããæç¹ã§ããŒã«ããããé衚瀺ã«ããŸãã getContent é¢ æ° ã¯ ã è¡š ã® æ åŸ ã® å ã« ã ㌠㿠ã å ¥ ã ã ã ã 㫠䜿 çš ã ã ã ã© ã ã« ã æ» ã 㟠ã ã showFeedbackDialog ã¯ãClick to Rate!ãã©ãã«ã®ä»ããŠããã»ã«ããŠãŒã¶ãŒãã¯ãªãã¯ãããã³ã«å® è¡ãããŸãããã®é¢æ°ã¯ã«ã¹ã¿ã ã»ãŠã£ãžã§ããã® showFeedbackTools ãåŒã³åºããŸããããã«ããã㊠ãŒã¶ãŒãã ãŒããŒãè©äŸ¡ãããã³ã¡ã³ããä»å ãããããããã®ãã€ã¢ãã°ã衚瀺ãããŸãã 7. äžèšã®é¢æ°ãã°ãªããã®ã€ãã³ãã»ãã³ãã©ãŒã«è¿œå ããŸããäžèšã®ããã« dojox.grid.DataGrid html ã³ãŒããç·šéããŸãã <table id="gridId" dojotype="dojox.grid.DataGrid" autowidth="true" onRowMouseOut="hideComments" onRowMouseOver="showComments" onCellClick="showFeedbackDialog" rowselector="20px"> 8. 次ã«ç€ºãåãã°ãªããã®æçµè¡ïŒ<th field="description">説æ</th>ã®æ¬¡ã®è¡ïŒã«è¿œå ããŸãã getContent ã䜿çšããŠããã®åã«å±ããåã»ã«ã«ããŒã¿ãåã蟌ã¿ãŸãã <th get="getContent">Rate and Comment!</th> 9. ããŒãžãä¿åããŸããããŒã«ã»ããŒã®ãä¿åãã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã ShowMovies.html ã¯ãäžèšã®ããã«ãªã£ãŠããã¯ãã§ãã <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> © 2010 IBM Corporation - 57 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ <link rel="stylesheet" type="text/css" href="dojo/dijit/themes/dijit.css"> <link rel="stylesheet" type="text/css" href="dojo/dijit/themes/tundra/tundra.css"> <title>ShowMovies</title> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"> <script type="text/javascript" djconfig="isDebug: false, parseOnLoad: true" src="dojo/dojo/dojo.js"></script> <script type="text/javascript"> dojo.require("dijit.layout.BorderContainer"); dojo.require("dijit.layout.ContentPane"); dojo.require("dojox.grid.DataGrid"); dojo.require("dojo.data.ItemFileReadStore"); dojo.require("myDojo.RateAndComment"); dojo.require("dijit.Tooltip"); </script> <style type="text/css"> @import "dojo/dojox/form/resources/Rating.css"; </style> <script type="text/javascript"> dojo.addOnLoad(function() { dojo.xhrGet({ url : "MovieList.json", handleAs : "json", load : function(response, ioArgs) { var newData = { identifier : "title", items : response.result }; var dataStore = new dojo.data.ItemFileReadStore({ data : newData, id : "dataStoreId" }); © 2010 IBM Corporation - 58 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ var grid = dijit.byId("gridId"); grid.setStore(dataStore); }, error : function(response, ioArgs) { alert("An error occurred while invoking the service."); } }); }); </script> <script type="text/javascript"> function showComments(e){ var grid = dijit.byId("gridId"); var movieTitle = grid.store.getValue(grid.getItem(e.rowIndex), "title"); var comments = dijit.byId("RateAndComment").getCommentsByMovieTitle(movieTitle); if(comments.length == 0){ dijit.showTooltip("No comments made!", e.cellNode); } else{ var list = "<b>Comments:</b><ul>"; for(i in comments){ list +="<li>" + comments[i] + "</li>"; } list += "</ul>"; dijit.showTooltip( list , e.cellNode); } }; function hideComments(e){ dijit.hideTooltip(e.cellNode); } function showFeedbackDialog(e){ © 2010 IBM Corporation - 59 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ //IF A Click to rate!! cell was clicked if(e.cellIndex == 4){ var grid = dijit.byId("gridId"); var movieTitle = grid.store.getValue(grid.getItem(e.rowIndex), "title"); var rcwidget = dijit.byId("RateAndComment"); rcwidget.showFeedbackTools(movieTitle); } } function getContent(){ return "Click to rate!"; } </script> <link rel="stylesheet" type="text/css" title="Style" href="dojo/dojox/grid/resources/Grid.css"> <link rel="stylesheet" type="text/css" title="Style" href="dojo/dojox/grid/resources/tundraGrid.css"> </head> <body class="tundra"> <div dojoType="dijit.layout.BorderContainer" id="BorderContainer" design="headline" style="height: 100%; width: 100%"> <div dojoType="dijit.layout.ContentPane" region="top" style="text-align: center">My Movie Web Application!</div> <div dojoType="dijit.layout.ContentPane" id="" title="" region="center"> <table id="gridId" dojotype="dojox.grid.DataGrid" autowidth="true" onRowMouseOut="hideComments" onRowMouseOver="showComments" onCellClick="showFeedbackDialog" rowselector="20px"> <thead> <tr> <th field="title">ã¿ã€ãã«</th> <th field="director">ç£ç£</th> <th field="actor">圹è </th> <th field="description">説æ</th> <th get="getContent">Rate and Comment!</th> © 2010 IBM Corporation - 60 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ </tr> </thead> </table> </div> <div dojoType="dijit.layout.ContentPane" id="" title="" region="right"> <div dojoType="myDojo.RateAndComment" id="RateAndComment"></div> </div> </div> </body> </html> æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã ããã§ãã«ã¹ã¿ã Dojo ãŠã£ãžã§ãããããŒãžã«è¿œå ã§ããŸã ãã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã ãã¬ããã䜿çšã㊠Web ããŒãžã«ã«ã¹ã¿ã ã»ãŠã£ãžã§ãã ãè¿œå ããæ¹æ³ ããŒã¿ã»ã°ãªããã®ã€ãã³ãã»ãã³ãã©ãŒã«é¢æ°ãè¿œå ãã æ¹æ³ © 2010 IBM Corporation - 61 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2.7 Dojo ã¢ããªã±ãŒã·ã§ã³ ã¢ããªã±ãŒã·ã§ã³ã® ã·ã§ã³ã®ãã¹ã ãã®æŒç¿ã§ã¯ãWeb UI å±€ãŸã§äœæãã My Movie Web Application ããµãŒããŒäžã§å®è¡ãããã¬ã㥠ãŒã確èªããŸãããã¬ãã¥ãŒã®ç¢ºèªã«ã¯ãAJAX ãã¹ãã»ãµãŒããŒãšãã軜éãµãŒããŒã䜿çšããŸãã 1. ãã©ãŠã¶ãŒã Firefox ã«èšå®ããŸããã¡ãã¥ãŒã»ããŒãããããŠã£ã³ããŠã -> ãWeb ãã©ãŠã¶ãŒã -> ãFirefoxããèšå®ããŸãã 泚æïŒ æ³šæïŒ Firefox ãã€ã³ã¹ããŒã«ãããŠããªãå ŽåãFirefox ã衚瀺ãããŸããã ãã®å Žåãæåã§èšå®ãè¡ãå¿ èŠããããŸããæé ã¯ä»¥äžã§ãã 1. Firefox ãã€ã³ã¹ããŒã«ããŸãã 2. ã¡ãã¥ãŒã»ããŒãããããŠã£ã³ããŠã -> ãèšå®ããã¯ãªãã¯ããŸãã 3. ãäžè¬ã -> ãWeb ãã©ãŠã¶ãŒããéžæããŸãã 4. ãå€éšãã©ãŠã¶ãŒã䜿çšããéžæãããæ°èŠããã¯ãªãã¯ããŸãã 5. ãå€éš Web ãã©ãŠã¶ãŒã®ç·šéããã€ã¢ãã°ã衚瀺ãããŸãã以äžãèšå®ã® äžããOKããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ åå Firefox ãã±ãŒã·ã§ã³ ïŒFirefox ã®ã€ã³ã¹ããŒã«ã»ãã£ã¬ã¯ããªãŒïŒ¥firefox.exe ãã©ã¡ãŒã¿ãŒ © 2010 IBM Corporation - 62 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 6. ãé©çšããã¯ãªãã¯ã®äžããOKããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 63 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2. ããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã§ ShowMovies.html ãå³ã¯ãªãã¯ãããå®è¡ã > ããµ ãŒããŒã§å®è¡ããéžæããŸããããµãŒããŒã§å®è¡ããã€ã¢ãã°ãéããŸãã © 2010 IBM Corporation - 64 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3. ããµãŒããŒã§å®è¡ããã€ã¢ãã°ã§ã以äžãèšå®ããã次ãžããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ ãµãŒããŒã® ãµãŒããŒã®éžææ¹æ³ æåã§æ°èŠãµãŒããŒãå®çŸ© ãµãŒããŒã® ãµãŒããŒã®ã¿ã€ãã ã¿ã€ããéžæ IBM -> AJAX ãã¹ãã»ãµãŒã㌠ãµãŒããŒã® ãµãŒããŒã®ãã¹ãå ãã¹ãå localhost ãµãŒããŒå ãµãŒããŒå localhost ã® AJAX ãã¹ãã»ãµãŒã㌠4. ãè¿œå ããã³åé€ããã€ã¢ãã°ã§ããMyMovieWEBããè¿œå ãããŠããããšã確èªãããçµäºããã¯ãªã㯠ããŸãã 5. ãã©ãŠã¶ãŒã§ ShowMovies.html ã衚瀺ãããŸãã © 2010 IBM Corporation - 65 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 6. æ ç»ãè©äŸ¡ããŸããDataGrid å ã®ä»»æã®ãClick to rate!ããã¯ãªãã¯ãããRate and Comment!ãã〠ã¢ãã°ã衚瀺ãããŸãã 7. è©äŸ¡ãããã³ãã³ã¡ã³ããå ¥åãããSubmitããã¯ãªãã¯ããŸãã 8. è©äŸ¡ãããã³ãã³ã¡ã³ããå±¥æŽã«åæ ãããããšã確èªããŸãã 9. ãã¬ãã¥ãŒã確èªããããAJAX ãã¹ãã»ãµãŒããŒãåæ¢ããŸããããµãŒããŒããã¥ãŒããããµãŒããŒã åæ¢ãã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã ãã㧠Web2.0 ã¢ããªã±ãŒã·ã§ã³ããµãŒããŒã§ãã¹ãããããšã ã§ããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã Ajax ãã¹ãã»ãµãŒããŒã§ Dojo ã¢ããªã±ãŒã·ã§ã³ãå®è¡ã ãæ¹æ³ã © 2010 IBM Corporation - 66 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3 ããŒã¿ã» ããŒã¿ã»ã¢ã¯ã»ã¹å±€ ã¢ã¯ã»ã¹å±€ã®äœæ ãã®æŒç¿ã§ã¯ãMy Movie Web Application ã®ããŒã¿ã»ã¢ã¯ã»ã¹å±€ãäœæããŸããæŒç¿ã«ã¯ãããã 70 åãèŠããŸãã ããŒã¿ã»ã¢ã¯ã»ã¹å±€ã«ã¯ãæ°žç¶ãšã³ãã£ãã£ãŒãšããŠãMovie ããã³ FeedbackããããŠãããããã管ç ãã MovieManagerãFeedbackManager ãå¿ èŠã§ãããããã® Manager ãä»ããŠãMy Movie Web Application ã®ããžãã¹ã»ããžãã¯å±€ã¯ãæ°žç¶åæäœãè¡ããŸãã 3.1 JPA1.0, EJB3,0 ãããžã§ã¯ãã® ãããžã§ã¯ãã®äœæ ãŸããJPA ãããžã§ã¯ããäœæããŸãããã®æŒç¿ã§ã¯ãäžè¿°ãã Manager ã EJB ãšããŠäœæããããšã«ã ãŸãããã®ãããEJB ãããžã§ã¯ããäœæã®äžãJPA ãã¡ã»ãããé©çšããããšã«ããŸãã 1. ããŒã¹ãã¯ãã£ãããJava EEãã«å€æŽããŸããã¯ãŒã¯ãã³ãå³äžã«ãããããŒã¹ãã¯ãã£ããéããã ãããJava EEããã¯ãªãã¯ããŸãã 2. ã¡ãã¥ãŒã»ããŒãããããã¡ã€ã«ã -> ãæ°èŠã -> ãEJB ãããžã§ã¯ãããã¯ãªãã¯ããŸãã 3. ãæ°èŠ EJB ãããžã§ã¯ãããã€ã¢ãã°ãéããŸãã以äžã®èšå®ãè¡ããŸãã èšå®é ç® èšå®å€ ãããžã§ã¯ãå ãããžã§ã¯ãå MyMovieJPA ããã©ã«ãã» ããã©ã«ãã»ãã±ãŒã·ã§ã³ã® ãã±ãŒã·ã§ã³ã®äœ¿çš ãã§ãã¯ãå ¥ãã EJB ã¢ãžã¥ãŒã«ã» ã¢ãžã¥ãŒã«ã»ããŒãžã§ã³ 3.0 EAR ã«ãããžã§ã¯ãã ãããžã§ã¯ããè¿œå ãã§ãã¯ãå ¥ãã EAR ãããžã§ã¯ãå ãããžã§ã¯ãå MyMovieEAR 4. JPA ãã¡ã»ãããæå¹ã«ããŸãããæ§æãã»ã¯ã·ã§ã³ã®ãå€æŽããã¿ã³ãã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 67 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5. ããããžã§ã¯ãã»ãã¡ã»ããããã€ã¢ãã°ãéããŸãã以äžã®èšå®ãè¡ãããOKããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ ãããžã§ã¯ãã» ãããžã§ã¯ãã»ãã¡ã»ãã JPA ããŒãžã§ã³ 1.0 6. ã次ãžããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 68 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ãJavaãããŒãžã§ããã©ã«ããåãå ¥ããã次ãžããã¯ãªãã¯ããŸãã 8. ãEJB ã¢ãžã¥ãŒã«ãããŒãžã§ã以äžã®èšå®ãè¡ããã次ãžããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ ã¯ã©ã€ã¢ã³ãã® ã¯ã©ã€ã¢ã³ãã®ã€ã³ã¿ãŒãã§ãŒã¹ãš ã€ã³ã¿ãŒãã§ãŒã¹ãšã¯ã©ã¹ã ã¯ã©ã¹ãä¿æãã ä¿æãã ãã§ãã¯ãå€ã EJB ã¯ã©ã€ã¢ã³ã JAR ã¢ãžã¥ãŒã«ã® ã¢ãžã¥ãŒã«ã®äœæ ejb-jar.xml ãããã€ã¡ã³ãèšè¿°å ãããã€ã¡ã³ãèšè¿°åã® èšè¿°åã®çæ © 2010 IBM Corporation ãã§ãã¯ãå€ã - 69 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 9. ãJPA ãã¡ã»ãããããŒãžã§ã¯ããã®ãŸãŸãçµäºããã¯ãªãã¯ããŸãã æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã JPA 1.0 察å¿ã® EJB ãããžã§ã¯ããäœæããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã JPA1.0 察å¿ã® EJB ãããžã§ã¯ãã®äœææ¹æ³ã JPA ã¢ããªã±ãŒã·ã§ã³éçºçšã®ãããžã§ã¯ãã»ãã¡ã»ããã® ã«ã¹ã¿ãã€ãºæ¹æ³ã © 2010 IBM Corporation - 70 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.2 JPA ãšã³ãã£ãã£ãŒã® ãšã³ãã£ãã£ãŒã®äœæ ãã®æŒç¿ã§ã¯ãæ°žç¶ãšã³ãã£ãã£ãŒMovie ãš Feedback ãäœæããŸããMovie ã¯æ ç»ãè¡šããšã³ãã£ã㣠ãŒã§ãããFeedback ã¯æ ç»ã«å¯Ÿããè©äŸ¡ããã³ã³ã¡ã³ããè¡šããŸããè€æ°ã® Feedback ã 1 ã€ã® Movie ã«å¯ŸããŠç»é²ãããŸããããªãã¡ãFeedback ãš Movie ã®éã«ã¯ Many-to-One ã®é¢ä¿ããããŸããã¯ã© ã¹å³ã§è¡šããšä»¥äžã®ããã«ãªããŸãã © 2010 IBM Corporation - 71 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.2.1 Movie ãšã³ãã£ãã£ãŒã® ãšã³ãã£ãã£ãŒã®äœæ 1. ãšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒãããMyMovieJPA ãå³ã¯ãªãã¯ãããæ°èŠã -> ããšã³ãã£ã㣠ãŒããã¯ãªãã¯ããŸãã 2. ãæ°èŠ JPA ãšã³ãã£ãã£ãŒããã€ã¢ãã°ãéããŸããããšã³ãã£ãã£ãŒã»ã¯ã©ã¹ãããŒãžã§ä»¥äžãå ¥åãã ã次ãžããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ Java ããã±ãŒãž com.ibm.example.websphere.jpa1sample.movie ã¯ã©ã¹å ã¯ã©ã¹å Movie © 2010 IBM Corporation - 72 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3. ããšã³ãã£ãã£ãŒã»ããããã£ãŒãããŒãžãéããŸãããšã³ãã£ãã£ãŒã»ãã£ãŒã«ããè¿œå ããããã«ã ãè¿œå ããã¯ãªãã¯ããŸãã 4. 以äžãå ¥åãããOKããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ å Integer åå id 5. æé 3.-4.ãç¹°ãè¿ãã以äžã®ãã£ãŒã«ããè¿œå ããŸãã åå ã¿ã€ã title java.lang.String actor java.lang.String director java.lang.String description java.lang.String 6. ãšã³ãã£ãã£ãŒã»ãã£ãŒã«ãã® id ãäž»ããŒã«ããŸããããšã³ãã£ãã£ãŒã»ãã£ãŒã«ããã»ã¯ã·ã§ã³ã® id è¡ã® ãéµãåã«ãã§ãã¯ãå ¥ããŸãã © 2010 IBM Corporation - 73 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ãå¯èŠåã®ããã¯ã©ã¹å³ãéžæãããŒãžã§ã¯ããã®ãŸãŸãçµäºããã¯ãªãã¯ããŸãã MyMovieJPA ãããžã§ã¯ãé äžã«ãšã³ãã£ãã£ãŒã管ç Bean ãå¯èŠåããããã®ã¯ã©ã¹å³ãäœæã ããŸãã Movie ãšã³ãã£ãã£ãŒãäœæããããšãèªå㧠Movie.java ãéããŸãã以éã§ã¯ãMovie ã®ãã£ãŒã«ã ãidãã«å¯ŸããŠãäž»ããŒãèªåçæããèšå®ãè¡ããŸãããã®èšå®ã«ãããMovie ãšã³ãã£ãã£ãŒãããŒã¿ ããŒã¹ã« create ããããã³ãid ãèªåã§çæãããŸãã 8. JPA ããŒã¹ãã¯ãã£ãã«åãæ¿ããŸãã 9. Movie.java ãããã@Idãã¢ãããŒã·ã§ã³ãéžæãããJPA ã®è©³çŽ°ããã¥ãŒããã以äžã®èšå®ãè¡ã㟠ãã èšå®é ç® èšå®å€ äž»ããŒçæ ããŒçæ ãã§ãã¯ãå ¥ãã æŠç¥ ããã©ã«ãïŒèªåïŒ © 2010 IBM Corporation - 74 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ãJPA ã®è©³çŽ°ã 詳现ããã¥ãŒ ãJPA ã®è©³çŽ°ããã¥ãŒã§ã¯ãJPA ãšã³ãã£ãã£ãŒã®ã¢ãããŒã·ã§ ã³ãç·šéããããšãã§ããŸãããã®ãã¥ãŒã衚瀺ããã«ã¯ãã¡ã ã¥ãŒã»ããŒããããŠã£ã³ããŠã -> ããã¥ãŒã®è¡šç€ºã -> ããã®ä»ã -> ãJPAã -> ãJPA ã®è©³çŽ°ããã¯ãªãã¯ããŸãã 10. ã@GeneratedValueãã¢ãããŒã·ã§ã³ãè¿œå ãããŸããäž»ããŒçææŠç¥ã§ãããããã©ã«ãïŒèªåïŒã ã¯ã以äžã®ããã«ãã¢ãããŒã·ã§ã³ã®åŒæ°ãšããŠæèšããããšãã§ããŸããã³ã³ãã³ãã»ã¢ã·ã¹ããæå¹ã§ ãã @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; © 2010 IBM Corporation - 75 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 11. Movie ããŒã¿ããã¹ãŠååŸããããã®ç §äŒãäœæããŸãã@Entity ã¢ãããŒã·ã§ã³ãéžæãããJPA ã®è©³çŽ°ããã¥ãŒãéããŸãã 12. ãç §äŒãã»ã¯ã·ã§ã³ãå±éãããè¿œå ããã¿ã³ãã¯ãªãã¯ããŸãã 13. ãç §äŒã®è¿œå ããã€ã¢ãã°ã衚瀺ãããŸãã以äžãèšå®ãããOKããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ åå findAllMovies ã¿ã€ã ååä»ãç §äŒ 14. è¿œå ããç §äŒã«å¯ŸããŠãJPQL ãå®çŸ©ããŸããããJPA ã®è©³çŽ°ããã¥ãŒãããç §äŒãã»ã¯ã·ã§ã³ãå±éãã ç §äŒæ¬ã«ãSELECT m FROM Movie m ããšå ¥åããŸãã © 2010 IBM Corporation - 76 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ JPQL JPQL (Java Persistence Query Language)ã¯ãJPA ã®ã¯ãšãª ãŒèšèªã§ããSQL ã©ã€ã¯ãªã¯ãšãªãŒèšèªã«ãããJPA ãšã³ãã£ã ã£ãŒã®æŽæ°ãç §äŒãè¡ãããšãã§ããŸãã 15. 以äžã«ç€ºãã³ãŒããè¿œå ãããŠããããšã確èªããŸãã @NamedQuery(name = "findAllMovies", query = "SELECT m FROM Movie m ") © 2010 IBM Corporation - 77 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.2.2 Feedback ãšã³ãã£ãã£ãŒã® ãšã³ãã£ãã£ãŒã®äœæ 3.2.1 ãšåæ§ã®æé ã§ãFeedback ãšã³ãã£ãã£ãŒãäœæããŸãã 1. ãããžã§ã¯ãã»ãšã¯ã¹ãããŒã©ãŒãããMyMovieJPA ãå³ã¯ãªãã¯ãããæ°èŠã -> ããšã³ãã£ãã£ãŒãã㯠ãªãã¯ããŸãã 2. ãæ°èŠ JPA ãšã³ãã£ãã£ãŒããã€ã¢ãã°ãéããŸããããšã³ãã£ãã£ãŒã»ã¯ã©ã¹ãããŒãžã§ä»¥äžãå ¥åãã ã次ãžããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ Java ããã±ãŒãž com.ibm.example.websphere.jpa1sample.movie ã¯ã©ã¹å ã¯ã©ã¹å Feedback 3. ããšã³ãã£ãã£ãŒã»ããããã£ãŒãããŒãžãéããŸãã以äžã®ãšã³ãã£ãã£ãŒã»ãã£ãŒã«ããè¿œå ããŸãã åå ã¿ã€ã id java.lang.Integer rating java.lang.Integer comment java.lang.String 4. ãšã³ãã£ãã£ãŒã»ãã£ãŒã«ãã® id ãäž»ããŒã«ããŸããããšã³ãã£ãã£ãŒã»ãã£ãŒã«ããã»ã¯ã·ã§ã³ã® id è¡ã® ãéµãåã«ãã§ãã¯ãå ¥ããŸãã © 2010 IBM Corporation - 78 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5. ãå¯èŠåã®ããã¯ã©ã¹å³ãéžæãããŒãžã§ã¯ããã®ãŸãŸãçµäºããã¯ãªãã¯ããŸãã Feedback ãšã³ãã£ãã£ãŒãäœæããããšãèªå㧠Feedback.java ãéããŸãã以éã§ã¯ãFeedback ã® ãã£ãŒã«ããidãã«å¯ŸããŠãäž»ããŒãèªåçæããèšå®ãè¡ããŸãã 6. Feecback.java ã®ã@Idãã¢ãããŒã·ã§ã³ã®åŸã«ä»¥äžã®ã³ãŒããã³ããŒããŸãã @GeneratedValue(strategy=GenerationType.AUTO) © 2010 IBM Corporation - 79 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.2.3 ãšã³ãã£ãã£ãŒé ãšã³ãã£ãã£ãŒéã®é¢é£äœæ Feedback ãš Movie ã®éã« Many-to-One ã®é¢ä¿ãå®çŸ©ããŸãã 1. Movie ããã³ Feedback äœææã« classdiagram.dnx ãéãããŠããŸããéããŠããŸã£ãå Žåãã㚠㳠㿠㌠ã 㩠〠㺠㻠㚠㯠㹠ã ã ㌠㩠㌠ã ã 㥠㌠ã ã ã ã MyMovieJPA ã -> ã ã 〠㢠㰠㩠ã ã -> ãclassdiagram.dnxããå³ã¯ãªãã¯ãããã¢ããªã±ãŒã·ã§ã³ããéãã -> ãRational DNX ãã€ã¢ã°ã©ã ã» ãšãã£ã¿ãŒããã¯ãªãã¯ããŸãã 2. Feedback ã¯ã©ã¹ãéžæããé¢é£ç·ãåŒãããã®ç¢å°ããŒã¯ã衚瀺ãããŸãã © 2010 IBM Corporation - 80 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3. Feedback ããã®ç¢å°ããã©ãã°ããMovie ã¯ã©ã¹ã§ããããããŸãã 4. ãããã¢ããã»ã¡ãã¥ãŒã衚瀺ãããŸããã0..*:0..1 æåé¢ä¿ã®äœæããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 81 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5. å€å¯Ÿäžã®æåé¢ä¿ç·ãåŒãããããšã確èªããŸãã 6. é¢ä¿ç·ãåŒããããšã«ããããªã¬ãŒã·ã§ã³ã·ãããå®çŸ©ãããŸããFeedback.java ãéãã以äžã®ã³ãŒ ããè¿œå ãããŠããããšã確èªããŸãã @ManyToOne private Movie movie; 7. ã«ã¹ã±ãŒãã»ãªãã·ã§ã³ãèšå®ããŸããã@ManyToOneãã¢ãããŒã·ã§ã³ãéžæãããJPA ã®è©³çŽ°ãã㥠ãŒãããã«ã¹ã±ãŒãã»ãªãã·ã§ã³ã«ãŠã該åœããæäœãéžæããŸãããã®æŒç¿ã§ã¯ãããã¹ãŠãã«ãã§ã ã¯ãå ¥ããŸãã © 2010 IBM Corporation - 82 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ãã®èšå®ã«ãããã@ManyToOneãã¢ãããŒã·ã§ã³ã«ä»¥äžã®åŒæ°ãè¿œå ãããŸãã @ManyToOne(cascade = ALL) ã«ã¹ã±ãŒã ãšã³ãã£ãã£ãŒéã§ãªã¬ãŒã·ã§ã³ã·ãããããå Žåããšã³ãã£ã ã£ãŒã«å¯ŸããŠè¡ãããæäœãé¢é£ãããšã³ãã£ãã£ãŒã«åæ ããããã©ãããã«ã¹ã±ãŒãã»ãªãã·ã§ã³ã«ããæå®ããŸãã以 äžã«ãªãã·ã§ã³ã瀺ããŸãã ãã¹ãŠ(ALL)ïŒãã¹ãŠã®æäœãåæ ãããŸãã ä¿æ(PERSIST)ïŒæ°žç¶åæäœãåæ ãããŸãã ããŒãž(MERGE)ïŒDetached ãšã³ãã£ãã£ãŒã«å¯Ÿããå€ æŽãæ°žç¶åããæäœãåæ ãããŸãããªããDetached ãšã³ãã£ãã£ãŒãšã¯ãEntityManager ã®ç®¡çäžããé¢ã ããšã³ãã£ãã£ãŒãæããŸãã åé€(REMOVE)ïŒåé€æäœãåæ ãããŸãã æŽæ°(REFRESH)ïŒAttached ãšã³ãã£ãã£ãŒã«å¯Ÿããå€ æŽãæ°žç¶åããæäœãåæ ãããŸãããªããAttached ãš ã³ãã£ãã£ãŒãšã¯ãEntityManager ã®ç®¡çäžã«ãããšã³ã ã£ãã£ãŒãæããŸãã © 2010 IBM Corporation - 83 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 8. Movie ãš Feedback ã®çµåãèšå®ããŸããã@ManyToOneãã¢ãããŒã·ã§ã³ãéžæãããJPA ã®è©³çŽ°ã ãã¥ãŒããããããã©ã«ãå€ã®ãªãŒããŒã©ã€ããã«ãã§ãã¯ãå ¥ããŸãã ãã®èšå®ã«ãããã@JoinColumnãã¢ãããŒã·ã§ã³ãè¿œå ãããŸãã @JoinColumn(name = "movie_id", referencedColumnName = "id") private Movie movie; 9. Feedback ããŒã¿ãååŸããããã®ç §äŒãäœæããŸãããJPA ã®è©³çŽ°ããã¥ãŒããã以äžã® 2 ã€ã®ç § äŒãäœæããŸãã findRecentFeedbacks Feedback ããŒã¿ã®ãã¹ãŠãæ°ããé ã§ååŸããŸãã èšå®é ç® èšå®å€ åå findRecentFeedbacks ã¿ã€ã ååä»ãç §äŒ ç §äŒ SELECT f FROM Feedback f ORDER BY f.id DESC findByMovieId Movie ã«å¯Ÿãã Feedback ããŒã¿ãã¹ãŠãååŸããŸãã èšå®é ç® èšå®å€ åå findByMovieId ã¿ã€ã ååä»ãç §äŒ ç §äŒ SELECT f FROM Feedback f WHERE f.movie.id = :movieId © 2010 IBM Corporation - 84 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 10. classdiagram.dnx ããã³ Feedback.java ãä¿åããŸãã ãããŸã§ã§ãMovie.javaãããã³ãFeedback.java ã¯ä»¥äžã®ããã«ãªã£ãŠããã¯ãã§ãã Movie.java package com.ibm.example.websphere.jpa1sample.movie; import java.io.Serializable; import java.lang.Integer; import java.lang.String; import javax.persistence.*; /** * Entity implementation class for Entity: Movie * */ @Entity @NamedQuery(name = "findAllMovies", query = "SELECT m FROM Movie m ") public class Movie implements Serializable { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; private String title; private String actor; private String director; private String description; private static final long serialVersionUID = 1L; public Movie() { super(); } © 2010 IBM Corporation - 85 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public String getTitle() { return this.title; } public void setTitle(String title) { this.title = title; } public String getActor() { return this.actor; } public void setActor(String actor) { this.actor = actor; } public String getDirector() { return this.director; } public void setDirector(String director) { this.director = director; } public String getDescription() { return this.description; } public void setDescription(String description) { this.description = description; } © 2010 IBM Corporation - 86 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ } Feedback.java package com.ibm.example.websphere.jpa1sample.movie; import java.io.Serializable; import java.lang.Integer; import java.lang.String; import javax.persistence.*; import javax.persistence.ManyToOne; import static javax.persistence.CascadeType.ALL; /** * Entity implementation class for Entity: Feedback * */ @Entity @NamedQueries({ @NamedQuery(name = "findRecentFeedbacks", query = "SELECT f FROM Feedback f ORDER BY f.id DESC"), @NamedQuery(name = "findByMovieId", query = "SELECT f FROM Feedback f WHERE f.movie.id = :movieId") }) public class Feedback implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; private Integer rating; private String comment; private static final long serialVersionUID = 1L; @ManyToOne(cascade = ALL) @JoinColumn(name = "movie_id", referencedColumnName = "id") private Movie movie; © 2010 IBM Corporation - 87 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ public Feedback() { super(); } public Integer getId() { return this.id; } public void setId(Integer id) { this.id = id; } public Integer getRating() { return this.rating; } public void setRating(Integer rating) { this.rating = rating; } public String getComment() { return this.comment; } public void setComment(String comment) { this.comment = comment; } /** * @return movie */ public Movie getMovie() { return movie; } /** * @param movie the movie to set */ public void setMovie(Movie movie) { this.movie = movie; } © 2010 IBM Corporation - 88 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ } æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã JPA 1.0 察å¿ã® JPA ãšã³ãã£ãã£ãŒãäœæããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã © 2010 IBM Corporation JPA ãšã³ãã£ãã£ãŒã®äœææ¹æ³ã JPA ãšã³ãã£ãã£ãŒã®äž»ããŒãèªåçæããæ¹æ³ã JPA ãšã³ãã£ãã£ãŒã®ç §äŒã®å®çŸ©æ¹æ³ã JPA ãšã³ãã£ãã£ãŒéã®ãªã¬ãŒã·ã§ã³ã·ããã®å®çŸ©æ¹æ³ã JPA ãšã³ãã£ãã£ãŒéã®ã«ã¹ã±ãŒãã®å®çŸ©æ¹æ³ã JPA ãšã³ãã£ãã£ãŒéã®çµåã®å®çŸ©æ¹æ³ã - 89 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ JPA ãšã³ãã£ãã£ãŒãã ãšã³ãã£ãã£ãŒããããŒãã« ããããŒãã«ã® ããŒãã«ã®äœæ 3.3 ãã®æŒç¿ã§ã¯ãäœæãã JPA ãšã³ãã£ãã£ãŒããããŒã¿ããŒã¹ã®ããŒãã«ãçæããæé ã瀺ããŸãã ããŒãã«ãçæããã«ã¯ãããŒã¿ããŒã¹ãããã³ãããŒã¿ããŒã¹ãžã®æ¥ç¶æ å ±ãå¿ èŠã§ãã 3.3.1.ã§ã¯ãããŒã¿ããŒã¹ãããã³ãããŒã¿ããŒã¹æ¥ç¶ãäœæããæé ã瀺ããŸãã 3.3.2.ã§ã¯ãäœæããããŒã¿ããŒã¹æ¥ç¶ã䜿çšããŠãããŒã¿ããŒã¹ã«ããŒãã«ãçæããŸãã ãŸããäœæããããŒã¿ããŒã¹ãããã³ãããŒãã«ã«æ¥ç¶æ å ±ããMy Movie Web Application ã®ããã〠å ã§ãã WAS äžããã䜿çšã§ããããã«ããã«ã¯ããããžã§ã¯ãã®ãããã€ã¡ã³ãæ å ±ãæ§æããå¿ èŠã ãããŸãã3.3.3 ã§ã¯ããããã€ã¡ã³ãã®æ§ææé ã瀺ããŸãã 3.3.1 ããŒã¿ããŒã¹æ¥ç¶ ããŒã¿ããŒã¹æ¥ç¶ã® æ¥ç¶ã®äœæ 1. ãããŒã¿ã»ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒããããããŒã¿ããŒã¹æ¥ç¶ããå³ã¯ãªãã¯ãããæ°èŠããã¯ãªã ã¯ããŸãã © 2010 IBM Corporation - 90 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2. ãæ°èŠæ¥ç¶ããã€ã¢ãã°ãéããŸãã以äžãèšå®ããæ®ãã®é ç®ã¯ããã©ã«ãèšå®ãåãå ¥ãããçµ äºããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ ããŒã¿ããŒã¹ã» ããŒã¿ããŒã¹ ã» ãããŒãžã£ãŒã® ãããŒãžã£ãŒ ã® éž Derby æ JDBC ãã©ã€ã㌠Derby 10.2 â çµã¿èŸŒã¿ JDBC ãã©ã€ããŒããã©ã«ã 3. ãããŒã¿ã»ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒãã®ãããŒã¿ããŒã¹æ¥ç¶ãå ã«ãæ°èŠã«å®çŸ©ããæ¥ç¶ãååšããã ãšã確èªããŸãã © 2010 IBM Corporation - 91 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.3.2 ããŒãã«ã® ããŒãã«ã®çæ 3.3.1.ã§äœæããããŒã¿ããŒã¹ãããã³ãããŒã¿ããŒã¹æ¥ç¶ã䜿çšããŠãããŒã¿ããŒã¹ã«ããŒãã«ãäœ æããŸãã 1. MyMovieJPA ãããžã§ã¯ããå³ã¯ãªãã¯ãããJPA ããŒã«ã -> ããšã³ãã£ãã£ãŒããããŒãã«ãçæãã ã¯ãªãã¯ããŸãã 2. ãDDL ã®çæããã€ã¢ãã°ãéããŸãã以äžã®èšå®ãè¡ãããçµäºããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ DDL ãã¡ã€ã«ã ãã¡ã€ã«ãçæãã çæããããŒã¿ããŒã¹ ããããŒã¿ããŒã¹ã» ããŒã¿ããŒã¹ã»ãã³ããŒã ãã³ããŒãéžæ ãã§ãã¯ãå ¥ãã ãã³ã㌠Derby © 2010 IBM Corporation - 92 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3. Table.ddl ãçæãããSQL ãã¡ã€ã«ã»ãšãã£ã¿ãŒäžã«éãããŸãããªããddl ãã¡ã€ã«ãçæããã ãã©ã«ããŒã¯ããMyMovieJPAã -> ãejbModuleã -> ãMETA-INFãã§ãã 4. Table.ddl ã®æ¥ç¶ãããã¡ã€ã«ãå€æŽããŸãããæ¥ç¶ãããã¡ã€ã«ãã»ã¯ã·ã§ã³ã§ 3.3.1.ã§äœæããã㌠ã¿ããŒã¹æ¥ç¶ãæå®ããŸãã以äžã®èšå®ãè¡ããä¿åããŸãã èšå®é ç® èšå®å€ ã¿ã€ã Derby_10.x åå MyDB ããŒã¿ããŒã¹ MyDB © 2010 IBM Corporation - 93 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5. SQL ãã¡ã€ã«ã»ãšãã£ã¿ãŒå ãå³ã¯ãªãã¯ããããã¹ãŠå®è¡ããã¯ãªãã¯ããŸãã 6. ãSQL ã®çµæããã¥ãŒãéããŸããããŒãã«çæãæåããããšã確èªããŸãã 7. ããŒã¿ããŒã¹æ¥ç¶ãåæããŸãããããŒã¿ã»ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒããããããŒã¿ããŒã¹æ¥ ç¶ã -> ãMyDBããå³ã¯ãªãã¯ãããæ¥ç¶ããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 94 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.3.3 JDBC ãããã€ã¡ã³ãã® ãããã€ã¡ã³ãã®ãããžã§ã¯ãæ§æ ãããžã§ã¯ãæ§æ ãã®æŒç¿ã§ã¯ãRAD äžã§äœæããéçºæçšã®ããŒã¿ããŒã¹æ¥ç¶ããWAS äžããã䜿çšã§ããããã«ã ããããã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ãæ å ±ãæ§æããŸãã 1. ããããžã§ã¯ãã»ãšã¯ã¹ãããŒã©ãŒãããããMyMovieJPAããå³ã¯ãªãã¯ãããJPA ããŒã«ã -> ãJDBC ã ããã€ã¡ã³ãã®ãããžã§ã¯ãæ§æããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 95 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2. ããããã€ã¡ã³ãã®ããã®æ¥ç¶ã®ã»ããã¢ããããã€ã¢ãã°ãéããŸããããã©ã«ãã®èšå®ãåãå ¥ãã ãOKããã¯ãªãã¯ããŸãã 泚æïŒ æ³šæïŒ éåžžã§ããã°ããããŸã§ã®æé 㧠3.3.1.ã§äœæããããŒã¿ããŒã¹æ¥ç¶ã䜿çšããŠã WAS ã©ã³ã¿ã€ã äžããããŒã¿ããŒã¹ã»ã¢ã¯ã»ã¹ããããšãã§ããŸãã ããããæ¬è³æã§äœ¿çšããŠãã RAD V8.0 ãš WAS V7.0 ãšã§ã¯ã䜿çšããŠãã Derby ã©ã³ã¿ã€ã ã®ã»ã©ã€ãã©ãªã®ããŒãžã§ã³ãç°ãªãããã®ãŸãŸã§ã¯åäœããããŸããã 以éã®æé ã§ã¯ãå®è¡ç°å¢ã«ãããŠãéçºç°å¢ã§äœ¿çšããŠãã Derby ã®ã©ã€ãã©ãªãŒ ãåç §ãããèšå®ãè¡ããŸãããªãããã®èšå®ã«ã¯ WebSphere Application Server ã® WebSphere å€æ°ãå€æŽããŸãã ãªããå ·äœçãªããŒãžã§ã³ã¯ä»¥äžã®ããã«ãªã£ãŠããŸãã ç°å¢ Derby ã®ããŒãžã§ã³ éçºç°å¢ïŒ ïŒ éçºç°å¢ïŒRAD V8.0ïŒ 10.5 å®è¡ç°å¢ïŒ ïŒ å®è¡ç°å¢ïŒWAS V7.0ïŒ 10.2 3. WAS ãèµ·åããŸããããµãŒããŒããã¥ãŒããããlocalhost ã® WebSphere Application Server v7.0ã ãéžæããããµãŒããŒãå§åãã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 96 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 4. ãµãŒããŒãå§åæžã¿ã«ãªã£ããããlocalhost ã® WebSphere Application Server v7.0ããå³ã¯ãªã㯠ããã管çã -> ã管çã³ã³ãœãŒã«ã®å®è¡ããã¯ãªãã¯ããŸãã 5. 管çã³ã³ãœãŒã«ã®ããããç»é¢ãéããŸããå·ŠåŽã»ã¯ã·ã§ã³ããããç°å¢ã -> ãWebSphere å€æ°ãã ã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 97 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 6. ãWebSphere å€æ°ãç»é¢ã®ãªãœãŒã¹äžèŠ§ããããDERBY_JDBC_DRIVER_PATHããã¯ãªãã¯ã㟠ãã 7. ãäžè¬ããããã£ãŒãã®å€æ¬ã« RAD V8.0 ã䜿çšãã derby.jar ãžã®ãã¹ïŒæ³šïŒãæå®ããŸãã © 2010 IBM Corporation - 98 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 泚æïŒ æ³šæïŒ RAD V8.0 ã䜿çšããŠãã derby.jar ãžã®ãã¹ã¯ãInstallation Manager ãããã©ã«ãã®ãã£ã¬ ã¯ããªãŒã«ã€ã³ã¹ããŒã«ããå Žåã®ãã¹ã«ãªããŸãã ããã©ã«ãã®ã€ã³ã¹ããŒã«ã»ãã£ã¬ã¯ããªãŒã«ã€ã³ã¹ããŒã«ããå Žåã¯ä»¥äžã«ãªããŸãã C:¥Program Files¥IBM¥SDPShared¥plugins¥org.apache.derby.core_10.5.1.1_v20100129¥derby.jar ç°ãªããã£ã¬ã¯ããªãŒã«ã€ã³ã¹ããŒã«ããå Žåã¯ãInstallation Manager ã®ã€ã³ã¹ããŒã«ã»ãã£ã¬ã¯ ããªãŒã® 1 éå±€äžã« SDPShared ãã£ã¬ã¯ããªãŒãèŠã€ããããšãã§ããŸãã 8. ããŒã«ã«æ§æãä¿åããŸãããä¿åããªã³ã¯ãã¯ãªãã¯ããŸãã 9. WAS ãåæ¢ããŸããããµãŒããŒããã¥ãŒããããlocalhost ã® WebSphere Application Server v7.0ã ãéžæããããµãŒããŒãåæ¢ãã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã æ°èŠã«äœæããããŒã¿ããŒã¹æ¥ç¶ã䜿çšããŠãJPA ãšã³ã㣠ãã£ãŒããããŒãã«ãçæããŸããããŸããäœæããããŒã¿ã ãŒã¹æ¥ç¶ã WAS äžãã䜿çšã§ããããã«ãããžã§ã¯ãã®ããã ã€ã¡ã³ãæ å ±ãæ§æããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã © 2010 IBM Corporation ããŒã¿ããŒã¹æ¥ç¶ã®äœææ¹æ³ã JPA ãšã³ãã£ãã£ãŒããããŒãã«ã®çææ¹æ³ã - 99 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ JPA ãããŒãžã£ãŒBean ã®äœæ ãããŒãžã£ãŒ 3.4 ãã®æŒç¿ã§ã¯ã3.2 ã§äœæãããšã³ãã£ãã£ãŒã管çãããããŒãžã£ãŒBean ãäœæããŸãããããŒãžã£ ãŒBean 㯠Movieãããã³ãFeedback ãšã³ãã£ãã£ãŒããããã«å¯ŸããŠäœæããŸãããªãããããŒãžã£ ãŒBean ã®å®è£ ãšããŠã¯ãã»ãã·ã§ã³ Bean ãæ¡çšããããšã«ããŸãã 3.4.1 ã»ãã·ã§ã³ Bean ã®äœæ 1. ãŸããMovie ãšã³ãã£ãã£ãŒã管çãã MovieManager ãäœæããŸããããããžã§ã¯ãã»ãšã¯ã¹ãããŒã© ãŒãããããMyMovieJPAããå³ã¯ãªãã¯ãããæ°èŠã -> ãã»ãã·ã§ã³ Bean (EJB 3.x)ããã¯ãªãã¯ããŸãã 2. ãEJB 3.x ã»ãã·ã§ã³ Bean ã®äœæããã€ã¢ãã°ãéããŸãã以äžãèšå®ããæ®ãã®èšå®é ç®ã¯ããã© ã«ãã®ãŸãŸã§ãã次ãžããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ Java ããã±ãŒãž com.ibm.example.websphere.jpa1sample.movie ã¯ã©ã¹å ã¯ã©ã¹å MovieManager © 2010 IBM Corporation - 100 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3. 次ã®ã»ãã·ã§ã³ Bean ã®ç¹å®æ å ±ãå ¥åããããŒãžã§ã¯ããã®ãŸãŸãã次ãžããã¯ãªãã¯ããŸãã 4. ãå¯èŠåã®ããã¯ã©ã¹å³ãéžæãããŒãžã§ã¯ãããã©ã«ãã®ãŸãŸããçµäºããã¯ãªãã¯ããŸãã 5. 次ã«ãæé 1.-4.ãç¹°ãè¿ããFeedback ãšã³ãã£ãã£ãŒã管çãã FeedbackManager ãäœæã㟠ãããªããæé 2.ã§ã®èšå®å€ã¯ä»¥äžãšããŸãã èšå®é ç® èšå®å€ Java ããã±ãŒãž com.ibm.example.websphere.jpa1sample.movie ã¯ã©ã¹å ã¯ã©ã¹å FeedbackManager ãããŸã§ã§ãclassdiagram.dnx ã«ã¯ MovieManager ããã³ FeedbackManager ãå«ãŸããŠããã¯ã㧠ãã © 2010 IBM Corporation - 101 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.4.2 JPA 管çã¡ãœãã 管çã¡ãœããã® ã¡ãœããã® EJB ãžã®è¿œå ãžã®è¿œå çæããã classdiagram.dnx ã䜿çšããŠãMovieManager ããã³ FeedbackManager ã« JPA 管çã¡ ãœãããè¿œå ããŸãã 1. classdiagram.dnx ãéããŸãã 2. ãMovieManagerãã¯ã©ã¹ãå³ã¯ãªãã¯ãããEJB3.0 ãè¿œå ã -> ãJPA 管çã¡ãœããããã¯ãªãã¯ããŸãã 3. ãJPA ãããŒãžã£ãŒBean ãŠã£ã¶ãŒãããéããŸããã䜿çšå¯èœãª JPA ãšã³ãã£ãã£ãŒããã Movie ã« ãã§ãã¯ãå ¥ãããçµäºããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 102 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 4. classdiagram.dnx ã«ãŠããMovieManagerãã¯ã©ã¹ã« JPA 管çã¡ãœãããè¿œå ãããããšã確èªã㟠ãã JPA 管çã¡ãœãã 管çã¡ãœãã JPA 管çã¡ãœãããšããŠä»¥äžãçæãããŸãã 管 ç 察 象 ãš ã³ ã 㣠ã 㣠㌠㮠CRUD 㡠㜠ã ã (Create,Read,Update,Delete) ãšã³ãã£ãã£ãŒã«å®çŸ©ããã NamedQuery ãå®è¡ ããã¡ãœãã 5. findMovieById ã¡ãœããã«ãã£ãŠååŸãã Movie ãä»ã® PersistenceContext ãã䜿çšã§ããããã«ã EntityManager ã® clear ã¡ãœããã䜿çšããŸããMovieManager.java ã® findMovieById ã¡ãœããã以 äžã«çœ®ãæããŠãã ããã @Action(Action.ACTION_TYPE.FIND) public Movie findMovieById(Integer id) { Movie movie = null; EntityManager em = getEntityManager(); try { movie = (Movie) em.find(Movie.class, id); em.clear(); } finally { em.close(); } return movie; } © 2010 IBM Corporation - 103 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ EntityManager clear ã¡ãœãã PersistenceContext(EntityManager ã管çãã JPA ãšã³ã ã£ãã£ãŒã®éå)ãã¯ãªã¢ãããã¹ãŠã®ãšã³ãã£ãã£ãŒã detach ããŸããDetach ããããšã³ãã£ãã£ãŒã¯ãä»ã® EntityManager ã® PersistenceContext ã®ç®¡ç察象ãšãªãããšãã§ããŸãã ä»åã®äŸã§ ã¯ã ååŸã ã Movie 〠ã³ã¹ã¿ã³ ã¹ããåŸ è¿°ã® FeedbackManager ã Feedback ããŒã¿ãç»é²ããéã«äœ¿ çšããã®ã§ãMovie ã€ã³ã¹ã¿ã³ã¹ã detach ããŸããã 6. æé 1.-3.ãšåæ§ã« FeedbackManager ã®ç®¡çã¡ãœãããè¿œå ããŸãã ãªãããJPA ãããŒãžã£ãŒBean ãŠã£ã¶ãŒããã§ã®ã䜿çšå¯èœãª JPA ãšã³ãã£ãã£ãŒãã«ã¯ãFeedback ãšã³ãã£ãã£ãŒã«ãã§ãã¯ãããŠãã ããã © 2010 IBM Corporation - 104 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. classdiagram.dnx ã«ãŠããFeedbackManagerãã¯ã©ã¹ã« JPA 管çã¡ãœãããè¿œå ãããããšã確èªã ãŸãã 8. NamedQuery ã«ããçæããã findRecentFeedbacks ã¡ãœãããå€æŽããäžããããåŒæ°ã®æ°ã ã ç §äŒçµæãè¿ãããã«ããŸããFeedbackManager.java ãéããŸãã 9. findRecentFeedbacks ã¡ãœããã以äžã®ã³ãŒãã«çœ®ãæããŸãïŒäžç·ã¯å€æŽç¹ã瀺ããŸãïŒã @NamedQueryTarget("findRecentFeedbacks") public List<Feedback> findRecentFeedbacks(int maxCount) { EntityManager em = getEntityManager(); List<Feedback> results = null; try { Query query = em.createNamedQuery("findRecentFeedbacks"); query.setMaxResults(maxCount); results = (List<Feedback>) query.getResultList(); } finally { em.close(); } return results; } 10. classdiagram.dnx, MovieManager.java, FeedbackManager.java ãä¿åããŸãã © 2010 IBM Corporation - 105 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.4.3 JPA 管çã¡ãœãã 管çã¡ãœããã® ã¡ãœããã®ããã¢ãŒã 3.4.2.ã§ã¯ãMovieManager ããã³ FeedbackManager ã« JPA 管çã¡ãœãããè¿œå ããŸããã ãã®æŒç¿ã§ã¯ãJPA 管çãœãããã»ãã·ã§ã³ Bean ã®ããžãã¹ã»ã€ã³ã¿ãŒãã§ãŒã¹ MovieManagerLocal ã ãã³ FeedbackManagerLocal ã«åæ ãããŸããåæ ãããã«ã¯ Java EE ããŒã«ã®ãã¡ãœããã®ããã¢ãŒ ããã䜿çšããŸãã 1. ã ã ã 㞠㧠㯠ã 㻠㚠㯠㹠ã ã ㌠㩠㌠ã ã 㥠㌠ã ã ã ã MyMovieJPA ã -> ã ejbModule ã -> ãcom.ibm.sample.websphere.jpa1sample.movieã -> ãMovieManagerããå³ã¯ãªãã¯ãããJava EE ããŒã«ã -> ãã¡ãœããã®ããã¢ãŒãããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 106 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 2. ãã¡ãœããã®ããã¢ãŒãããã€ã¢ãã°ãéããŸãããã¹ãŠã® public ã¡ãœãããéžæãããOKããã¯ãªãã¯ã㟠ãã 3. MovieManagerLocal.java ãéããã¡ãœãããããã¢ãŒããããŠããããšã確èªããŸãã 4. æé 1.-3.ãšåæ§ã®æé ã§ãFeedbackManager ã® JPA 管çã¡ãœããã FeedbackManagerLocal ã«ããã¢ãŒãããŸãã ãããŸã§ã§ãJPA ãããŒãžã£ãŒBean ã¯ãããã以äžã®ããã«ãªã£ãŠããã¯ãã§ãã MovieManagerLocal.java package com.ibm.example.websphere.jpa1sample.movie; import java.util.List; import javax.ejb.Local; @Local © 2010 IBM Corporation - 107 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ public interface MovieManagerLocal { String createMovie(Movie movie) throws Exception; String deleteMovie(Movie movie) throws Exception; String updateMovie(Movie movie) throws Exception; Movie findMovieById(Integer id); Movie getNewMovie(); List<Movie> findAllMovies(); } MovieManager.java package com.ibm.example.websphere.jpa1sample.movie; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import com.ibm.jpa.web.NamedQueryTarget; import com.ibm.jpa.web.Action; import javax.persistence.PersistenceUnit; import com.ibm.example.websphere.jpa1sample.movie.Movie; import java.util.List; import javax.persistence.Query; /** * Session Bean implementation class MovieManager */ @Stateless public class MovieManager implements MovieManagerLocal { @PersistenceUnit private EntityManagerFactory emf; © 2010 IBM Corporation - 108 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ /** * Default constructor. */ public MovieManager() { // TODO Auto-generated constructor stub } private EntityManager getEntityManager() { return emf.createEntityManager(); } @Action(Action.ACTION_TYPE.CREATE) public String createMovie(Movie movie) throws Exception { EntityManager em = getEntityManager(); try { em.persist(movie); } finally { em.close(); } return ""; } @Action(Action.ACTION_TYPE.DELETE) public String deleteMovie(Movie movie) throws Exception { EntityManager em = getEntityManager(); try { movie = em.merge(movie); em.remove(movie); } finally { em.close(); } return ""; } @Action(Action.ACTION_TYPE.UPDATE) © 2010 IBM Corporation - 109 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ public String updateMovie(Movie movie) throws Exception { EntityManager em = getEntityManager(); try { movie = em.merge(movie); } finally { em.close(); } return ""; } @Action(Action.ACTION_TYPE.FIND) public Movie findMovieById(Integer id) { Movie movie = null; EntityManager em = getEntityManager(); try { movie = (Movie) em.find(Movie.class, id); em.clear(); } finally { em.close(); } return movie; } @Action(Action.ACTION_TYPE.NEW) public Movie getNewMovie() { Movie movie = new Movie(); return movie; } @NamedQueryTarget("findAllMovies") public List<Movie> findAllMovies() { EntityManager em = getEntityManager(); List<Movie> results = null; try { © 2010 IBM Corporation - 110 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ Query query = em.createNamedQuery("findAllMovies"); results = (List<Movie>) query.getResultList(); } finally { em.close(); } return results; } } FeedbackManagerLocal.java package com.ibm.example.websphere.jpa1sample.movie; import java.util.List; import javax.ejb.Local; @Local public interface FeedbackManagerLocal { public List<Feedback> findByMovieId(Object movieId); public List<Feedback> findRecentFeedbacks(int maxCount); public Feedback getNewFeedback(); public Feedback findFeedbackById(Integer id); public String updateFeedback(Feedback feedback) throws Exception; public String deleteFeedback(Feedback feedback) throws Exception; public String createFeedback(Feedback feedback) throws Exception; } FeedbackManager.java © 2010 IBM Corporation - 111 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ package com.ibm.example.websphere.jpa1sample.movie; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import com.ibm.jpa.web.NamedQueryTarget; import com.ibm.jpa.web.Action; import javax.persistence.PersistenceUnit; import com.ibm.example.websphere.jpa1sample.movie.Feedback; import java.util.List; import javax.persistence.Query; /** * Session Bean implementation class FeedbackManager */ @Stateless public class FeedbackManager implements FeedbackManagerLocal { @PersistenceUnit private EntityManagerFactory emf; /** * Default constructor. */ public FeedbackManager() { // TODO Auto-generated constructor stub } private EntityManager getEntityManager() { return emf.createEntityManager(); } @Override @Action(Action.ACTION_TYPE.CREATE) public String createFeedback(Feedback feedback) throws Exception { © 2010 IBM Corporation - 112 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ EntityManager em = getEntityManager(); try { em.persist(feedback); } finally { em.close(); } return ""; } @Override @Action(Action.ACTION_TYPE.DELETE) public String deleteFeedback(Feedback feedback) throws Exception { EntityManager em = getEntityManager(); try { feedback = em.merge(feedback); em.remove(feedback); } finally { em.close(); } return ""; } @Override @Action(Action.ACTION_TYPE.UPDATE) public String updateFeedback(Feedback feedback) throws Exception { EntityManager em = getEntityManager(); try { feedback = em.merge(feedback); } finally { em.close(); } return ""; } © 2010 IBM Corporation - 113 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ @Override @Action(Action.ACTION_TYPE.FIND) public Feedback findFeedbackById(Integer id) { Feedback feedback = null; EntityManager em = getEntityManager(); try { feedback = (Feedback) em.find(Feedback.class, id); } finally { em.close(); } return feedback; } @Override @Action(Action.ACTION_TYPE.NEW) public Feedback getNewFeedback() { Feedback feedback = new Feedback(); return feedback; } @Override @NamedQueryTarget("findRecentFeedbacks") public List<Feedback> findRecentFeedbacks(int maxCount) { EntityManager em = getEntityManager(); List<Feedback> results = null; try { Query query = em.createNamedQuery("findRecentFeedbacks"); query.setMaxResults(maxCount); results = (List<Feedback>) query.getResultList(); } finally { em.close(); } return results; © 2010 IBM Corporation - 114 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ } @Override @NamedQueryTarget("findByMovieId") public List<Feedback> findByMovieId(Object movieId) { EntityManager em = getEntityManager(); List<Feedback> results = null; try { Query query = em.createNamedQuery("findByMovieId"); query.setParameter("movieId", movieId); results = (List<Feedback>) query.getResultList(); } finally { em.close(); } return results; } } EntityManager EntityManager 㯠Persistence Entity ã®ã€ã³ã¹ã¿ã³ã¹ããã ã³ãã©ã€ããµã€ã¯ã«ã管çããŸããPersistence Entity ãžã®æ äœ ã¯ EntityManager ã ä» ã ãŠ è¡ ã ã 㟠ã ã 㪠ã ã EntityManager ã«ã¯ä»¥äžã® 2 çš®é¡ããããŸãã container-managed Entity Manager EntityManager ã®ã©ã€ããµã€ã¯ã«ã J2EE ã³ã³ãããŒã«ãã£ãŠ 管çãããŸããäžè¬çã«ãWeb ã³ã³ãããŒã EJB ã³ã³ãã㌠äžã§å©çšãããŸãã application-managed Entity Manager EntityManager ã®ã©ã€ããµã€ã¯ã«ãã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠ 管çãããŸããJava SE ç°å¢ã Java EE ã¢ããªã±ãŒã·ã§ã³ã»ã¯ ã©ã€ã¢ã³ãç°å¢ã§ã¯ãapplication-managed Entity Manager ãããµããŒããããŠããŸããã © 2010 IBM Corporation - 115 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ïŒ PersistentUnit ã¢ãããŒã·ã§ã³ EntityManager ã¯ãEntityManagerFactory ãä»ããŠçæã ã 㟠ã ã container-managed Entity Manager ã® å Ž å ã EntityManagerFactory ã¯ å¿ èŠ ã ã 㟠ã ã ã ã application-managed Entity Manager ã®å Žåã¯ãæ瀺çã« EntityManagerFactory ã å© çš ã ã EntityManager ã PersistenceContext ã®ã©ã€ããµã€ã¯ã«ã管çããªããŠã¯ãªã㟠ããããªããPersistenceContext ãšã¯ Persistence Entity ã® éåãæããŸãã Java EE ç°å¢ã®å Žåã@PersistentUnit ã¢ãããŒã·ã§ã³ã䜿 çšããããšã§ãEntityManagerFactory ã«å¯ŸããŠäŸåæ§ã®æ³šå ¥ ãè¡ãããŸãã æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã ã»ãã·ã§ã³ Bean ãäœæããJPA 管çã¡ãœãããè¿œå ããŸããã㟠ããçæãããã¡ãœãããããžãã¹ã»ã€ã³ã¿ãŒãã§ãŒã¹ã«ãã㢠ãŒãããŸãããããã§ããŒã¿ã»ã¢ã¯ã»ã¹å±€ãå®æããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã JPA 管çã¡ãœããã®è¿œå æ¹æ³ã ã»ãã·ã§ã³ Bean ã®ã¡ãœãããããžãã¹ã»ã€ã³ã¿ãŒãã§ãŒã¹ã« ããã¢ãŒãããæ¹æ³ã © 2010 IBM Corporation - 116 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.5 ããŒã¿ã» ããŒã¿ã»ã¢ã¯ã»ã¹å±€ ã¯ã»ã¹å±€ã®åäœç¢ºèª ãã®æŒç¿ã§ã¯ãMyMovieJPA ã®ç°¡åãªåäœç¢ºèªãè¡ããŸãã 3.5.1 ã§ã¯ Universal Test Client ã䜿çšããŠãMovieManagerLocal ã®ç®¡çã¡ãœããã«ã¢ã¯ã»ã¹ããJPA ãšã³ãã£ãã£ãŒã§ãã Movie ã®ç»é²ãè¡ããŸãã 3.5.2.ã§ã¯ã3.5.1 ã§ç»é²ãã Movie ããŒã¿ãæ°žç¶åãããŠããããšãããJPAãããŒã¹ãã¯ãã£ãã®ãã㌠ã¿ã»ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã䜿çšããŠç¢ºèªããŸãã ãªããMy Movie Web Application ã«é¢ããŠã¯ãUniversal Test Client ãšãããŒã¿ã»ãœãŒã¹ã»ãšã¯ã¹ãããŒã© ãŒããã¥ãŒã®ãããã䜿çšããŠããããŒã¿ã«å¯Ÿãã CRUD æäœãå¯èœã§ãã Universal Test Client ãµãŒããŒã»ããŒã«ã«ã¯ãWeb ãããŒã¹ã«ãã Universal Test Client ãçšæãããŠãããããã䜿çšããããšã§ããŒã«ã«ãŸã ã¯ãªã¢ãŒãã®ãµãŒããŒäžã§å®è¡äžã®ãšã³ã¿ãŒãã©ã€ãº Bean ããã³ããã®ä»ã® Java ãªããžã§ã¯ãã®ã¡ãœããããã¹ãããããš ãã§ããŸãã ãããŒã¿ã» ããŒã¿ã»ãœãŒã¹ã» ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒ ãšã¯ã¹ãããŒã©ãŒããã¥ãŒ ããŒã¿ããŒã¹ã«æ¥ç¶ããããŒãã«ããã¥ãŒãä»ããŠããŒã¿ã« ã¢ã¯ã»ã¹ããããšãã§ããŸããããŒã¿ããŒã¹æ¥ç¶åŸã¯ãããŒã¿ ã«å¯Ÿãã CRUD æäœããããŒã¿ã®ã€ã³ããŒã(ããŒã)ããšã¯ã¹ ããŒã(æœåº)ãªã©ãããŒã¿ã«é¢ããããŸããŸãªæäœãè¡ãããšã ã§ããŸãã © 2010 IBM Corporation - 117 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.5.1 Universal Test Client ã䜿çšãã 䜿çšããããŒã¿ ããããŒã¿ã® ããŒã¿ã®è¿œå 1. ãJava EEãããŒã¹ãã¯ãã£ãã«åãæ¿ããŸãã 2. ããµãŒããŒããã¥ãŒããããlocalhost ã® WebSphere Application Server v7.0ããå³ã¯ãªãã¯ãããè¿œå ããã³åé€ããã¯ãªãã¯ããŸãã 3. ãè¿œå ããã³åé€ããã€ã¢ãã°ã衚瀺ãããŸãããMyMovieEARããéžæãããè¿œå ããã¿ã³ãã¯ãªãã¯ã ãŸãã 4. ãçµäºããã¯ãªãã¯ããŸãã 5. ãlocalhost ã® WebSphere Application Server v7.0ããéžæããããµãŒããŒãå§åãã¢ã€ã³ã³ãã¯ãªã ã¯ããŸãã © 2010 IBM Corporation - 118 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 6. ãµãŒããŒãå§åãããããlocalhost ã® WebSphere Application Server v7.0ããå³ã¯ãªãã¯ãã ãUniversal Test Clientã -> ãå®è¡ããã¯ãªãã¯ããŸãã 7. Universal Test Client ããã©ãŠã¶ãŒäžã«è¡šç€ºãããŸãã © 2010 IBM Corporation - 119 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 8. ãJNDI ãšã¯ã¹ãããŒã©ãŒããã¯ãªãã¯ããŸãã 9. ã JNDI 㚠㯠㹠ã ã ㌠㩠㌠ã ã ã ã [ ã ㌠㫠㫠EJB Bean] -> ãcom.ibm.example.websphere.jpa1sample.movie.MovieManagerLocalããã¯ãªãã¯ããŸãã 10. MovieManagerLocal ãæäŸããã¡ãœããã®å ãcreateMovie ãéžæããŸãããEJB Beansã -> ãMovieManagerLocalã -> ãMovieManagerLocalã -> ãString createMovie(Movie)ããã¯ãªã㯠ããŸãã 11. ããã©ã¡ãŒã¿ãŒãã»ã¯ã·ã§ã³ã« Movie ã®åœ¹è ã説æãç£ç£ãã¿ã€ãã«ãå ¥åããŸãã 12. Movie ã® id ã¯ãã»ã¬ã¯ãã»ããã¯ã¹ãããnull(Integer)ããéžæããŸãã © 2010 IBM Corporation - 120 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 13. ãèµ·åããã¯ãªãã¯ããŸãã 14. çµæã®ã»ã¯ã·ã§ã³ã§ãšã©ãŒã»ã¡ãã»ãŒãžã衚瀺ãããŠããªãããšã確èªããŸãã 15. åæ§ã®æé ã§ä»ã® Movie ããŒã¿ãç»é²ããŸãã 16. Movie ããŒã¿ã®ç»é²ãæžãã ãããµãŒããŒãåæ¢ãããŸããããµãŒããŒããã¥ãŒããããlocalhost ã® WebSphere Application Server v7.0ããéžæããããµãŒããŒãåæ¢ãã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 121 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3.5.2 ããŒã¿ã» ããŒã¿ã»ãœãŒã¹ã» ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒã» ãšã¯ã¹ãããŒã©ãŒã»ãã¥ãŒã ãã¥ãŒã䜿çšãã 䜿çšããããŒã¿ ããããŒã¿ã® ããŒã¿ã®ç¢ºèª 1. ãJPAãããŒã¹ãã¯ãã£ãã«åãæ¿ããŸãã 2. ãããŒã¿ã»ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒããããããŒã¿ããŒã¹æ¥ç¶ã -> ãMyDBããå³ã¯ãªãã¯ãã ãæ¥ç¶ããã¯ãªãã¯ããŸãã 3. MyDB ãå±éãããããŒã¿ããŒã¹æ¥ç¶ã«æåããããšã確èªããŸãã 泚æïŒ æ³šæïŒ WebSphere Application Server V7.0 ãåæ¢ããŠããªããšããŒã¿ããŒã¹æ¥ç¶ã«æå ããŸããã 4. ãMyDBã -> ãMyDBã -> ãã¹ããŒãã -> ãAPPã -> ãããŒãã«ã -> ãMovieããå³ã¯ãªãã¯ãã ãããŒã¿ã -> ããã¹ãŠã®è¡ãæ»ãããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 122 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ãããŒã¿ã ããŒã¿ãã«å¯Ÿãããªãã·ã§ã³ ãããªãã·ã§ã³ ããŒã¿ã®ã«å¯Ÿããæäœã®ãªãã·ã§ã³ãšããŠã以äžããããŸãã ãã¹ãŠã®è¡ãæ»ã ããŒãã«ããã¥ãŒå ã®ãã¹ãŠã®è¡ã確èªããŸãã ç·šé è¡ã®è¿œå ãæŽæ°ãåé€ãè¡ããŸãã ããŒã å ¥åãã¡ã€ã«ããè¡æ å ±ãã€ã³ããŒãããŸãã æœåº åºåãã¡ã€ã«ãžè¡æ å ±ããšã¯ã¹ããŒãããŸãã ãµã³ãã«ã»ã³ã³ãã³ã è¡šå ã®è¡ã®ãµã³ãã«ã確èªããŸãããµã³ãã«ã§ç¢ºèªã§ããçµæã»ããã¯ããSQL ã®çµæãã¥ãŒã®ãªãã·ã§ã³ãèšå®ã«ããå€æŽã§ããŸãã 5. Universal Test Client ããç»é²ããããŒã¿ã確èªããŸãã 6. ããŒã¿ããŒã¹æ¥ç¶ãåæããŸãããããŒã¿ã»ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒããããããŒã¿ããŒã¹æ¥ © 2010 IBM Corporation - 123 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ç¶ã -> ãMyDBããå³ã¯ãªãã¯ãããåæããã¯ãªãã¯ããŸãã 泚æïŒ æ³šæïŒ ããŒã¿ã㌠ã¹æ¥ç¶ ãåæ ã ãªããšãåŸ ç¶ã®ã¹ãã ã 㧠WebSphere Application Servre V7.0 ãå§åããéã«å€±æããŸãã æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã Universal Test Client ã䜿çšããJPA 管çã¡ãœããããã³ JPA ãšã³ãã£ãã£ãŒBean ã®åäœã確èªããŸããããŸãããããŒã¿ã»ãœ ãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã䜿çšããŠãããŒã¿ãæ°žç¶åã ããŠããããšã確èªããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã Universal Test Client ã®èµ·åããã³å©çšæ¹æ³ã ãããŒã¿ã»ãœãŒã¹ã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã䜿çšããã ãŒã¿ããŒã¹æ¥ç¶æ¹æ³ããã³ããŒã¿ã»ã¢ã¯ã»ã¹æ¹æ³ã © 2010 IBM Corporation - 124 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ããžãã¹ã» ããžãã¹ã»ããžãã¯å±€ ããžãã¯å±€ã®äœæ 4 ãã®æŒç¿ã§ã¯ãMy Movie Web Application ã®ããžãã¹ã»ããžãã¯å±€ãäœæããŸããæŒç¿ã«ã¯ãããã 20 åãèŠããŸãã ããžãã¹ã»ããžãã¯å±€ã§ã¯ä»¥äžã®ãµãŒãã¹ãæäŸããŸãã ã» æ ç»äžèŠ§ã®ååŸãµãŒãã¹ ã» ãã£ãŒãããã¯ã®æçš¿ãµãŒãã¹ ã» æè¿æçš¿ããããã£ãŒãããã¯äžèŠ§ã®ååŸãµãŒãã¹ ã» æ ç»ã«å¯Ÿãããã£ãŒãããã¯ã»ãµããªãŒïŒãã£ãŒãããã¯äžèŠ§ãšè©äŸ¡ã®å¹³åç¹ïŒã®ååŸãµãŒãã¹ 4.1 EJB3.0 ãããžã§ã¯ãã® ãããžã§ã¯ãã®äœæ æŒç¿ 3.1 ã§ã®æé ãšåæ§ã«ãEJB ãããžã§ã¯ããäœæããŸãããªããJPA1.0 ãã¡ã»ããã®é©çšã¯å¿ èŠãã ãŸããã 1. ããŒã¹ãã¯ãã£ãããJava EEãã«åãæ¿ããŸãã 2. ã¡ãã¥ãŒã»ããŒãããããã¡ã€ã«ã -> ãæ°èŠã -> ãEJB ãããžã§ã¯ãããã¯ãªãã¯ããŸãã 3. ãæ°èŠ EJB ãããžã§ã¯ãããã€ã¢ãã°ãéããŸãã以äžã®èšå®ãè¡ããŸãã èšå®é ç® èšå®å€ ãããžã§ã¯ãå ãããžã§ã¯ãå MyMovieEJB ããã©ã«ãã» ããã©ã«ãã»ãã±ãŒã·ã§ã³ã® ãã±ãŒã·ã§ã³ã®äœ¿çš ãã§ãã¯ãå ¥ãã EJB ã¢ãžã¥ãŒã«ã» ã¢ãžã¥ãŒã«ã»ããŒãžã§ã³ 3.0 EAR ã«ãããžã§ã¯ãã ãããžã§ã¯ããè¿œå ãã§ãã¯ãå ¥ãã EAR ãããžã§ã¯ãå ãããžã§ã¯ãå MyMovieEAR © 2010 IBM Corporation - 125 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 4. ã次ãžããã¯ãªãã¯ããŸãã 5. ãJavaãããŒãžã§ããã©ã«ããåãå ¥ããã次ãžããã¯ãªãã¯ããŸãã 6. ãEJB ã¢ãžã¥ãŒã«ãããŒãžã§ã以äžã®èšå®ãè¡ãããçµäºããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ ã¯ã©ã€ã¢ã³ãã® ã¯ã©ã€ã¢ã³ãã®ã€ã³ã¿ãŒãã§ãŒã¹ãš ã€ã³ã¿ãŒãã§ãŒã¹ãšã¯ã©ã¹ã ã¯ã©ã¹ãä¿æãã ä¿æãã ãã§ãã¯ãå€ã EJB ã¯ã©ã€ã¢ã³ã JAR ã¢ãžã¥ãŒã«ã® ã¢ãžã¥ãŒã«ã®äœæ ejb-jar.xml ãããã€ã¡ã³ãèšè¿°å ãããã€ã¡ã³ãèšè¿°åã® èšè¿°åã®çæ © 2010 IBM Corporation ãã§ãã¯ãå€ã - 126 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒãããMyMovieEJB ãããžã§ã¯ããäœæãããŠããããšã 確èªããŸãã æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã EJB 3.0 察å¿ã® EJB ãããžã§ã¯ããäœæããŸããã © 2010 IBM Corporation - 127 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ããžãã¹ã» ããžãã¹ã»ã¢ãã«ã® ã¢ãã«ã®äœæ 4.2 ããžãã¹ã»ã¢ãã«ãFeedbackSummaryããäœæããŸããFeedbackSummary ã¯ãMovie ãš Movie ã«å¯Ÿã ã Feedback ã®ãªã¹ããä¿æãããŸããè©äŸ¡ã®å¹³åãç®åºããããžãã¹ã»ã¢ãã«ã§ãã ããžãã¹ã»ã¢ãã«ã®äœæã«ããããFeedbackSummary ãã Movie ã Feedback ãåç §ããå¿ èŠããã ãŸãããã®ããã«ããŸããMyMovieEJB ãããžã§ã¯ããããMyMovieJPA ãããžã§ã¯ããžã®åŸå±é¢ä¿ãèš å®ããŸãã 1. MyMovieEJB ãããžã§ã¯ããã MyMovieJPA ãããžã§ã¯ããåç §ãããŸããããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ ã¹ãããŒã©ãŒããã¥ãŒããããMyMovieEJBããå³ã¯ãªãã¯ãããããããã£ãŒããã¯ãªãã¯ããŸãã 2. ãããããã£ãŒããã€ã¢ãã°ãéããŸããããããã€ã¡ã³ãã»ã¢ã»ã³ããªãŒããã¯ãªãã¯ããŸãã 3. ããããã§ã¹ãé ç®ãã¿ããã¯ãªãã¯ããŸãã 4. ãè¿œå ããã¿ã³ãã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 128 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5. ããããã§ã¹ãé ç®ã®è¿œå ããã€ã¢ãã°ã衚瀺ãããŸãããMyMovieJPA.jarããéžæãããçµäºããã¯ãªã ã¯ããŸãã ãããã§ã¹ãé ç® ãããã§ã¹ãé ç®ã® é ç®ã®è¿œå ãããã§ã¹ãé ç®ã®è¿œå ã¯ãJ2EE ã¢ãžã¥ãŒã« (Web ã¢ãžã¥ãŒ ã«ãEJB ã¢ãžã¥ãŒã«ãJava ãŠãŒãã£ãªãã£ãŒã»ã¢ãžã¥ãŒã«) ã« ãããåç §é¢ä¿ãå®çŸ©ããããã«äœ¿çšããŸããWebSphere Application Server ãªã©ã® J2EE ä»æ§ã«åºã¥ãã¢ããªã±ãŒ ã·ã§ã³ã»ãµãŒããŒã¯ãã®æ å ±ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã»ã¢ãž ã¥ãŒã«ã®åäœã«å¿ èŠãªã©ã€ãã©ãªãŒãæ€çŽ¢ããŸãã Rational Application Developer ã§ã¯ããããã§ã¹ãé ç®ã® è¿œå ã§å®çŸ©ããããããžã§ã¯ãã®æ å ±ã䜿çšããŠãJava ãã« ãã»ãã¹ã«å«ãŸãããEAR ã©ã€ãã©ãªãŒãããWeb App ã©ã€ãã©ãª ãŒãã®å 容ãèªåçã«æ§æããŸãã 6. ãããããã£ãŒããã€ã¢ãã°ã«æ»ããŸãããé©çšããã¯ãªãã¯ã®äžããçµäºããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 129 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ãMyMovieEJBããå³ã¯ãªãã¯ãããæ°èŠã -> ãã¯ã©ã¹ã ãã¯ãªãã¯ããŸãã 8. ãæ°èŠ Java ã¯ã©ã¹ããã€ã¢ãã°ã衚瀺ãããŸãã以äžãèšå®ããæ®ãã¯ããã©ã«ããåãå ¥ãããçµäºã ãã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ ããã±ãŒãž com.ibm.example.websphere.ejb3sample.movie åå FeedbackSummary 9. äœæããã FeedbackSummary.java ã«ã以äžã®ã³ãŒããã³ããŒããŸãã package com.ibm.example.websphere.ejb3sample.movie; import java.util.List; © 2010 IBM Corporation - 130 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ import com.ibm.example.websphere.jpa1sample.movie.Feedback; import com.ibm.example.websphere.jpa1sample.movie.Movie; public class FeedbackSummary { private Movie movie; private List<Feedback> feedbacks; private float average; /** * @return movie */ public Movie getMovie() { return movie; } /** * @param movie the movie to set */ public void setMovie(Movie movie) { this.movie = movie; } /** * @return feedbacks */ public List<Feedback> getFeedbacks() { return feedbacks; } /** * @param feedbacks the feedbacks to set */ public void setFeedbacks(List<Feedback> feedbacks) { this.feedbacks = feedbacks; this.setAverage(feedbacks); } /** * @return average */ © 2010 IBM Corporation - 131 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ public float getAverage() { return average; } /** * @param average the average to set */ private void setAverage(List<Feedback> feedbacks){ if(feedbacks.size() == 0){ this.average = 0.0f; } else { float sum = 0.0f; for (Feedback rating : feedbacks) { sum += rating.getRating(); } this.average = sum/feedbacks.size(); } } } FeedbackSummary ã¯ã©ã¹ã¯ããã£ãŒãããã¯å¯Ÿè±¡ã§ãã Movie ãšãã£ãŒãããã¯ã®ãªã¹ããããã³ãè©äŸ¡ã® å¹³åç¹ãæã¡ãŸãããŸãããããã®å€ã«ã¢ã¯ã»ã¹ããããã®ã¢ã¯ã»ãµã»ã¡ãœãããæäŸããŠããŸãã æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã ããžãã¹ã»ã¢ãã« FeedbackSummary ãäœæããŸããã ããžãã¹ã»ã¢ãã«äœæã«ããããMyMovieEJB ãããžã§ã¯ãã ã MyMovieJPA ãããžã§ã¯ããåç §ãããããã«åŸå±é¢ä¿ã å®çŸ©ããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã ãããã§ã¹ãã»ãšãã£ã¿ãŒã䜿çšããåŸå±é¢ä¿ã®èšå®æ¹ æ³ã © 2010 IBM Corporation - 132 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 4.3 ã»ãã·ã§ã³ Bean ã®äœæ 1. ããããžã§ã¯ãã»ãšã¯ã¹ãããŒã©ãŒãããããMyMovieJPAããå³ã¯ãªãã¯ãããæ°èŠã -> ãã»ãã·ã§ã³ Bean (EJB 3.x)ããã¯ãªãã¯ããŸãã 2. ãEJB 3.x ã»ãã·ã§ã³ Bean ã®äœæããã€ã¢ãã°ãéããŸãã以äžãèšå®ããæ®ãã®èšå®é ç®ã¯ããã© ã«ãã®ãŸãŸã§ãã次ãžããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ Java ããã±ãŒãž com.ibm.example.websphere.ejb3sample.movie ã¯ã©ã¹å ã¯ã©ã¹å MovieService © 2010 IBM Corporation - 133 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3. 次ã®ã»ãã·ã§ã³ Bean ã®ç¹å®æ å ±ãå ¥åããããŒãžã§ã¯ããã®ãŸãŸãã次ãžããã¯ãªãã¯ããŸãã 4. ãå¯èŠåã®ããã¯ã©ã¹å³ãéžæãããŒãžã§ã¯ãããã©ã«ãã®ãŸãŸããçµäºããã¯ãªãã¯ããŸãã 5. äœæããã MovieService.java ã«ã以äžã®ã³ãŒããã³ããŒããŸãã package com.ibm.example.websphere.ejb3sample.movie; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; import com.ibm.example.websphere.jpa1sample.movie.Feedback; import com.ibm.example.websphere.jpa1sample.movie.FeedbackManagerLocal; import com.ibm.example.websphere.jpa1sample.movie.Movie; import com.ibm.example.websphere.jpa1sample.movie.MovieManagerLocal; /** * Session Bean implementation class MovieService */ @Stateless public class MovieService implements MovieServiceLocal { @EJB private MovieManagerLocal movieManager; @EJB private FeedbackManagerLocal feedbackManager; /** * Default constructor. */ public MovieService() { // TODO Auto-generated constructor stub } public List<Movie> getMovieList() { return movieManager.findAllMovies(); } © 2010 IBM Corporation - 134 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ public FeedbackSummary getFeedbackSummaryByMovieId(int movieId) { Movie movie = movieManager.findMovieById(movieId); List<Feedback> feedbacks = feedbackManager.findByMovieId(movieId); FeedbackSummary feedbackSummary = new FeedbackSummary(); feedbackSummary.setMovie(movie); feedbackSummary.setFeedbacks(feedbacks); return feedbackSummary; } public List<Feedback> getRecentFeedbackList() { return feedbackManager.findRecentFeedbacks(5); } public void addFeedback(int movieId, int rating, String comment) { Feedback feedback = new Feedback(); Movie movie = movieManager.findMovieById(movieId); feedback.setMovie(movie); feedback.setRating(rating); feedback.setComment(comment); try { feedbackManager.createFeedback(feedback); } catch (Exception e) { e.printStackTrace(); } } } MovieService ã¯ã©ã¹ã¯ä»¥äžã®ãµãŒãã¹ãæäŸããŸãã Movie ã®äžèŠ§ãååŸãã(getMovieList) Movie ã® id ã«è©²åœãã FeedbackSummary ãååŸãã(getFeedbackSummaryByMovieId) Movie ã«å¯ŸããŠæçš¿ãããææ°ã® Feedback ã®äžèŠ§ãååŸãã(getRecentFeedbackList) ãã£ãŒãããã¯ãç»é²ãã(addFeedback) © 2010 IBM Corporation - 135 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ @Stateless ã¢ãããŒã·ã§ã³ ã¯ã©ã¹å®çŸ©ã®åã«@Stateless ã¢ãããŒã·ã§ã³ãå ããããšã§ ãã®ã¯ã©ã¹ãã¹ããŒãã¬ã¹ã»ã»ãã·ã§ã³ Bean ã®å®è£ ã§ããããšã 宣èšããŸãã @EJB ã¢ãããŒã·ã§ã³ EJB ããžãã¹ã»ã€ã³ã¿ãŒãã§ãŒã¹ããŸãã¯ãããŒã ã»ã€ã³ã¿ãŒã ã§ãŒã¹ã®åã«@EJB ã¢ãããŒã·ã§ã³ãå ããããšã§ãäŸåæ§ã æ³šå ¥ããŸããWebSphere Application Server çãJ2EE ä» æ§ã«åºã¥ããã¢ããªã±ãŒã·ã§ã³ã»ãµãŒããŒäžã§ãã¢ãããŒã·ã§ ã³ãä»ããå€æ°ããäŸåå ã® EJB ãžã®åç §ã«åºã¥ããŠèª åçã«åæåãããŸãã 5. äœæããã¡ãœãããããžãã¹ã»ã€ã³ã¿ãŒãã§ãŒã¹ã«ããã¢ãŒãããŸãã ã 㚠㳠㿠㌠ã 㩠〠㺠㻠㚠㯠㹠ã ã ㌠㩠㌠ã ã 㥠㌠ã ã ã ã MyMovieEJB ã -> ã ejbModule ã -> ãcom.ibm.sample.websphere.ejb3sample.movieã -> ãMovieManagerããå³ã¯ãªãã¯ãããJava EE ããŒã«ã -> ãã¡ãœããã®ããã¢ãŒãããã¯ãªãã¯ããŸãã 6. ãã¡ãœããã®ããã¢ãŒãããã€ã¢ãã°ãéããŸãããã¹ãŠã®ã¡ãœãããéžæãããOKããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 136 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ããžãã¹ã»ã€ã³ã¿ãŒãã§ãŒã¹ MovieServiceLocal.java ãéããã¡ãœãããããã¢ãŒããããŠããããšã 確èªããŸãã ãããŸã§ã§ãMovieServiceLocal.java ã¯ä»¥äžã®ããã«ãªã£ãŠããã¯ãã§ãã package com.ibm.example.websphere.ejb3sample.movie; import com.ibm.example.websphere.jpa1sample.movie.Feedback; import com.ibm.example.websphere.jpa1sample.movie.Movie; import java.util.List; import javax.ejb.Local; @Local public interface MovieServiceLocal { List<Movie> getMovieList(); FeedbackSummary getFeedbackSummaryByMovieId(int movieId); © 2010 IBM Corporation - 137 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ List<Feedback> getRecentFeedbackList(); void addFeedback(int movieId, int rating, String comment); } æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã ããžãã¹ã»ãµãŒãã¹ãæäŸãã MovieService ãäœæããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã © 2010 IBM Corporation ã¹ããŒãã¬ã¹ã»ã»ãã·ã§ã³ Bean ã®äœææ¹æ³ã EJB3.0 ã¢ãããŒã·ã§ã³ã®äœ¿çšæ¹æ³ã - 138 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5 Web UI å±€ãšããžãã¹ã» ããžãã¹ã»ããžãã¯å±€ ããžãã¯å±€ã®æ¥ç¶ ãã®æŒç¿ã§ã¯ãMy Movie Web Application ã® WebUI å±€ã 4 ç« ã§äœæããããžãã¹ã»ããžãã¯å±€ãšæ¥ç¶ã ãŸããæŒç¿ã«ã¯ãããã 30 åãèŠããŸãã æ¥ç¶ããããã«ããžãã¹ã»ããžãã¯å±€ã® MovieService ã RPC ã¢ããã¿ãŒã»ãµãŒãã¹ãšããŠå ¬éããŸããã ãã«äŒŽãã1.3 ç¯ã§è¿°ã¹ãæ©èœæ¡åŒµã«å¯Ÿå¿ãã Web ããŒãžã®å€æŽãè¡ããŸãã RPC ã¢ããã¿ãŒã» ã¢ããã¿ãŒã»ãµãŒãã¹ JavaScript ãŸãã¯ã¯ã©ã€ã¢ã³ãã»ãµã€ãã»ã³ãŒããããµãŒããŒã» ãµã€ãã®ããžãã¯ãçŽæ¥èµ·åããããšããµããŒããããã¿ãŒã³ã Web Remote Procedure Calls ãšãããŸãã Web 2.0 Feature Pack for WebSphere ã«å«ãŸãã RPC ã¢ããã¿ãŒã¯ãéçºè ã AJAX ã¢ããªã±ãŒã·ã§ã³ãä»ã®åçŽ ãªã¯ã©ã€ã¢ã³ãã®ããã°ã©ãã³ã°ã»ã¹ã¿ã€ã«ãè£å®ããä»æ¹ã§ãã³ ãã³ãã»ããŒã¹ã®ãµãŒãã¹ãçŽ æ©ãç°¡åã«äœæããã®ã«åœ¹ç« ã€ããã«ãã¶ã€ã³ãããŠããŸããRPC ã¢ããã¿ãŒã¯æ±çšãµãŒ ãã¬ãããšããŠå®è£ ãããŠãããç»é²æžã¿ã® JavaBeans ã«å¯Ÿ ã㊠HTTP ã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããŸãã © 2010 IBM Corporation - 139 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5.1 RPC ã¢ããã¿ãŒã» ã¢ããã¿ãŒã»ãµãŒãã¹ã® ãµãŒãã¹ã®äœæ RPC ã¢ããã¿ãŒã»ãµãŒãã¹ãå©çšããããã«ãããµãŒããŒã»ãµã€ãã»ãã¯ãããžãŒããã¡ã»ãããæå¹ã«ã㟠ãã 1. ãWebãããŒã¹ãã¯ãã£ãã«åãæ¿ããŸãã 2. ããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒãããããMyMovieWEBããå³ã¯ãªãã¯ãããããããã£ãŒããã¯ãªã ã¯ããŸãã 3. ãããããã£ãŒããã€ã¢ãã°ãéããŸãã 4. ããããžã§ã¯ãã»ãã¡ã»ããããã¯ãªãã¯ããŸãã 5. 以äžãèšå®ã®äžããé©çšããã¯ãªãã¯ããŸãã ãããžã§ã¯ãã» ãããžã§ã¯ãã»ãã¡ã»ãã ããŒãžã§ã³ ãµãŒããŒã» ãµãŒããŒã»ãµã€ãã» ãµã€ãã»ãã¯ãããžãŒ 1.0.0.1 6. ãOKããã¯ãªãã¯ããŸãã ãµãŒããŒã» ãµã€ ãã» ãã¯ãããžãŒã» ãã¡ã»ããã䜿çšå¯ èœã«ã ãããšã«ãããRPCAdapter.jar ãã ã³ JSON4J.jar ãšãã£ãã©ã€ãã©ãªãŒãåç §å¯èœã«ãªããŸãã 次ã«ãRPC ã¢ããã¿ãŒã»ãµãŒãã¹ãäœæããŸãã © 2010 IBM Corporation - 140 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ShowMovies.html ãéããŸããããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒã§ããMyMovieWEBã > ãWebContentããå±éããShowMovies.html ãããã«ã»ã¯ãªãã¯ããŸãããããšããããŒãžã»ã㌠ã¿ããã¥ãŒã䜿çšå¯èœã«ãªããŸãã 8. ãããŒãžã»ããŒã¿ããã¥ãŒããããRPC ã¢ããã¿ãŒã»ãµãŒãã¹ããå³ã¯ãªãã¯ãããæ°èŠã -> ãRPC ã¢ãã ã¿ãŒã»ãµãŒãã¹ããã¯ãªãã¯ããŸãã 9. ãRPC ã¢ããã¿ãŒã»ãµãŒãã¹ã®å ¬éããã€ã¢ãã°ãéããŸãããEJB ã»ãã·ã§ã³ Beanãã«ãã§ãã¯ãå ¥ ãããåç §ããã¯ãªãã¯ããŸãã 10. ãå ¬éãã EJB ã®éžæããã€ã¢ãã°ã衚瀺ãããŸãããåç §ã®è¿œå ããã¯ãªãã¯ããŸãã 11. ãEJB åç §ã®è¿œå ããã€ã¢ãã°ã衚瀺ãããŸãã以äžãéžæãããçµäºããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ ã¯ãŒã¯ã¹ããŒã¹ ã¯ãŒã¯ã¹ããŒã¹ã«ãã ã¹ããŒã¹ã«ãããšã³ã¿ãŒãã©ã€ ã«ãããšã³ã¿ãŒãã©ã€ ãã§ãã¯ãå ¥ãã 㺠Bean ãšã³ã¿ãŒãã©ã€ãº Bean ã MyMovieEAR ã -> ã MyMovieEJB ã -> ãMovieServiceã © 2010 IBM Corporation - 141 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 12. ãå ¬éãã EJB ã®éžæããã€ã¢ãã°ã«æ»ããŸããEJB åç §åãejb/MovieServiceããéžæãããOKãã ã¯ãªãã¯ããŸãã 13. ãRPC ã¢ããã¿ãŒã»ãµãŒãã¹ã®å ¬éããã€ã¢ãã°ã«æ»ããŸãã以äžãèšå®ããæ®ãã¯ããã©ã«ããåã å ¥ããã次ãžããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ EJB ã㌠3.0 ãžã§ã³ ã¡ãœãã ãã¹ãŠã«ãã§ãã¯ãå ¥ãã ïŒ addFeedback(int, int, String), getFeedbackSummaryByMovieId(int), getMovieList(), getRecentFeedbackList() ïŒ 14. ãã¡ãœããã®æ§æãããŒãžã«ç§»ããŸããaddFeedback ã¡ãœãããéžæããHTTP ã¡ãœããããPOSTãã«å€ © 2010 IBM Corporation - 142 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ æŽããŸãã 15. æ®ãã®ã¡ãœãã㯠HTTP ã¡ãœããããGETãã®ãŸãŸã§ããçµäºããã¯ãªãã¯ããŸãã 16. ãããŒãžã»ããŒã¿ããã¥ãŒã« RPC ã¢ããã¿ãŒã»ãµãŒãã¹ãè¿œå ãããããšã確èªããŸãã RPC ã¢ããã¿ãŒã» ã¢ããã¿ãŒã»ãµãŒãã¹ã®ãã® ãµãŒãã¹ã®ãã®ä» ã®ãã®ä»ã®å ¬éæ¹æ³ å ¬éæ¹æ³ RPC ã¢ããã¿ãŒã»ãµãŒãã¹ã¯ãEJB ã POJO ã® Java ãã¡ã€ã«ãããå ¬éã§ã ãŸããå ¬éãè¡ãã«ã¯ãããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒãããEJB ã Java ãã¡ã€ã«ãå³ã¯ãªãã¯ããããµãŒãã¹ã -> ãRPC ã¢ããã¿ãŒã»ãµãŒãã¹ã® å ¬éããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 143 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã ããžãã¹ã»ãµãŒãã¹ãMovieServiceãã RPC ã¢ããã¿ãŒã»ãµãŒ ãã¹ãšããŠå ¬éããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã ãããŒãžã»ããŒã¿ããã¥ãŒã䜿çšãã RPC ã¢ããã¿ãŒã»ãµ ãŒãã¹ã®å ¬éæ¹æ³ã © 2010 IBM Corporation RPC ã¢ããã¿ãŒã»ãµãŒãã¹ã®ãã®ä»ã®å ¬éæ¹æ³ã - 144 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ Web ããŒãžã® ããŒãžã®ä¿®æ£ 5.2 ãã®æŒç¿ã§ã¯ã1.3 ç¯ã§è¿°ã¹ãæ©èœæ¡åŒµã«å¯Ÿå¿ãã Web ããŒãžã®å€æŽãè¡ããŸãã 以äžã®å€æŽãè¡ããŸãã ã» ShowMovies.html ããŒãæã®æ¯ãèã ã» feedbackDialog ã® submit æã®æ¯ãèã ã» DataGrid ãžã® onMouseOver æã®æ¯ãèã 5.2.1 ShowMovies ããŒãæ ããŒãæã®æ¯ãèãã®å€æŽ ãã®å€æŽ ShowMovies.html ããŒãæã®æ¯ãèããšããŠã以äžãå€æŽããŸãã â DataGrid ã®ããŒã¿ããMovieList.json ãã RPC ã¢ããã¿ãŒã»ãµãŒãã¹ãgetMovieListãåŒã³åºããž åãæ¿ãã â¡ ãHistory of Ratings and Commentsãã»ã¯ã·ã§ã³ã®ãã£ãŒãããã¯ã»ããŒã¿ãããªã³ã¡ã¢ãªãŒã§ã®ç®¡ç ãã RPC ã¢ããã¿ãŒã»ãµãŒãã¹ãgetRecentFeedbackListããžåãæ¿ãã ãŸããâ ã® MovieList.json ãã RPC ã¢ããã¿ãŒã»ãµãŒãã¹åŒã³åºããžåãæ¿ããè¡ããŸãã 1. ShowMovies.html ãéããŸãã 2. dojo.addOnLoad ã®å«ãŸãã<script>ã¿ã°ãç¹å®ããŸãã 3. dojo.addOnLoad å ã«ãã dojo.xhrGet é¢æ°ãç¹å®ããŸãã 4. dojo.xhrGet ãããã¯å ã«ããå€æ° url ã RPC ã¢ããã¿ãŒã»ãµãŒãã¹ã® URL ãžå€æŽããŸãããŸãã url ã®å€ã空ã«ããŸãã <script type="text/javascript"> dojo.addOnLoad(function() { dojo.xhrGet({ url : "", 5. ã ã ㌠ãžã» ã ㌠㿠ã ã 㥠㌠ãã ã ã RPC 㢠ã ã 㿠㌠㻠ãµãŒ ã ã¹ ã -> ã MovieServiceLocal ã -> ãgetMovieList()ã ãå³ã¯ãªãã¯ãããã¯ãªããããŒããžã®ãµãŒãã¹ URL ã®ã³ããŒããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 145 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 6. å€æ° url ã®å€ã«ããµãŒãã¹ URL ãããŒã¹ãããŸãã url : "/MyMovieWEB/RPCAdapter/httprpc/MovieServiceLocal/getMovieList", 7. load ãããã¯å ã«ãã newData ã® identifier å±æ§ãã以äžã®ããã« âtitleâ ãã âidâ ã«å€æŽããŸãã var newData = { identifier : "id", items : response.result }; 次ã«ãâ¡ã®ãHistory of Ratings and Commentsãã»ã¯ã·ã§ã³ã®ãã£ãŒãããã¯ã»ããŒã¿ã RPC ã¢ããã¿ ãŒã»ãµãŒãã¹ããååŸããããã«å€æŽããŸãã 8. 以äžã®ã³ãŒãããdojo.xhrGet é¢æ°ã® load ãããã¯å ã®æçµè¡ã«è¿œå ããŸãã dijit.byId("RateAndComment").showRecentFeedbacks(); 9. RateAndComment ãŠã£ãžã§ããã« showRecentFeedbacks ã¡ãœãããè¿œå ããŸãã以äžã®ã³ãŒãã showFeedbackTools ã¡ãœããã®åŸã«è¿œå ããŸãã showRecentFeedbacks : function() { var grid = dijit.byId("gridId"); dojo.xhrGet({ url : "/MyMovieWEB/RPCAdapter/httprpc/MovieServiceLocal/getRecentFeedbackList", handleAs : "json", load : function(response, ioArgs) { © 2010 IBM Corporation - 146 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ dojo.empty("feedbacklist"); for ( var i = 0; i < response.result.length; i++) { var rating = response.result[i]; var movieTitle = rating.movie.title; dojo.create("<li>", {innerHTML : "<b>Title:</b>" + movieTitle + "<b>Rating:</b>" + rating.ratingValue + "<br> <b>Comments:</b> " + rating.comment}, "feedbacklist"); } }, error : function(response, ioArgs) { alert("An error occurred while invoking the service."); } }); }, © 2010 IBM Corporation - 147 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5.2.2 feedbackDialog ã® submit æã®æ¯ãèãã®å€æŽ ãã®å€æŽ feedbackDialog ã®è©äŸ¡ãã³ã¡ã³ãã submit ãããæã®æ¯ãèããšããŠãRateAndComment.js ã®ä»¥äžã å€æŽããŸãã ⢠feedbackDialog ãã submit ãããéã«åŒã³åºããã saveFeedback ã¡ãœããå ã§ããã£ãŒããã ã¯ã»ããŒã¿ããªã³ã¡ã¢ãªãŒã§ã®ç®¡çãã RPC ã¢ããã¿ãŒã»ãµãŒãã¹ãaddFeedbackããžåãæ¿ãã addFeedback ã¯ããã©ã¡ãŒã¿ãŒãšããŠãMovie ã® idãè©äŸ¡ãããã³ãã³ã¡ã³ããå¿ èŠã§ããããã«äŒŽãã ShowMovies.html ããã³ RateAndComment.js ã以äžã®ããã«å€æŽããŸãã ⣠DataGrid ãã feedbackDialog ã衚瀺ããéã«åŒã³åºããã showFeedbackDialog ã¡ãœããå ã§ã Movie ã® id ã RateAndComment ãŠã£ãžã§ããã® showFeedbackTools ã¡ãœãããžåŒãæž¡ã †RateAndComment ãŠã£ãžã§ããã® showFeedbackTools 㯠Movie ã® id ãåãåããmovieId ãã ããã£ãŒã«æ ŒçŽãã ããããã£ãŒã«æ ŒçŽããããšã«ãã£ãŠãRateAndComment.js ã® saveFeedback ã¡ãœãã㯠movieId ãã ããã£ãŒãåç §ããaddFeedback ã¡ãœãããžãã©ã¡ãŒã¿ãŒãšããŠæž¡ãããšãã§ããŸãã ã§ã¯ãâ¢ã® saveFeedback ã¡ãœããã®å 容ãå€æŽããŸãã 1. ãŸããmovieId ãè¿œå ããŸãã以äžã®ã³ãŒãã widgetsInTemplate ããããã£ãŒã®åŸã«è¿œå ããŸãã movieId : "", 2. saveFeedback ã¡ãœããã以äžã®ã³ãŒãã§çœ®ãæããŸãã saveFeedback : function() { var userRating = this.getRating(); var userComment = this.getComment(); var deferred = dojo.xhrPost({ url : "/MyMovieWEB/RPCAdapter/httprpc/MovieServiceLocal/addFeedback", content : {movieId : this.movieId, rating : userRating, comment : userComment}, handleAs : "json", load : function(response, ioArgs) { © 2010 IBM Corporation - 148 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ dijit.byId("RateAndComment").showRecentFeedbacks(); }, error : function(response, ioArgs) { alert("An error occurred while invoking the service."); } }); this.dialogbox.hide(); this.setComment(""); this.setRating(0); }, dojo.xhrPost RPC ã¢ããã¿ãŒã»ãµãŒãã¹ã§ãã addFeedback 㯠Post ã¡ãœ ããã§ããPost ã¡ãœããã®åŒã³åºãã«ã¯ãdojo.xhrPost ãäœ¿çš ããŸãã 次ã«ãâ£ã®å€æŽãè¡ããŸããå€æŽã®å¯Ÿè±¡ã¯ãShowMovies.html ã® showFeedbackDialog ã¡ãœãã㧠ãã 3. showFeedbackDialog ã¡ãœããã以äžã®å 容ã§çœ®ãæããŸãã function showFeedbackDialog(e) { //IF A Click to rate!! cell was clicked if (e.cellIndex == 4) { var grid = dijit.byId("gridId"); var movieId = grid.store.getValue(grid.getItem(e.rowIndex), "id"); var movieTitle = grid.store.getValue(grid.getItem(e.rowIndex), "title"); var rcwidget = dijit.byId("RateAndComment"); rcwidget.showFeedbackTools(movieId, movieTitle); } } © 2010 IBM Corporation - 149 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 次ã«ãâ€ã®å€æŽãè¡ããŸããå€æŽã®å¯Ÿè±¡ã¯ãRateAndComment.js ã® showFeedbackTools ã¡ãœãã㧠ãã 4. showFeedbackTools ã¡ãœããã以äžã®å 容ã§çœ®ãæããŸãã showFeedbackTools : function(movieId,movieTitle) { this.movieId = movieId; this.movieTitle = movieTitle; this.dialogbox.show(); }, © 2010 IBM Corporation - 150 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 5.2.3 DataGrid DataGrid ãžã®ãªã³ããŠã¹ã» ãªã³ããŠã¹ã»ãªãŒããŒæ ãªãŒããŒæã®æ¯ãèãã®å€æŽ ãã®å€æŽ 㞠㮠㪠㳠ã ㊠㹠㻠㪠㌠ã ㌠æ ã« ã RPC 㢠ã ã 㿠㌠㻠㵠㌠ã ã¹ ãgetFeedbackSummaryByMovidIdããã Feedback ããŒã¿ãååŸããããã«ã以äžã®å€æŽãè¡ã㟠ãã ⥠ShowMovies.html ã® showComments ã¡ãœããå ã§ãshow ãšããé¢æ°ãå®çŸ©ããŸãããã®é¢æ°ã¯ã FeedbackSummary ããŒã¿ïŒè©äŸ¡ã®å¹³åç¹ãšãè©äŸ¡ããã³ã³ã¡ã³ãã®äžèŠ§ïŒã衚瀺ãã html ã³ãŒãã çæããŸããäžæ¹ã§ãFeedbackSummary ããŒã¿ãååŸããã®ã¯ RateAndComments.js ã«å§è²ã 㟠ã ã ã ã® ã ã ã Movie ã® id ãš show 㡠㜠ã ã ã RateAndComments ã® showFeedbackSummaryByMovieId ãšããæ°èŠã¡ãœããã«æž¡ããŸãã ⊠RateAndComment ãŠã£ãžã§ããã« showFeedbackSummaryByMovieId ã¡ãœãããå®çŸ©ããŸãããã® ã¡ãœããã¯ãåãåã£ã MovieId ããã©ã¡ãŒã¿ãŒãšããFeedbackSummary ããŒã¿ã RPC ã¢ããã¿ ãŒã»ãµãŒãã¹ããååŸãããã®çµæã show ã¡ãœãããžæž¡ãã衚瀺ããŸãã ãŸããâ¥ã®å€æŽãè¡ããŸããå€æŽã®å¯Ÿè±¡ã¯ãshowMovies.html ã® showComments ã§ãã 1. showMovies.html ã® showComments ã¡ãœããã以äžã®ã³ãŒãã§çœ®ãæããŸãã function showComments(e) { var grid = dijit.byId("gridId"); var movieId = grid.store.getValue(grid.getItem(e.rowIndex), "id"); var show = function(feedbackSummary) { if (feedbackSummary.feedbacks.length == 0) { dijit.showTooltip("No comments made!", e.cellNode); } else { var list = "<b>Average:</b>" + feedbackSummary.average + "<ul>"; for (var i = 0; i < feedbackSummary.feedbacks.length; i++) { var feedback = feedbackSummary.feedbacks[i]; list += "<li> rating : " + feedback.rating + "<br/>"; list += " comment : " + feedback.comment + "</li>"; } list += "</ul>"; © 2010 IBM Corporation - 151 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ dijit.showTooltip(list, e.cellNode); } }; dijit.byId("RateAndComment") .showFeedbackSummaryByMovieId(movieid, show); }; 次ã«ãâŠã®è¿œå ãè¡ããŸããè¿œå ã®å¯Ÿè±¡ã¯ãRatingAndComments.js ã§ãã 2. 以äžã®ã³ãŒãããshowRecentFeedback ã¡ãœããã®åŸã«è¿œå ããŸãã showFeedbackSummaryByMovieId : function(movieId,showFunction){ dojo.xhrGet({ url : "/MyMovieWEB/RPCAdapter/httprpc/MovieServiceLocal/getFeedbackSummaryByMovieId", handleAs : "json", content : {movieId : movieId}, load : function(response, ioArgs) { var feedbackSummary = response.result; showFunction(feedbackSummary); }, error : function(response, ioArgs) { alert("An error occurred while invoking the service."); } }); }, 3. ShowMovies.html ããã³ RateAndComments.js ãä¿åããŸãã ãããŸã§ã§ãShowMovies.html ããã³ RateAndCommnet.js ã¯ä»¥äžã®ããã«ãªã£ãŠããã¯ãã§ãã showMovies.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <link rel="stylesheet" type="text/css" href="dojo/dijit/themes/dijit.css"> <link rel="stylesheet" type="text/css" © 2010 IBM Corporation - 152 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ href="dojo/dijit/themes/tundra/tundra.css"> <title>ShowMovies</title> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"> <script type="text/javascript" djconfig="isDebug: false, parseOnLoad: true" src="dojo/dojo/dojo.js"></script> <script type="text/javascript"> dojo.require("dijit.layout.BorderContainer"); dojo.require("dijit.layout.ContentPane"); dojo.require("dojox.grid.DataGrid"); dojo.require("dojo.data.ItemFileReadStore"); dojo.require("myDojo.RateAndComment"); dojo.require("dijit.Tooltip"); </script> <style type="text/css"> @import "dojo/dojox/form/resources/Rating.css"; </style> <script type="text/javascript"> dojo.addOnLoad(function() { dojo.xhrGet({ url : "/MyMovieWEB/RPCAdapter/httprpc/MovieServiceLocal/getMovieList", handleAs : "json", load : function(response, ioArgs) { var newData = { identifier : "id", items : response.result }; var dataStore = new dojo.data.ItemFileReadStore({ data : newData, id : "dataStoreId" }); var grid = dijit.byId("gridId"); grid.setStore(dataStore); © 2010 IBM Corporation - 153 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ dijit.byId("RateAndComment").showRecentFeedbacks(); }, error : function(response, ioArgs) { alert("An error occurred while invoking the service."); } }); }); </script> <script type="text/javascript"> function showComments(e) { var grid = dijit.byId("gridId"); var movieId = grid.store.getValue(grid.getItem(e.rowIndex), "id"); var show = function(feedbackSummary) { if (feedbackSummary.feedbacks.length == 0) { dijit.showTooltip("No comments made!", e.cellNode); } else { var list = "<b>Average:</b>" + feedbackSummary.average + "<ul>"; for (var i = 0; i < feedbackSummary.feedbacks.length; i++) { var feedback = feedbackSummary.feedbacks[i]; list += "<li> rating : " + feedback.rating + "<br/>"; list += " comment : " + feedback.comment + "</li>"; } list += "</ul>"; dijit.showTooltip(list, e.cellNode); } }; dijit.byId("RateAndComment") © 2010 IBM Corporation - 154 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ .showFeedbackSummaryByMovieId(movieid, show); }; function hideComments(e){ dijit.hideTooltip(e.cellNode); } function showFeedbackDialog(e) { //IF A Click to rate!! cell was clicked if (e.cellIndex == 4) { var grid = dijit.byId("gridId"); var movieId = grid.store.getValue(grid.getItem(e.rowIndex), "id"); var movieTitle = grid.store.getValue(grid.getItem(e.rowIndex), "title"); var rcwidget = dijit.byId("RateAndComment"); rcwidget.showFeedbackTools(movieId, movieTitle); } } function getContent(){ return "Click to rate!"; } </script> <link rel="stylesheet" type="text/css" title="Style" href="dojo/dojox/grid/resources/Grid.css"> <link rel="stylesheet" type="text/css" title="Style" href="dojo/dojox/grid/resources/tundraGrid.css"> </head> <body class="tundra"> <div dojoType="dijit.layout.BorderContainer" id="BorderContainer" design="headline" style="height: 100%; width: 100%"> <div dojoType="dijit.layout.ContentPane" region="top" style="text-align: © 2010 IBM Corporation - 155 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ center">My Movie Web Application!</div> <div dojoType="dijit.layout.ContentPane" id="" title="" region="center"> <table id="gridId" dojotype="dojox.grid.DataGrid" autowidth="true" onRowMouseOut="hideComments" onRowMouseOver="showComments" onCellClick="showFeedbackDialog" rowselector="20px"> <thead> <tr> <th field="title">ã¿ã€ãã«</th> <th field="director">ç£ç£</th> <th field="actor">圹è </th> <th field="description">説æ</th> <th get="getContent">Rate and Comment!</th> </tr> </thead> </table> </div> <div dojoType="dijit.layout.ContentPane" id="" title="" region="right"> <div dojoType="myDojo.RateAndComment" id="RateAndComment"></div> </div> </div> </body> </html> RateAndComment.js // dojo.provide allows pages use all types declared in this resource dojo.provide("myDojo.RateAndComment"); //dojo.require the necessary dijit hierarchy dojo.require("dijit._Widget"); dojo.require("dijit._Templated"); dojo.require("dojox.form.Rating"); dojo.require("dojo.data.ItemFileWriteStore"); dojo.require("dijit.form.Textarea"); dojo.require("dijit.Dialog"); dojo.require("dijit.form.Button"); © 2010 IBM Corporation - 156 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ dojo.require("dijit.TitlePane"); dojo.declare("myDojo.RateAndComment", [ dijit._Widget, dijit._Templated ], { // Path to the template templateString : dojo.cache("myDojo", "templates/RateAndComment.html"), // Set this to true if your widget contains other widgets widgetsInTemplate : true, movieId : "", movieTitle : "", rcStore : new dojo.data.ItemFileWriteStore({ data : { items : [] } }), // Override this method to perform custom behavior during dijit // construction. // Common operations for constructor: // 1) Initialize non-primitive types (i.e. objects and arrays) // 2) Add additional properties needed by succeeding lifecycle methods constructor : function() { }, getComment : function() { return this.comments.attr("value"); }, getRating : function() { return this.rating.attr("value"); }, © 2010 IBM Corporation - 157 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ setComment : function(value) { this.comments.attr("value", value); }, setRating : function(value) { this.rating.attr("value", value); }, showFeedbackTools : function(movieId,movieTitle) { this.movieId = movieId; this.movieTitle = movieTitle; this.dialogbox.show(); }, showRecentFeedbacks : function() { var grid = dijit.byId("gridId"); dojo.xhrGet({ url : "/MyMovieWEB/RPCAdapter/httprpc/MovieServiceLocal/getRecentFeedbackList", handleAs : "json", load : function(response, ioArgs) { dojo.empty("feedbacklist"); for ( var i = 0; i < response.result.length; i++) { var feedback = response.result[i]; var movieTitle = feedback.movie.title; dojo.create("<li>", {innerHTML : "<b>Title:</b>" + movieTitle + "<b>Rating:</b>" + feedback.rating + "<br> <b>Comments:</b> " + feedback.comment}, "feedbacklist"); } }, © 2010 IBM Corporation - 158 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ error : function(response, ioArgs) { alert("An error occurred while invoking the service."); } }); }, showFeedbackSummaryByMovieId : function(movieId,showFunction){ dojo.xhrGet({ url : "/MyMovieWEB/RPCAdapter/httprpc/MovieServiceLocal/getFeedbackSummaryByMovieId", handleAs : "json", content : {movieId : movieId}, load : function(response, ioArgs) { var feedbackSummary = response.result; showFunction(feedbackSummary); }, error : function(response, ioArgs) { alert("An error occurred while invoking the service."); } }); }, saveFeedback : function() { var userRating = this.getRating(); var userComment = this.getComment(); var deferred = dojo.xhrPost({ url : "/MyMovieWEB/RPCAdapter/httprpc/MovieServiceLocal/addFeedback", content : {movieId : this.movieId, rating : userRating, comment : userComment}, handleAs : "json", load : function(response, ioArgs) { © 2010 IBM Corporation - 159 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ dijit.byId("RateAndComment").showRecentFeedbacks(); }, error : function(response, ioArgs) { alert("An error occurred while invoking the service."); } }); this.dialogbox.hide(); this.setComment(""); this.setRating(0); }, getCommentsByMovieTitle : function(movieTitle) { var comments = []; var store = this.rcStore; this.rcStore.fetch({ query : { title : movieTitle }, onComplete : function(items, request) { dojo.forEach(items, function(item) { comments.push(store.getValue(item, "comment")); }); } }); return comments; }, // When this method is called, all variables inherited from superclasses are // 'mixed in'. // Common operations for postMixInProperties // 1) Modify or assign values for widget property variables defined in the // template HTML file © 2010 IBM Corporation - 160 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ postMixInProperties : function() { } }); æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã RPC ã¢ããã¿ãŒã»ãµãŒãã¹ã䜿çšããŠãWebUI å±€ãšããžãã¹ã» ããžãã¯å±€ãæ¥ç¶ããŸããããŸããæ¥ç¶ã«äŒŽããWeb ããŒãžã å€æŽããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã © 2010 IBM Corporation RPC ã¢ããã¿ãŒã»ãµãŒãã¹ã®åŒã³åºãæ¹ã - 161 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 6 ã¢ããªã±ãŒã·ã§ã³ã® ã¢ããªã±ãŒã·ã§ã³ã®ãããã°ã» ãããã°ã»ãã¹ã 5 ç« ãŸã§ã§ My Movie Web Application ãå®æããŸããã ãã ããã¢ããªã±ãŒã·ã§ã³ã«ã¯ãã°ãå«ãŸããŠãããããããŸããã ãã®æŒç¿ã§ã¯ãFirebug ãå©çšããŠã¢ããªã±ãŒã·ã§ã³ã®ãããã°ãè¡ããŸãããã®åŸãã³ãŒãã»ã«ãã¬ããž ãå©çšããŠããããã¹ãã»ã·ããªãªã«ããããœãŒã¹ã»ã³ãŒãã®ç¶²çŸ æ§ã調ã¹ãŸãã æŒç¿ã«ã¯ãããã 30 åãèŠããŸãã 6.1 Firebug çµ±åã«ãã çµ±åã«ãããããã° ã«ãããããã° 1. Web ãã©ãŠã¶ãŒã Firebug ã«èšå®ããŸããã¡ãã¥ãŒã»ããŒãããããŠã£ã³ããŠã -> ãWeb ãã©ãŠã¶ãŒã -> ãFirefox with FirebugããéžæããŸãã 泚æïŒ æ³šæïŒ Firefox ãååšããªãããããã¯åæã®ããŒãžã§ã³(3.5 以é)ãæºãããŠããªãå Žå㧠ã¯ãFirefox with Firebug ã衚瀺ãããªãå ŽåããããŸãã ãã®å Žåãæåã§èšå®ãè¡ãå¿ èŠããããŸããæé ã¯ä»¥äžã§ãã 7. ã¡ãã¥ãŒã»ããŒãããããŠã£ã³ããŠã -> ãèšå®ããã¯ãªãã¯ããŸãã 8. ãäžè¬ã -> ãWeb ãã©ãŠã¶ãŒããéžæããŸãã 9. ãå€éšãã©ãŠã¶ãŒã䜿çšããéžæãããæ°èŠããã¯ãªãã¯ããŸãã 10. ãå€éš Web ãã©ãŠã¶ãŒã®ç·šéããã€ã¢ãã°ã衚瀺ãããŸãã以äžãèšå®ã® © 2010 IBM Corporation - 162 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ äžããOKããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ åå Firefox with Firebug ãã±ãŒã·ã§ ïŒFirefox ã®ã€ã³ã¹ããŒã«ã»ãã£ã¬ã¯ããªãŒïŒ¥firefox.exe ã³ ãã©ã¡ãŒã¿ -fireclipse ㌠-no-remote -profile ${webtools.debug.profile} 11. ãé©çšããã¯ãªãã¯ã®äžããOKããã¯ãªãã¯ããŸãã 2. ShowMovies.html ã å® è¡ ã 㟠ã ã ã 㚠㳠㿠㌠ã 㩠〠㺠㻠㚠㯠㹠ã ã ㌠㩠㌠ã ã 㥠㌠ã ã ShowMovies.html ãå³ã¯ãªãã¯ãããå®è¡ã -> ããµãŒããŒã§å®è¡ããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 163 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 3. ããµãŒããŒã§å®è¡ããã€ã¢ãã°ãéããŸãã以äžãèšå®ã®äžãã次ãžããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ ãµãŒããŒéžæ ãµãŒããŒéžæã® éžæã®æ¹æ³ æ¢åã®ãµãŒããŒãéžæ 䜿çšãã 䜿çšãããµãŒã㌠ãããµãŒããŒã® ãµãŒããŒã®éžæ localhost ã® WebSphere Application Server v7.0 4. ãè¿œå ããã³åé€ãããŒãžã§ã¯ãMyMovieEAR ããæ§ææžã¿ãæ¬ãžè¿œå ã®äžããçµäºããã¯ãªãã¯ã㟠ãã 5. Firebug ãèµ·åããŸãã © 2010 IBM Corporation - 164 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 6. DataGrid å ã«ã«ãŒãœã«ãä¹ããŠãFeedbackSummary ã衚瀺ãããããšããŸãã 7. ãšã©ãŒã»ãã€ã¢ãã°ã衚瀺ãããŸããããOKããã¯ãªãã¯ããŸãã 8. Firebug ã®å³äžãèŠããšãã1 件ã®ãšã©ãŒããšè¡šç€ºãããŠããŸãããã®ãªã³ã¯ãã¯ãªãã¯ããŸãã 9. Firebug ã®ã³ã³ãœãŒã«ãéããŸããæåŸã®è¡ã«ãmovieid is not definedããšããã¡ãã»ãŒãžã衚瀺ã ããŠããŸãã © 2010 IBM Corporation - 165 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ Firebug äžã§ã®ãšã©ãŒ ã§ã®ãšã©ãŒ Firebug äžã§ã®ãšã©ãŒã¯ãRAD ã®ãåé¡ããã¥ãŒãšåæãåã ããŸãã 10. RAD ã«æ»ããŸãã 11. ãåé¡ããã¥ãŒã§ããmovieid is not definedããšç€ºãããŠããããšã確èªã§ããŸãããã®è¡ãããã«ã»ã¯ ãªãã¯ããŸãã © 2010 IBM Corporation - 166 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 12. åé¡ãçºçããŠããè¡ãžãããã²ãŒããããŸãã 13. å€æ° movieId ã宣èšããŠããã®ã«ãRateAndComment ã® showFeedbackSummaryByMovieId ãžã®ãã©ã¡ãŒã¿ãŒã movidid ãšãªã£ãŠããããšã確èªããŸãã © 2010 IBM Corporation - 167 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 14. movieid ã movieId ã«å€æŽããä¿åããŸãããããšããåé¡ããã¥ãŒãããã³ããšãã£ã¿ãŒäžã®åœè©²ãš ã©ãŒãç¡ããªããŸãã 15. Firebug ã«æ»ããããŒãžã®åèªã¿èŸŒã¿ãããŸãã © 2010 IBM Corporation - 168 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 16. å床 dataGrid ã«ã«ãŒãœã«ãä¹ãããš FeedbackSummary ããŒã¿ã衚瀺ãããããšã確èªããŸãã 17. Movie ããŒã¿ã®ç»é²ãæžãã ãããµãŒããŒãåæ¢ãããŸããããµãŒããŒããã¥ãŒããããlocalhost ã® WebSphere Application Server v7.0ããéžæããããµãŒããŒãåæ¢ãã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã ãã§ãã¯ãã€ã³ã My Movie Web Application ã®ãããã°ãè¡ããŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã © 2010 IBM Corporation Firefox with Firebug ã®èµ·åæ¹æ³ Firebug ãš RAD ã®åæ - 169 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ã³ãŒãã» ã³ãŒãã»ã«ãã¬ããžã«ãã ã«ãã¬ããžã«ããç¶²çŸ æ§ ã«ããç¶²çŸ æ§ã® ç¶²çŸ æ§ã®ç¢ºèª 6.2 ãã®æŒç¿ã§ã¯ãMy Movie Web Application ã®ã³ãŒãããã¹ãããã«ãã¬ããžïŒç¶²çŸ æ§ïŒã®èŠ³ç¹ãããã¹ãã ååã§ããŠãããã確èªããŸãã察象ã³ãŒãã¯ããžãã¹ã»ããžãã¯å±€ã§ãã MyMovieEJB ãšããŸãããã¹ã ã®åæ ŒåºæºãšããŠã以äžã®ãã¹ãã»ã±ãŒã¹ããã¹ãŠå®è¡ããããã±ãŒãžããœãŒã¹ã»ãã¡ã€ã«ãã¿ã€ããã¡ãœãã ãã¹ãŠã«ãããŠã80%ã®è¡ãã«ããŒãããŠããããšãšããŸãã ãã¹ãã»ã±ãŒã¹ ã» ã¢ããªã±ãŒã·ã§ã³èµ·åæã«ãæ ç»ã®äžèŠ§ã衚瀺ããã ã» ã¢ããªã±ãŒã·ã§ã³èµ·åæã«ãæè¿æçš¿ãããæ ç»ã®ãã£ãŒãããã¯ã衚瀺ããã ã» æ ç»ã«ã«ãŒãœã«ãä¹ãããšããã£ãŒãããã¯äžèŠ§ãšè©äŸ¡ã®å¹³åç¹ã衚瀺ããã ã» æ ç»ã«å¯Ÿãããã£ãŒãããã¯ãç»é²ãã ãŸãããã¹ãã®çµæã¯ã¬ããŒããšããŠåºåããMy Movie Web Application ã®éçºäŸé Œè ã§ããã客æ§ã« æäŸããŸãã © 2010 IBM Corporation - 170 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 1. MyMovieEJB ã«å¯ŸããŠãã³ãŒãã»ã«ãã¬ããžã䜿çšå¯èœã«ããŸããããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã© ãŒãããããMyMovieEJBããå³ã¯ãªãã¯ãããããããã£ãŒããã¯ãªãã¯ããŸãã 2. ãããããã£ãŒããã€ã¢ãã°ã衚瀺ãããŸãããã³ãŒãã»ã«ãã¬ããžããã¯ãªãã¯ããŸãã 3. ãã³ãŒãã»ã«ãã¬ããžã䜿çšå¯èœã«ãããã«ãã§ãã¯ãå ¥ãããé©çšããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 171 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 蚱容ã§ãã 蚱容ã§ããã³ãŒã ã§ããã³ãŒãã» ã³ãŒãã»ã«ãã¬ããžã» ã«ãã¬ããžã»ã¬ãã«ã® ã¬ãã«ã®èšå® ããã±ãŒãžããœãŒã¹ã»ãã¡ã€ã«ãã¿ã€ãïŒJava ã¯ã©ã¹ïŒãã¡ãœãã㫠察ããŠãã©ã®åäœã§ãã©ã®çšåºŠã®ã«ãã¬ããžãªã蚱容ã§ããã ãèšå®ããŸããåäœã«ã¯ãè¡ããããã¯ãã¡ãœãããã¿ã€ãããã ãŸãã ããšãã°ãããã±ãŒãžã»ã«ãã¬ããžã§ãã¿ã€ã 100%ãšããå Žåã ããã±ãŒãžã«å«ãŸããå š Java ã¯ã©ã¹ã䜿çšãããªããšãçµæãš ããŠèš±å®¹ã§ããªããšå€æã§ããŸãã 4. ãã³ãŒãã»ã«ãã¬ããžã䜿çšäžå¯ããã€ã¢ãã°ã衚瀺ãããŸããã³ãŒãã»ã«ãã¬ããžçµ±èšãçæããã«ã¯ã ãµãŒããŒã®åå§åãå¿ èŠã§ãããOKããã¯ãªãã¯ããŸãã 5. ãOKããã¯ãªãã¯ããŸãã 6. ShowMovies.html ã å® è¡ ã 㟠ã ã ã 㚠㳠㿠㌠ã 㩠〠㺠㻠㚠㯠㹠ã ã ㌠㩠㌠ã ã 㥠㌠ã ã ShowMovies.html ãå³ã¯ãªãã¯ãããå®è¡ã -> ããµãŒããŒã§å®è¡ããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 172 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 7. ããµãŒããŒã§å®è¡ããã€ã¢ãã°ãéããŸãã以äžãèšå®ã®äžãã次ãžããã¯ãªãã¯ããŸãã èšå®é ç® èšå®å€ ãµãŒããŒéžæ ãµãŒããŒéžæã® éžæã®æ¹æ³ æ¢åã®ãµãŒããŒãéžæ 䜿çšãã 䜿çšãããµãŒã㌠ãããµãŒããŒã® ãµãŒããŒã®éžæ localhost ã® WebSphere Application Server v7.0 8. ãè¿œå ããã³åé€ãããŒãžã§ã¯ãMyMovieEAR ããæ§ææžã¿ãæ¬ãžè¿œå ã®äžããçµäºããã¯ãªãã¯ã㟠ãã 9. My Movie Web Application ãèµ·åããŸãããã®æç¹ã§ã以äžã®ãã¹ãã»ã±ãŒã¹ãå®è¡ãããŸããã ã» ã¢ããªã±ãŒã·ã§ã³èµ·åæã«ãæ ç»ã®äžèŠ§ã衚瀺ããã ã» ã¢ããªã±ãŒã·ã§ã³èµ·åæã«ãæè¿æçš¿ãããæ ç»ã®ãã£ãŒãããã¯ã衚瀺ããã 10. æ ç»æ å ±ã®äžã«ã«ãŒãœã«ãä¹ããŠããã£ãŒãããã¯äžèŠ§ãšè©äŸ¡ã®å¹³åç¹ã確èªããŸãããã®æç¹ã§ã 以äžã®ãã¹ãã»ã±ãŒã¹ãå®è¡ãããŸããã ã» æ ç»ã«ã«ãŒãœã«ãä¹ãããšããã£ãŒãããã¯äžèŠ§ãšè©äŸ¡ã®å¹³åç¹ã衚瀺ããã © 2010 IBM Corporation - 173 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 11. æ ç»ã«ãã£ãŒãããã¯ãç»é²ããŸãããClick to rate!ããã¯ãªãã¯ãããRate and Comment!ããã€ã¢ãã° ãããã£ãŒãããã¯ãæçš¿ããŸãããã®æç¹ã§ããã¹ãŠã®ãã¹ãã»ã±ãŒã¹ãå®è¡ãããŸããã 12. RAD ã«æ»ã£ãŠãã«ãã¬ããžã確èªããŸããããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒããã ãMyMovieEJBã -> ãejbModuleã é äžããã¹ãŠå±éããŸããããã±ãŒãžããœãŒã¹ã»ãã¡ã€ã«ãã¿ã€ã ïŒJava ã¯ã©ã¹ïŒãã¡ãœããåã®æšªã«ã³ãŒãã»ã«ãã¬ããžã»ã€ã³ãã£ã±ãŒã¿ãŒã衚瀺ãããäœ%ã«ããŒããã ããããããŸãã © 2010 IBM Corporation - 174 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ã³ãŒãã» ã³ãŒãã»ã«ãã¬ããžã» ã«ãã¬ããžã»ã€ã³ãã£ã±ãŒã¿ãŒ ã³ãŒãã»ã«ãã¬ããžã»ã€ã³ãã£ã±ãŒã¿ãŒã¯ãã¿ã€ããã¡ãœããããããã¯ãè¡åäœã§è¡šç€ºå¯èœã§ãã èšå®ããã«ã¯ãã¡ãã¥ãŒã»ããŒã®ããŠã£ã³ããŠã -> ãèšå®ã -> ãã³ãŒãã»ã«ãã¬ããžãããããã³ ãŒãã»ã«ãã¬ããžã»ã€ã³ãã£ã±ãŒã¿ãŒãã«ãŠè¡ããŸãã äžå³ã®äŸã§ã¯ããã¹ãŠã®ã³ãŒãã»ã«ãã¬ããžã»ã€ã³ãã£ã±ãŒã¿ãŒã«ãã§ãã¯ãå ¥ããŠããŸããã ããšãããšã³ã¿ãŒãã©ã€ãºã»ãšã¯ã¹ãããŒã©ãŒããã¥ãŒäžã§ã¯ããã§ãã¯ãå ¥ãããã¹ãŠã®ã«ã㬠ããžã衚瀺ãããŸãã © 2010 IBM Corporation - 175 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 13. MovieService.java ã® addFeedback ã¡ãœãããèµ€ã衚瀺ãããŠããŸããããã¯ã«ããŒãããå²åã 蚱容ã§ããªãå€ã§ããããšã瀺ããŠããŸãã 14. ã©ã®è¡ãã«ããŒãããªãã£ãã®ãã確èªããŸããaddFeedback ãããã«ã»ã¯ãªãã¯ããŸãã 15. MovieService.java ãéããaddFeedback ã¡ãœããã«ããã²ãŒããããŸãã ãšãã£ã¿ãŒå·ŠåŽã«ç·ãšèµ€ã®ã€ã³ãã£ã±ãŒã¿ãŒããããŸããç·ã¯ã«ããŒãããè¡ããèµ€ã¯ã«ããŒãã㪠ãã£ãè¡ãè¡šããŸãããããããã«ããŒãããªãã£ãã®ã¯ catch ãããã¯ã§ããããšãããããŸãããã ã«ããããã¹ãã®åæ Œåºæºãæºããã«ã¯ãäŸå€åŠçã®ãã¹ããããªããŠã¯ãªããªãããšãããããŸãã © 2010 IBM Corporation - 176 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ããã§ã¯ããã®çµæãã¬ããŒããšããŠåºåããã客æ§ã«æäŸããŸãã 16. ã¡ãã¥ãŒã»ããŒãããå®è¡ã -> ãã³ãŒãã»ã«ãã¬ããžã -> ãã¬ããŒãã®çæããã¯ãªãã¯ããŸãã 17. ãã³ãŒãã»ã«ãã¬ããžã»ã¬ããŒãããã€ã¢ãã°ã衚瀺ãããŸãã以äžãèšå®ã®äžããå®è¡ããã¯ãªãã¯ã㟠ãã èšå®é ç® èšå®å€ èµ·åã® èµ·åã®éžæ MyMovieEJB ã¬ããŒãã® ã¬ããŒãã®ãã©ãŒãããããã³ ãã©ãŒãããããã³ãã±ãŒã·ã§ã³ ããã³ãã±ãŒã·ã§ã³ HTML ã¬ããŒã ã¬ããŒãã® ã¬ããŒãã®è¡šç€ºãš 衚瀺ãšä¿å ãã§ãã¯ãå ¥ãã ã¬ããŒãã® ã¬ããŒãã®ä¿åå C:¥code_coverage_report¥html © 2010 IBM Corporation - 177 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 18. ã«ãã¬ããžã»ã¬ããŒããçæããããã©ãŠã¶ãŒäžã«è¡šç€ºãããŸãã © 2010 IBM Corporation - 178 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 19. å·Šäžã»ã¯ã·ã§ã³ãå šããã±ãŒãžãããããcom.ibm.example.websphere.ejb3sample.movieããã¯ãªã ã¯ããŸãã 20. ããã±ãŒãžã«å«ãŸãããœãŒã¹ã»ãã¡ã€ã«ã®ã«ãã¬ããžã»ããŒã»ã³ãã衚瀺ãããŸãã 21. å³ã»ã¯ã·ã§ã³ãã³ãŒãã»ã«ãã¬ããžã»ã¬ããŒããããããœãŒã¹ã»ãã¡ã€ã«ãMovieServiceããã¯ãªãã¯ããŸãã © 2010 IBM Corporation - 179 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ 22. ã¯ã©ã¹ãšã¡ãœããã®ã«ãã¬ããžã»ããŒã»ã³ãã衚瀺ãããŸãã © 2010 IBM Corporation - 180 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ ã¬ããŒãã® ã¬ããŒãã®çæ ã¯ãŒã¯ãã³ãã» ã¯ãŒã¯ãã³ãã»ã¬ããŒãã» ã¬ããŒãã»ãã©ãŒããã ãã³ãŒãã»ã«ãã¬ããžã»ã¬ããŒãããã€ã¢ãã°ã®ãã¬ããŒãã®ãã©ãŒãããããã³ãã±ãŒã·ã§ ã³ããéžæãããšãRAD ã¯ãŒã¯ãã³ãäžã§ã¬ããŒãã確èªããããšãã§ããŸãã 確èªã§ããå 容㯠HTML ãšå€ãããŸãããããããã¯ãŒã¯ãã³ãã»ã¬ããŒãã®ãã¬ã㌠ããã¿ãã§ã¯ããœãŒã¹ã»ãã¡ã€ã«ã Java ã¯ã©ã¹ãã¡ãœãããããã«ã»ã¯ãªãã¯ãããšãè©²åœ ç®æã«ããã²ãŒãããããšãã£ã¿ãŒäžã§ã©ã®è¡ãã«ããŒãããŠãããã確èªããã® ã«äŸ¿å©ã§ãã ã¯ãŒã¯ãã³ãã»ã¬ããŒãã®ãã¬ããŒããã¿ã ã¯ãŒã¯ãã³ãã»ã¬ããŒãã®ãèŠçŽãã¿ã © 2010 IBM Corporation - 181 - IBM Rational Application Developer V8.0 æ°æ©èœãã³ãºãªã³è³æ æŒç¿ã® æŒç¿ã®ãã§ãã¯ãã€ã³ã My Movie Web Application ã«ã«ãã¬ããžã®å質æ€èšŒãè¡ã ãŸããã ãŸãšã ãã®æŒç¿ã§ã¯ä»¥äžã®ããšãåŠç¿ããŸããã © 2010 IBM Corporation ã³ãŒãã»ã«ãã¬ããžã®èšå®æ¹æ³ ã«ãã¬ããžã»ã¬ããŒãã®ç¢ºèªæ¹æ³ - 182 -