Seam 㯠Java EE 5 ç¨ã®ã¢ããªã±ã¼ã·ã§ã³ãã¬ã¼ã ã¯ã¼ã¯ã§ãã æ¬¡ã®ãããªç念ã«åºã¥ãã¦ãã¾ãã
JSF 㨠EJB 3.0 ã® 2 ã¤ã¯ Java EE 5 ã®æè¯ã®æ°æ©è½ã§ãã EJB3 ã¯ãµã¼ãã¼å´ã®æ©è½ãæ°¸ç¶ãã¸ãã¯ã«å¯¾ããã¾ã£ããæ°ããã³ã³ãã¼ãã³ãã¢ãã«ã¨ãªãã¾ãã 䏿¹ã JSF ã¯ãã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã«å¯¾ãã¦åªããã³ã³ãã¼ãã³ãã¢ãã«ã¨ãªãã¾ãã æ®å¿µãªããã ã©ã¡ãã®ã³ã³ãã¼ãã³ãã¢ãã«ãåç¬ã§ã¯ã³ã³ãã¥ã¼ã¿ã®åé¡ã®ãã¹ã¦ã解決ãããã¨ã¯ã§ãã¾ããã å®éã«ã JSF 㨠EJB3 ã¯ä½µç¨ããå ´åã«æã广çã«åä½ãã¾ãã ããããªããã Java EE 5 ã®ä»æ§ã¯ãã® 2 ã¤ã®ã³ã³ãã¼ãã³ãã¢ãã«ãçµ±åããæ¨æºã®æ¹æ³ãæä¾ãã¦ãã¾ããã 幸ãã 両ã¢ãã«ã®éçºè ã¯ãã®ç¶æ³ãäºæãã ä»ã®ã½ãªã¥ã¼ã·ã§ã³ã®æ¡å¼µãçµ±åãå¯è½ã«ããæ¨æºã®æ¡å¼µãã¤ã³ããæä¾ãã¦ããã¦ãã¾ããã
Seam 㯠JSF 㨠EJB3 ã®ã³ã³ãã¼ãã³ãã¢ãã«ãçµ±ä¸ãã æ¥çå¤ã¨ãã¦ã®ã³ã¼ããåãé¤ãéçºè ããã¸ãã¹é¢é£ã®åé¡ã«ããéç¹ããããããã«ãã¦ããã¦ãã¾ãã
Seam ã¯ã ICEfaces ããã³ Ajax4JSF ã¨ãã JSF ãã¼ã¹ã®ãªã¼ãã³ã½ã¼ã¹ãª AJAX ã½ãªã¥ã¼ã·ã§ã³ããµãã¼ããã¦ãã¾ãã ãããã®ã½ãªã¥ã¼ã·ã§ã³ã«ããã JavaScript ã³ã¼ããè¨è¿°ãããã¨ãªãã¦ã¼ã¶ã¼ã¤ã³ã¿ã¼ãã§ã¼ã¹ã« AJAX æ©è½ã追å ãããã¨ãã§ããããã«ãªãã¾ãã
ã¾ãã Seam 㯠EJB3 ã³ã³ãã¼ãã³ãã«å¯¾ãã¦çµã¿è¾¼ã¿ã® JavaScript ãªã¢ã¼ãã£ã³ã°å±¤ãæä¾ãã¾ãã ããã«ããã ä¸éã®ã¢ã¯ã·ã§ã³å±¤ãå¿ è¦ã¨ãããã¨ãªãã AJAX ã¯ã©ã¤ã¢ã³ãã¯ç°¡åã«ãµã¼ãå´ã®ã³ã³ãã¼ãã³ããå¼ã³åºã㦠JMS topic ããµãã¹ã¯ã©ã¤ããããã¨ãã§ããããã«ãªãã¾ãã
ãããã®æ¹æ³ããã¾ãåä½ããªãå ´åã ããã¯å¤ãã®ä¸¦ååæã®å¾®ç´°ãª AJAX ãªã¯ã¨ã¹ãããµã¼ãã¼å´ã§å®å ¨ä¸ã¤å¹ççã«å¦çããã Seam ã®ãã«ãã¤ã³ä¸¦è¡å¦çç¶æ 管çã§ã¯ãªãã¯ãã§ãã
ãªãã·ã§ã³ã§ã Seam 㯠jBPM ã使ã£ã¦ééçãªãã¸ãã¹ããã»ã¹ç®¡çãçµ±åãã¾ãã jBPM 㨠Seam ã使ã£ãè¤éãªã¯ã¼ã¯ããã¼ã®å®è£ ããããã«å®¹æã§ãããä¿¡ããããªãã»ã©ã§ãã
Seam ã¯ã¾ãã åãææ®µã§ãã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã®å¯¾è©±ããã¼ã®å®ç¾©ããå¯è½ã«ãã¾ãã
JSF ã¯ãã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã«å¯¾ãã¦ä¿¡ããããªãã»ã©è±å¯ãªã¤ãã³ãã¢ãã«ãæä¾ãã¦ãã¾ãã Seam ã¯å ¨ãåãã¤ãã³ãå¦çã¡ã«ããºã ã使ã£ã¦ jBPM ã®ãã¸ãã¹ããã»ã¹é¢é£ã®ã¤ãã³ããå ¬éãã Seam åä¸ã³ã³ãã¼ãã³ãã¢ãã«ã«å¯¾ãã¦ä¸è²«ããã¤ãã³ãã¢ãã«ãæä¾ãããã¨ã§ãã®ã¢ãã«ã®æ©è½ãæ¡å¼µãã¦ãã¾ãã
Seam ã¯ä¸è²«ããã³ã³ãã¼ãã³ãã¢ãã«ãæä¾ãã¾ãã é·æã®ãã¸ãã¹ããã»ã¹ããåä¸ã® WEB ãªã¯ã¨ã¹ãã«è³ãã¾ã§ã ãããã®ã³ã³ããã¹ãã«é¢é£ä»ããããç¶æ ã§ã Seam ã³ã³ãã¼ãã³ããã¹ãã¼ããã«ã¨ãããã¨ãå¯è½ã§ãã
Seam ã§ã¯ã ãã¬ã¼ã³ãã¼ã·ã§ã³å±¤ã®ã³ã³ãã¼ãã³ãã¨ãã¸ãã¹ãã¸ãã¯ã®ã³ã³ãã¼ãã³ãã®åºå¥ã¯ããã¾ããã EJB ã§ããã°ããã©ãã§ãã Seam ã¢ããªã±ã¼ã·ã§ã³ãæ¸ããã¨ãå¯è½ã§ãã EJB ã¯ç´°ããªèª¿æ´ãã§ããã 使ã«è¦å´ããå°åãã®ãããªããªãã¸ã§ã¯ãã ã¨èãã¦ãã人ã«ã¨ã£ã¦ã¯é©ãã¨ãã¦æ ãããããã¾ããã ãããã éçºè ã®è¦³ç¹ããè¦ã㨠EJB 3.0 ã¯ãã® EJB ã¨ãã¦ã®æ§è³ªãå®å ¨ã«å¤åããã¦ãã¾ãã EJB ã¯å¾®ç´°ãªèª¿æ´ãå¯è½ãªãªãã¸ã§ã¯ãã«ãªãã ã¢ããã¼ã·ã§ã³ä»ã Java Bean ã¨åæ§ã«ç°¡åã«ãªãã¾ããã Seam ã§ãã JSF ã®ã¢ã¯ã·ã§ã³ãªã¹ãã¨ãã¦ã»ãã·ã§ã³ Bean ã®ä½¿ç¨ãæ¨å¥¨ãã¦ãã¾ãã
åãªã Java EE ããã㯠J2EE ã³ã³ãã¼ãã³ãã¨ã¯ç°ãªãã Seam ã³ã³ãã¼ãã³ã㯠WEB ãªã¯ã¨ã¹ãã«é¢é£ããç¶æ ã¨ã ãã©ã³ã¶ã¯ã·ã§ã³çãªãªã½ã¼ã¹ã«ç¶æãããç¶æ ã¨ã«åæã«ã¢ã¯ã»ã¹ãããã¨ãå¯è½ã§ã (ã¡ã½ãããã©ã¡ã¼ã¿ã使ã£ã¦æä½æ¥ã§ WEB ãªã¯ã¨ã¹ãã®ç¶æ ã伿ãããå¿ è¦ãªãï¼ã æãªãã¿ã® J2EE ãã©ãããã©ã¼ã ã«ããå¿ è¦ã¨ãããã¢ããªã±ã¼ã·ã§ã³ã®é層åã¯è¯ããã¨ã ã¨å対ãããæ¹ãããã£ãããããããã¾ããã Seam ã使ã£ã¦åçã®é層ã¢ã¼ããã¯ãã£ã使ãã¦ãæ§ãã¾ããã éãã¯ã ããªããã ç¬èªã®ã¢ããªã±ã¼ã·ã§ã³ãè¨è¨ãã ã©ã®å±¤ãã©ã®ããã«ç¸äºçã«åãããæ±ºå®ããã¨ãããã¨ã§ãã
EJB 2.x. 以éã®å®£è¨çãã©ã³ã¶ã¯ã·ã§ã³ç®¡çãã J2EE ã®å®£è¨çã»ãã¥ãªãã£ã®æ¦å¿µã«ã¯æ¢ã«æ £ãã¦ãã¦ããã¾ãã EJB 3.0 ã¯å®£è¨çæ°¸ç¶ã³ã³ããã¹ã管çãå°å ¥ãã¦ãã¾ãã ã³ã³ããã¹ããçµäºããã¨ãã«å¿ è¦ãªãã¹ã¦ã®ã¯ãªã¼ã³ã¢ãããè¡ããããã¨ã¯ä¿è¨¼ããã䏿¹ã ç¹å®ã®ã³ã³ããã¹ãã¨é¢é£ããç¶æ ã管çããä¸ã§åºç¯å²ã«æ¸¡ãåé¡ãããã¾ãã æ¬¡ã« 3 ã¤ã®ä¾ã示ãã¾ãã Seam ã¯ã宣è¨çç¶æ 管çã®æ¦å¿µãããã«åºç¯å²ã«åãå ¥ãã ãããã¢ããªã±ã¼ã·ã§ã³ã®ç¶æ ã«ãå¿ç¨ãã¦ãã¾ãã 徿¥ã J2EE ã®ã¢ããªã±ã¼ã·ã§ã³ã¯å¿ ãã¨è¨ã£ã¦ããã»ã©ãµã¼ãã¬ããã»ãã·ã§ã³ã¨ãªã¯ã¨ã¹ã屿§ãåå¾ãè¨å®ãããã¨ã«ããæåã§ç¶æ 管çãå®è£ ãã¦ãã¾ãã ç¶æ 管çãè¡ãããã®ãã®ææ®µã¯ã ã¢ããªã±ã¼ã·ã§ã³ãã»ãã·ã§ã³å±æ§ã®ã¯ãªã¼ã³ã¢ããã«å¤±æããå ´åããã«ãã¦ã£ã³ãã¦ã¢ããªã±ã¼ã·ã§ã³ã§ç°ãªãã¯ã¼ã¯ããã¼ã«é¢é£ä»ããããã»ãã·ã§ã³ãã¼ã¿å士ãè¡çªããå ´åã«å¤ãã®ãã°ãã¡ã¢ãªãªã¼ã¯ãçãæºã¨ãªãã¾ãã Seam ã«ã¯ã»ã¼å®å ¨ã«ãã®ã¯ã©ã¹ã®ãã°ãè§£æ¶ããå¯è½æ§ãåãã£ã¦ãã¾ãã
宣è¨çãªã¢ããªã±ã¼ã·ã§ã³ã®ç¶æ 管ç㯠Seam ã§å®ç¾©ãããã³ã³ããã¹ãã¢ãã«ã®è±å¯ãã«ããå®ç¾ããã¾ãã Seam ã¯ã ãµã¼ãã¬ãã仿§ — requestã sessionã application — ã§å®ç¾©ãããã³ã³ããã¹ãã¢ãã«ã«ã ãã¸ãã¹ãã¸ãã¯çã«ããææç¾©ã§ãã 2 ã¤ã®æ°ããªã³ã³ããã¹ã — 対話ã¨ãã¸ãã¹ããã»ã¹ — ãå ãããã¨ã§æ©è½æ¡å¼µãã¾ããã
å¶å¾¡ã®å転ãããã¯ä¾åæ§ã®ã¤ã³ã¸ã§ã¯ã·ã§ã³ã®æ¦å¿µã¯ JSF ã EJB3 ã ãã§ãªãã å¤ãã®ããããã軽éã³ã³ãããã«ãåå¨ãã¾ãã ãããã®ã³ã³ããã®ã»ã¨ãã©ãã¹ãã¼ãã¬ã¹ãµã¼ãã¹ãå®è£ ããã³ã³ãã¼ãã³ãã®ã¤ã³ã¸ã§ã¯ã·ã§ã³ãéè¦ãã¦ãã¾ãã ã¹ãã¼ããã«ãªã³ã³ãã¼ãã³ãã®ã¤ã³ã¸ã§ã¯ã·ã§ã³ããµãã¼ããããå ´åã§ãã£ã¦ã (JSF ã®ããã«)ã ã¹ãã¼ããã«ãªã³ã³ãã¼ãã³ãã®ã¹ã³ã¼ãã¯ååãªæè»æ§ãæã£ã¦å®ç¾©ã§ããªãããã ç¾å®çã«ã¯ã¢ããªã±ã¼ã·ã§ã³ã®ç¶æ ãæ±ãã«ã¯å½¹ã«ç«ã¡ã¾ ããã
ãã¤ã¸ã§ã¯ã·ã§ã³ã¯ã åç (dynamic)ã ã³ã³ããã¹ãä¾å (contextual)ã åæ¹åç (bidirectional) ã¨ããç¹ã«ãã㦠IoC ã¨ã¯ç°ãªãã¾ãã ã³ã³ããã¹ãä¸ã®å¤æ° (ç¾å¨ã®ã¹ã¬ããã¨çµã³ã¤ããå種ã³ã³ããã¹ãä¸ã®åå) ãã³ã³ãã¼ãã³ãã®å±æ§ã®å¥åã¨ãã¦å¯¾å¿ãããæ©æ§ã¨èãããã¨ãã§ãã¾ãã ãã¤ã¸ã§ã¯ã·ã§ã³ã¯ã³ã³ããã«ããã¹ãã¼ããã«ãªã³ã³ãã¼ãã³ãã®èªåã¢ã»ã³ããªãå¯è½ã«ãã¾ãã ã³ã³ãã¼ãã³ãã®å±æ§ãè¨å®ããã ãã§ã å®å ¨ãã¤å®¹æã«ã³ã³ããã¹ã夿°ã®å¤ãæä½ãããã¨ããå¯è½ã«ãªãã¾ãã
ãªãã·ã§ã³ã§ã Seam ã¢ããªã±ã¼ã·ã§ã³ã¯ã¯ã¼ã¯ã¹ãã¼ã¹ç®¡çæ©è½ãå©ç¨ãããã¨ãå¯è½ã§ã ã¦ã¼ã¶ã¯ 1 ã¤ã®ãã©ã¦ã¶ã¦ã£ã³ãã¦ã®ä¸ã§ç°ãªã対話(ã¯ã¼ã¯ã¹ãã¼ã¹)éãèªç±ã«è¡ãæ¥ãããã¨ãã§ãã¾ãã Seam ã¯æ£ç¢ºãªãã«ãã¦ã£ã³ãã¦æä½ã ãã§ãªãã ã·ã³ã°ã«ã¦ã£ã³ãã¦å ã§ãã«ãã¦ã£ã³ãã¦ã®ãããªæä½ãè¡ããã¨ãã§ãã¾ãã
EJB 3.0 ã¯ã 宣è¨çãªå½¢å¼ã§ã³ã³ããã«æ å ±ãæä¾ããæãç°¡åãªæ¹æ³ã¨ãã¦ã¢ããã¼ã·ã§ã³ã¨ãä¾å¤ã«ããè¨å®ããæ¡ç¨ãã¦ãã¾ãã æ®å¿µãªããã JSF ã¯ã¾ã åé·ãª XML è¨å®ãã¡ã¤ã«ã«å¤§ããä¾åãã¦ãã¾ãã Seam ã¯ã EJB 3.0 ã«ãã£ã¦æä¾ãããã¢ããã¼ã·ã§ã³ã«å®£è¨çç¶æ 管çããã³å®£è¨çã³ã³ããã¹ãåºåç¨ã®ã¢ããã¼ã·ã§ã³ä¸å¼ãæä¾ãããã¨ã«ããæ©è½æ¡å¼µãã¦ãã¾ãã ããã«ããã ãã£ã¨ããã JSF 管çã® Bean 宣è¨ãåãé¤ãã å¿ è¦ã¨ããã XML ãæ¸å°ãããæ¬å½ã« XML ã§å®ç¾©ãã¹ãæ å ± (JSF ããã²ã¼ã·ã§ã³è¦å) ã ãã«ãªãããã«ãã¾ãã
POJO ã§ãã Seam ã³ã³ãã¼ãã³ãã¯ããããã¦ããããã¹ããå¯è½ã§ãã ãããã è¤éãªã¢ããªã±ã¼ã·ã§ã³ã®å ´åã¯ã¦ããããã¹ãã ãã§ã¯ä¸ååã«ãªãã¾ãã 以åããã çµ±åãã¹ã㯠Java ã® WEB ã¢ããªã±ã¼ã·ã§ã³ã«ã¨ã£ã¦ç ©éã§ãã£ãããªä½æ¥ã¨ãªã£ã¦ãã¾ããã ãã®ããã Seam ã¯ãã¬ã¼ã ã¯ã¼ã¯ã®ä¸æ ¸æ©è½ã¨ã㦠Seam ã¢ããªã±ã¼ã·ã§ã³ã®ãã¹ãå®¹ææ§ãæä¾ãã¦ãã¾ãã ã¦ã¼ã¶ã¼ã¨ã®ããã¨ãå ¨ä½ãåçãã ãã¥ã¼ (JSP ã Facelets ãã¼ã¸) 以å¤ã®ã·ã¹ãã ã®å ¨ã³ã³ãã¼ãã³ããä½åããã JUnit ãã¹ãã TestNG ãã¹ãã容æã«è¨è¿°ãããã¨ãã§ãã¾ãã Seam ãã£ã¦èªåçã« EJB ã³ã³ãã¼ãã³ãã JBoss ã®çµã¿è¾¼ã¿å¯è½ EJB3 ã³ã³ããã«ãããã¤ããã IDE ã®å é¨ã§ã ãããã®ãã¹ããç´æ¥å®è¡ãããã¨ãã§ãã¾ãã
Seam ã¯ãEJB 3.0 ããµãã¼ãããã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼ãªããããã§ãåä½ãã¾ãã æ°ãã JBoss çµã¿è¾¼ã¿å¯è½ EJB3 ã³ã³ãããå©ç¨ãããã¨ã§ã Tomcat ã®ãããªãµã¼ãã¬ããã³ã³ããã J2EE ã¢ããªã±ã¼ã·ã§ã³ãµã¼ãã¼ã§ã Seam ã使ç¨ãããã¨ãã§ãã¾ãã
ãã ãã ãã¹ã¦ã®äººã EJB 3.0 ã«ç§»è¡æºåãæ´ã£ã¦ããããã§ã¯ãªããã¨ãèªèãã¦ãã¾ãã ãã®ããã ãã°ããã®éã ãã¬ã¼ã³ãã¼ã·ã§ã³ã« JSFãæ°¸ç¶ã« Hibernate (ã¾ãã¯ãã¬ã¼ã³ JDBC)ã ã¢ããªã±ã¼ã·ã§ã³ãã¸ãã¯ã« JavaBeans ã使ç¨ããã¢ããªã±ã¼ã·ã§ã³ã«å¯¾ãã¦ã¯ Seam ããã¬ã¼ã ã¯ã¼ã¯ã¨ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ãã ããã§ã EJB 3.0 ã¸ã®ç§»è¡æºåãæ´ã£ãæç¹ã§ã®ä»¥éãç°¡åã«ãªãã¾ãã
Java ã§è¤éãªã¦ã§ãã¢ããªã±ã¼ã·ã§ã³ãè¨è¿°ããå ´åã Seamã JSFã EJB3 ã®çµã¿åãããæãã·ã³ãã«ãªææ®µã¨ãªããã¨ããããã¾ãã å¿ è¦ã¨ããã³ã¼ããä¿¡ããããªãã»ã©å°ãªããªãã¾ãã