¥Ñ¥Ã¥±¡¼¥¸¥ó¥°

¢¢J2EE¥Ñ¥Ã¥±¡¼¥¸¥ó¥°
J2EE»ÅÍͤ˽àµò¤·¤¿
¡Ö¤É¤ó¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥µ¡¼¥Ð¤Ç¤âÄÌÍѤ¹¤ë¥Ý¡¼¥¿¥Ö¥ëEAR¡×
¤òºîÀ®¤¹¤ë¤³¤È¡£

¢¢J2EE¥Ñ¥Ã¥±¡¼¥¸¥ó¥° 3Â縶§
¥ë¡¼¥ë­¡
¡¡EAR¤Ï¡¢ÆÈΩ¡¦¼«¸Ê´°·ë¤µ¤»¤ë¤³¤È¡£
¡¡¢¨EAR°Ê³°¤Î¥é¥¤¥Ö¥é¥ê»²¾È¤äÍ×AP¥µ¡¼¥ÐÆÃÍ­¤Î¥¯¥é¥¹¥Ñ¥¹½¤Àµ¤Ï¤´Ë¡ÅÙ¡£
¡¡¢¨[¾¤Î¥·¥¹¥Æ¥à¤Î¥ê¥â¡¼¥È¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹]·Ï¤Î°Í¸´Ø·¸¤Î»Äα¤ÏOK¡£

¥ë¡¼¥ë­¢
¡¡¥¯¥é¥¹¥í¡¼¥À¡¦¥Ç¥ê¥²¡¼¥·¥ç¥ó¥â¡¼¥É¤Ï¡¢AP¥¯¥é¥¹¥í¡¼¥À¤È³ÆWAR¥¯¥é¥¹¥í¡¼¥À¡¢
¡¡¶¦¤Ë[PARENT_LAT]¤Ë¤¹¤ë¤³¤È¡£

¥ë¡¼¥ë­£
¡¡¥¯¥é¥¹¥í¡¼¥À¡¦¥Ý¥ê¥·¡¼(¥¢¥¤¥½¥ì¡¼¥·¥ç¥ó¡¦¥â¡¼¥É)¤Ï¥Ç¥Õ¥©¥ë¥È¤Î¤Þ¤Þ¤Ë¤¹¤ë¤³¤È¡£
¡¡¢¨[ñ¿ô(¥·¥ó¥°¥ë)][¥¢¥×¥ê¥±¡¼¥·¥ç¥ó]Åù¤ËÊѹ¹¤·¤Ê¤¤¤³¤È¡£
¡¡¢¨¥¢¥¤¥½¥ì¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤Ï¡¢
¡¡¡¡¥Ñ¥Ã¥±¡¼¥¸¥ó¥°¤¬½ÐÍè¤Æ¤¤¤Ê¤¤EAR¤Ø¤Î°ì»þŪ¤ÊµßºÑºö¤Ë»È¤¦¤â¤Î¡£
¡¡¢¨¥Ç¥Õ¥©¥ë¥ÈÀßÄê
¡¡¡¡¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤´¤È¤Ë¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥¯¥é¥¹¥í¡¼¥À¤¬£±¤Ä¤Ç¡¢
¡¡¡¡¤µ¤é¤Ë²¼°Ì¥¯¥é¥¹¥í¡¼¥À¤È¤·¤Æ¡¢WARËè¤ÎÀìÍÑWAR¥¯¥é¥¹¥í¡¼¥À¤¬£±¤Ä¤º¤Ä³ä¤êÅö¤Æ¤é¤ì¤ë¡£
¡¡¡¡

¢¢¥Ñ¥Ã¥±¡¼¥¸¥ó¥°ºö­¡/½ÅÊ£Àïά
¥¿¡¼¥²¥Ã¥È¥¢¥×¥ê¡§
¡¡Web¥¢¥×¥ê¤È¤·¤ÆWAR¤¬3¤Ä¡¢EJB¥â¥¸¥å¡¼¥ë¤È¤·¤Æejb-jar¤¬2¤Ä¡¢¤µ¤é¤ËÊ£¿ô¤Î¥é¥¤¥Ö¥é¥ê¤ò»ÈÍÑ¡£
¡¡³ÆWeb¥¢¥×¥ê¤Ï¡¢¤µ¤é¤ËStruts¤ò»ÈÍÑ¡£

¡½Îã­¡¡½
luv-app.ear
¡¡|¡½ META-INF/application.xml
¡¡|¡½ ejb1.jar
¡¡|¡½ ejb2.jar
¡¡|¡½ utility.jar
¡¡|¡½ commons-xxx.jar
¡¡|¡½ luv1.war
¡¡|¡¡¡¡|¡½ WEB-INF/lib
¡¡|¡¡¡¡ ¡¡¡¡|- utility.jar
¡¡|¡¡¡¡ ¡¡¡¡|- commons-xxx.jar
¡¡|¡¡¡¡ ¡¡¡¡|- struts.jar
¡¡|¡½ luv2.war
¡¡|¡¡¡¡|¡½ WEB-INF/lib
¡¡|¡¡¡¡ ¡¡¡¡|- utility.jar
¡¡|¡¡¡¡ ¡¡¡¡|- commons-xxx.jar
¡¡|¡¡¡¡ ¡¡¡¡|- struts.jar
¡¡|¡½ luv3.war
¡¡|¡¡¡¡|¡½ WEB-INF/lib
¡¡|¡¡¡¡ ¡¡¡¡|- commons-xxx.jar
¡¡|¡¡¡¡ ¡¡¡¡|- struts.jar
¡¡|¡¡¡¡ ¡¡¡¡|- web-util.jar
¡½/Îã­¡¡½

ÌÜɸ¡§ ¼«¸Ê´°·ë¤·¤¿EAR¡£
»ÈÍѤ¹¤ë¥é¥¤¥Ö¥é¥ê¤Î¤¦¤Á¡¢J2SE/EE¤Ë´Þ¤Þ¤ì¤Æ¤¤¤Ê¤¤¤â¤Î¤Ï¡¢
Á´¤ÆEARÆâ¤Ë¥Ñ¥Ã¥±¡¼¥¸¥ó¥°¡£
EAR¡¦WARÇÛ²¼¤Ë¤½¤ì¤¾¤ì¤¬»ÈÍѤ¹¤ë¥é¥¤¥Ö¥é¥ê¤òÇÛÃÖ¡£

J2EE¥³¥ó¥Æ¥Ê¤Ï¡¢EARÆâ¤ËÇÛÃÖ¤·¤¿³Æ¥â¥¸¥å¡¼¥ë¤ä¥é¥¤¥Ö¥é¥ê¤ò¤É¤¦¤ä¤Ã¤ÆÇ§¼±¤·¤Æ¤ë¤Î¤«¡©
¡¦WAR¤äejb-jar·Ï¤ÎJ2EE¥â¥¸¥å¡¼¥ë
¡¡¡¡¢ªEAR¤ÎDD(DeploymentDescriptor:ÇÛÃÖµ­½Ò»Ò)¤Ç¤¢¤ë[META-INF/application.xml]Æâ¤ËÌÀµ­¤µ¤ì¤Æ¤ë¡£
¡¦³ÆWARÆâ¤Î[WEB-INF/lib]°Ê²¼¤Î¥é¥¤¥Ö¥é¥ê
¡¡¡¡¢ª¥³¥ó¥Æ¥Ê¤ÎôÅö¡¢¤Ã¤Æ¤æ¤¦»ÅÍÍ¡£
¡¦EARľ²¼¤ÎJ2EE¥â¥¸¥å¡¼¥ë¤Ç¤Ê¤¤¥é¥¤¥Ö¥é¥ê
¡¡¡¡¢ª¤¿¤ÀÃÖ¤¯¤À¤±¤Ç¤Ï¡¢Ç§¼±¤µ¤ì¤Ê¤¤¡ª¡ª

¾åµ­¤Î¥Ñ¥Ã¥±¡¼¥¸¹½À®¤ÎEAR¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥µ¡¼¥Ð¤Ë¥Ç¥×¥í¥¤¤¹¤ë¤È
³Æ¥¯¥é¥¹¥í¡¼¥À¤ÎôÅö¥â¥¸¥å¡¼¥ë¤Ï°Ê²¼¤ÎÄ̤ꡣ

¡½Îã­¡¡§¥Ç¥×¥í¥¤¸å¡½
luv-app.ear
¡¡|
¡¡|¡½ejb1.jar / Application ClassLoader
¡¡|¡½ejb2.jar / Application ClassLoader
¡¡|¡½commons-xxx.jar
¡¡|¡½utility.jar
¡¡|
¡¡|¡½luv1.war / WAR ClassLoader
¡¡|¡¡¡¡|
¡¡|¡¡¡¡|¡½utility.jar
¡¡|¡¡¡¡|¡½commons-xxx.jar
¡¡|¡¡¡¡|¡½struts.jar
¡¡|
¡¡|¡½luv2.war / WAR ClassLoader
¡¡|¡¡¡¡|
¡¡|¡¡¡¡|¡½utility.jar
¡¡|¡¡¡¡|¡½commons-xxx.jar
¡¡|¡¡¡¡|¡½struts.jar
¡½/Îã­¡¡§¥Ç¥×¥í¥¤¸å¡½
EJB¥â¥¸¥å¡¼¥ë¤Ïutility.jarÅù¤Ë°Í¸¤¹¤ë¡£
¤·¤«¤·¡¢
utility.jar¤Ï¡¢EJB¥â¥¸¥å¡¼¥ë¤Î¥¯¥é¥¹¸¡º÷Âоݳ°¤Î
²¼°Ì¥¯¥é¥¹¥í¡¼¥À(WAR¥¯¥é¥¹¥í¡¼¥À)¤Ë¥í¡¼¥É¤µ¤ì¤Æ¤¤¤ë¤¿¤á
EJB¥â¥¸¥å¡¼¥ë¤Ë¤Ï¡¢utility.jar¤ò¸«¤Ä¤±¤é¤ì¤Ê¤¤¡£
·ë²Ì¡¢Àµ¾ï¤Ëưºî¤·¤Ê¤¤¡£

¢¢¥Ñ¥Ã¥±¡¼¥¸¥ó¥°ºö­¡/½ÅÊ£Àïά/Bundled Optional Package
Bundled Optional Package:
¡¡EARÆâ¤ËƱº­¤µ¤ì¡¢J2EE¥â¥¸¥å¡¼¥ë¤«¤é»ÈÍѤµ¤ì¤ë¥é¥¤¥Ö¥é¥ê

»ÈÍѤ¹¤ë°Í¸¥é¥¤¥Ö¥é¥ê¡¼¤òJ2EE¥³¥ó¥Æ¥Ê¤Ë¶µ¤¨¤ëɬÍפ¬¤¢¤ë¡£
¢ª¥Þ¥Ë¥Õ¥§¥¹¥È¥Õ¥¡¥¤¥ë¤ÎClass-Path¥¨¥ó¥È¥ê¤ËɬÍפʥ饤¥Ö¥é¥ê¤òÄêµÁ¤¹¤ë
¡¡¢¨Class-Path¥¨¥ó¥È¥ê¤Ëµ­½Ò¤¹¤ë¥Ñ¥¹¤Ï¡¢EAR¤Î¥È¥Ã¥×¤«¤é¤ÎÁêÂаÌÃ֤ǻØÄꤹ¤ë¤³¤È¡£

Îã
ejb1.jar(EJB¥â¥¸¥å¡¼¥ë)¤¬¡¢utility.jarÅù¤Ë°Í¸¤·¤Æ¤¤¤ë¾ì¹ç
¢­
EJB¥â¥¸¥å¡¼¥ëÆâÉô¤Î¥Þ¥Ë¥Õ¥§¥¹¥ÈŽ¥¥Õ¥¡¥¤¥ë[META-INFO/MANIFEST.MF]¤Ë»ÈÍѤ¹¤ë¥é¥¤¥Ö¥é¥ê¤òÀë¸À¤¹¤ë
¡½Îã¡§ejb1.jarÆâ¤ÎMETA-INF/MANIFEST.MF¡½
Manifest-Version: 1.0
Class-Path:
utility.jar
commons-xxx.jar
commons-yyy.jar
commons-zzz.jar
¡½/Îã¡§ejb1.jarÆâ¤ÎMETA-INF/MANIFEST.MF¡½
J2EE¥³¥ó¥Æ¥Ê¤Ï¡¢J2EE¥â¥¸¥å¡¼¥ë¤Ç¤¢¤ë¡¢WAR¤Èejb-jarÆâ¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¥Õ¥¡¥¤¥ë¤ò¥Á¥§¥Ã¥¯¡£
Class-Path¥¨¥ó¥È¥ê¤¬¤¢¤Ã¤¿¾ì¹ç¡¢
¤½¤³¤ËÀë¸À¤µ¤ì¤Æ¤¤¤ë¥é¥¤¥Ö¥é¥ê¤ò¥¢¥×¥ê¥±¡¼¥·¥ç¥óŽ¥¥¯¥é¥¹¥í¡¼¥ÀÇÛ²¼¤ËÇÛÃÖ¤¹¤ë¡£
¢¨EAR¥È¥Ã¥×ľ²¼¤Ë°Í¸¥é¥¤¥Ö¥é¥ê¤¬¤¢¤ë¾ì¹ç¡¢
¡¡Class-Path¥¨¥ó¥È¥ê¤Ë¤Ï¡¢Jar¥Õ¥¡¥¤¥ë̾¤Î¤ß¤Ç»ØÄê¡£

¢¨°Í¸¥é¥¤¥Ö¥é¥ê¤Îȯ¸«¤Î»ÅÁȤߤÏÏ¢º¿¤¹¤ë¡£
¡¡°Í¸Àè¥é¥¤¥Ö¥é¥êÆâ¤Î¥Þ¥Ë¥Õ¥§¥¹¥È¥Õ¥¡¥¤¥ë¤Ë¹¹¤ËClass-Path¥¨¥ó¥È¥ê¤¬¤¢¤Ã¤¿¾ì¹ç¡¢
¡¡°Í¸Àè¥é¥¤¥Ö¥é¥ê¤Î°Í¸Àè¥é¥¤¥Ö¥é¥ê¤ò¤â¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À²¼¤ËƱÍͤËÇÛÃÖ¤¹¤ë¡£
¡¡




¢¢¥Ñ¥Ã¥±¡¼¥¸¥ó¥°ºö­¢

ref:
http://www-06.ibm.com/jp/software/websphere/developer/j2ee/strategy/3.html

¥¯¥é¥¹¥í¡¼¥À/ ¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É

¢£¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É
WAR¥¯¥é¥¹¥í¡¼¥À¤½¤Î¤â¤Î¤òñ½ãɸ½à½ÐÎϤ·¤¿·ë²Ì
--------------------
com.ibm.ws.classloader.CompoundClassLoader@1f7010c3
¡¡Local ClassPath: ...(ά)...installedAppslemonNode02Cell
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ luv-app.earluv.warWEB-INFclasses;
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ...(ά)...installedAppslemonNode02Cell
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ luv-app.earluv.war;
¡¡Delegation Mode: PARENT_FIRST
--------------------
³ºÅö¥¯¥é¥¹¥í¡¼¥À¤Ë´Ø¤¹¤ë¾ðÊ󤬽ÐÎϤµ¤ì¤ë¤è¤¦¤Ë¡¢
¥¯¥é¥¹¥í¡¼¥À¤ÎtoString()¤¬¥ª¡¼¥Ð¡¼¥é¥¤¥É¤µ¤ì¤Æ¤¤¤ë¡£
¤³¤ì¤Ç¡¢³ºÅö¥¯¥é¥¹¥í¡¼¥À¤Î¥í¡¼¥«¥ë¥¯¥é¥¹¥Ñ¥¹(LocalClassPath)¤¬Ê¬¤«¤ë¡£

[Delegation Mode: PARENT_FIRST]¤æ¤¦½ÐÎÏ·ë²Ì¤Ï¡¢
¥¯¥é¥¹¥í¡¼¥À¤Î¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É(Delegation Mode)¤¬¡¢PARENT_FIRST¤Ç¤¢¤ë¤³¤È¤ò¼¨¤¹¡£


¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤ÎÀßÄê¤Ë¤è¤Ã¤Æ¡¢¥Ç¥ê¥²¡¼¥·¥ç¥ó¥â¥Ç¥ë¤¬·è¤Þ¤ë¡£
ÁªÂò¤Ç¤­¤ë¥â¡¼¥É¤Ï£²¤Ä¡£
¡¦PARENT_FIRST
¡¦PARENT_LAST

Java´ðËÜ¥¯¥é¥¹¥í¡¼¥À/¥Ö¡¼¥¹¥È¥È¥é¥Ã¥×¥¯¥é¥¹¥í¡¼¥À
¡¡(loads /lib/*.jar)
¡Ã
¡Ã¡½Java´ðËÜ¥¯¥é¥¹¥í¡¼¥À/¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡(loads /lib/ext/*.jar)
¡Ã
¡Ã¡½Java´ðËÜ¥¯¥é¥¹¥í¡¼¥À/¥·¥¹¥Æ¥à¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡(loads CLASSPATH)
¡¡¡¡¡Ã
¡¡¡¡¡Ã¡½WebSphere/EXT¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡¡(loads /lib/*.jar)
¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡Ã¡½banking.ear/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡¡¡¡¡¡(loads banking-ejb.jar, utility.jar)
¡¡¡¡¡¡¡¡¡Ã¡¡¡Ã
¡¡¡¡¡¡¡¡¡Ã¡¡¡Ã¡½customer.war/WAR¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡Ã¡¡¡Ã
¡¡¡¡¡¡¡¡¡Ã¡¡¡Ã¡½admin.war/WAR¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡Ã¡½trading.ear/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡¡¡¡¡¡(loads trading-ejb.jar, utility.jar)
¡¡¡¡¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡½company.war/WAR¥¯¥é¥¹¥í¡¼¥À


¾åµ­¤Î¤¦¤Á¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥¯¥é¥¹¥í¡¼¥À¤ÈWAR¥¯¥é¥¹¥í¡¼¥À¤Ë¤Ä¤¤¤Æ¤Ï¡¢
¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤ò¥«¥¹¥¿¥Þ¥¤¥º¤Ç¤­¤ë¡£

¢£PARENT_FIRST¡Ê¥Ç¥Õ¥©¥ë¥È¡Ë
¡¡¼«¥¯¥é¥¹¥í¡¼¥À¤Î¥í¡¼¥«¥ë¥¯¥é¥¹¥Ñ¥¹¤òõ¤¹Á°¤Ë¡¢ºÇ½é¤Ë¿Æ¥¯¥é¥¹¥í¡¼¥À¤Ë¥Ç¥ê¥²¡¼¥È¤¹¤ë¡£
¡¡¿Æ¤Ç¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿»þ¤Ë½é¤á¤Æ¡¢¼«Ê¬¤Î¥í¡¼¥«¥ë¡¦¥¯¥é¥¹¥Ñ¥¹¤òõ¤·¤Ë¤¯¡£

¢£PARENT_LAST
¡¡¼«¥¯¥é¥¹¥í¡¼¥À¤Î¥í¡¼¥«¥ë¡¦¥¯¥é¥¹¥Ñ¥¹¤òºÇ½é¤Ëõ¤¹¡£
¡¡¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿»þ¤Ë½é¤á¤Æ¡¢¿Æ¥¯¥é¥¹¥í¡¼¥À¤Ë¥Ç¥ê¥²¡¼¥È¤¹¤ë¡£


¢£Ãµº÷½ç½ø
¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤ÎÀßÄ꼡Âè¤Ç¡¢¥¯¥é¥¹¤òõ¤¹½ç½ø¤¬ÊѤï¤ë¡£

¥í¡¼¥«¥ë¡¦¥¯¥é¥¹¥Ñ¥¹¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥ÉÀßÄê
¡ÊA¡Ë
APP-FIRST
WAR-FIRST
¡ÊB¡Ë
APP-LAST
WAR-FIRST
¡ÊC¡Ë
APP-FIRST
WAR-LAST
¡ÊD¡Ë
APP-LAST
WAR-LAST
Java´ðËÜ¥¯¥é¥¹¥í¡¼¥À¡¼1223
WebSphere Ext
¥¯¥é¥¹¥í¡¼¥À¡¼
2334
¥¢¥×¥ê¥±¡¼¥·¥ç¥ó
¥¯¥é¥¹¥í¡¼¥À¡¼
3142
WAR¥¯¥é¥¹¥í¡¼¥À¡¼4411


¢¨WebSphereApplicationServer¤Î´ÉÍý¥³¥ó¥½¡¼¥ë¾å¤Ç¤Ï¡¢
¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤ò¥¯¥é¥¹¡¦¥í¡¼¥À¡¦¥â¡¼¥É(Class loader mode)¤Èɽµ­¤·¤Æ¤¤¤ë¡£


¢£¥±¡¼¥¹¥¹¥¿¥Ç¥£
PARENT_LAST¤Ï¤¤¤ÄÌòΩ¤Ä¤Î¤«¡©

Ë¿·îË¿Æü
£Á¡§jakarta¥×¥í¥¸¥§¥¯¥È¤Î¥é¥¤¥Ö¥é¥ê¤Îhoge-1.2.jar»È¤¦¤Æ¤ó¤Í¤ó¤±¤É
¡¡¡¡¤É¤¦¤âµóư¤¬¤ª¤«¤·¤¤¤Í¤ó¡£
£Â¡§¤Á¤ã¤ó¤ÈWEB-INF/lib¤ËÃÖ¤¤¤È¤¦¤È¡©
£Á¡§ÃÖ¤¤¤È¤¦¤è¡£¥¯¥é¥¹¤ò¸«¤Ë¤Ï¹Ô¤Ã¤Æ¤ë¤è¤¦¤Ê¤ó¤ä¤±¤É¡Ä¡£
¡¡¡¡´Ñ¤Æ¤ß¤¿¤é¡¢WebSphere¤Î¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¥Ç¥£¥ì¥¯¥È(WAS_HOME)²¼¤Î
¡¡¡¡lib¥Ç¥£¥ì¥¯¥È¥êÆâ¤Ëhoge-1.1.jar¤¬¤¢¤Ã¤¿¤ï¡£
¡¡¡¡¼«Ê¬¤é¤ÎAPÆâ¤ËÃÖ¤¤¤¿WEB-INF/lib/hoge-1.2.jar¤ä¤Î¤¦¤Æ¡¢
¡¡¡¡WAS_HOME¤Î¤òÀè¤Ë»È¤¦¤Æ¤ë¤è¤¦¤ä¤ï¡£
£Â¡§¤¢¤«¤ó¤ä¤ó¡ªWebSphere¤Çhoge-1.2.jar¤Ï»È¤¨¤ó¤æ¤¦¤³¤È¡©
£Á¡§WAS_HOME/lib/hoge-1.1.jar¤òhoge-1.2.jar¤ÇÃÖ¤­´¹¤¨¤Á¤ã¤Ð¤¨¤¨¤Á¤ã¤¦¤ó¡©
£Â¡§¤¤¤¤¤Í¡£¤ä¤Ã¤Æ¤ß¤Æ¡Á
£Á¡§¤¢¤«¤ó¡£WebSphere¼«ÂΤ¬Î©¤Á¾å¤¬¤é¤ó¤¯¤Ê¤Ã¤Æ¤â¤¦¤¿¡Ä¡£

²òÀâ
£Á¤¬¤ä¤ë¤Ù¤­¤ä¤Ã¤¿¤ó¤Ï¡¢jar¤ÎÃÖ¤­´¹¤¨¤ä¤Î¤¦¤Æ¡¢¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤òPARENT_LAST¤Ë¤¹¤ë¤³¤È¡ª
¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤òÊѹ¹¤¹¤ë¤³¤È¤Ç¡¢
WebSphere¤½¤Î¤â¤Î¤Ë±Æ¶Á¤òÁ´¤¯Í¿¤¨¤º¤Ë¡¢
¼«Ê¬¤ÎWeb¥¢¥×¥ê¥±¡¼¥·¥ç¥óÆâ¤Ë´Þ¤Þ¤ì¤ë¥é¥¤¥Ö¥é¥ê¤¬Àè¤ËÍ¥À褵¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¡£

¢ª¥¯¥é¥¹¥í¡¼¥À¤¬Ê£¿ô¤¢¤ëÍøÅÀ¡£


¢£PARENT_LAST¤ÎɬÍ×À­
WebSphere Application Server¤ÎÆâÉô¥é¥¤¥Ö¥é¥ê¤Ë±Æ¶Á¤µ¤ì¤ë¤³¤È¤Ê¤¯
¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËºÇ¿·¤Î¥é¥¤¥Ö¥é¥ê¤òÍѤ¤¤¿¤¤¾ì¹ç¤Ë[PARENT_LAST]¤¬Í­¸ú

¥µ¡¼¥Ö¥ì¥Ã¥È¤Î»ÅÍͤǤâ
It is recommended also that the application class loader be implemented so that classes and resources packaged within the WAR are loaded in preference to classes and resources residing in container-wide library JARs.
(¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¤ò¥í¡¼¥É¤¹¤ë¥¯¥é¥¹¥í¡¼¥À¡¼¤Ï¡¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥µ¡¼¥Ð¡¼¡¢Web¥³¥ó¥Æ¥ÊÁ´ÂΤǻÈÍѤ¹¤ë¥é¥¤¥Ö¥é¥ê¡¼Æâ¤è¤ê¤â¡¢WARÆâÉô¤Î¥¯¥é¥¹¤ä¥ê¥½¡¼¥¹¤òÍ¥À褷¤Æ¥í¡¼¥É¤¹¤ë¤³¤È¤¬¿ä¾©¤µ¤ì¤ë¡£)
ref: 2.4 Specification SRV.9.7.2

¤Ê¤¼¤À¤«
websphere¤Ï¡¢PARENT_FIRST¤¬¥Ç¥Õ¥©¥ë¥È¤À¤±¤É..

Ãí¡§Java´ðËÜ¥¯¥é¥¹¥í¡¼¥À¡¼¤¬Ã´Åö¤¹¤ë¥³¥¢¥¯¥é¥¹¡Êjava.lang.*¤Ê¤É¡Ë¤Ë´Ø¤·¤Æ¤Ï¡¢
¡¡¡¡Java¤Î¥»¥­¥å¥ê¥Æ¥£¡¼¡¦¥â¥Ç¥ë¤Ç¶Ø»ß¤µ¤ì¤Æ¤¤¤ë¤¿¤á¡¢
¡¡¡¡¤¿¤È¤¨¡ÖPARENT LAST¡×¤Ë¤·¤Æ¤â¡¢¡Ö¾å½ñ¤­¡×¤Ï¤Ç¤­¤Ê¤¤¡£


¢¢¤Á¤Ê¤ß¤Ë Web¥³¥ó¥Æ¥ÊTomcat
Tomcat¤Î¥¯¥é¥¹¥í¡¼¥À¡¦¥Ä¥ê¡¼
¡¡Bootstrap
¡¡¡Ã
¡¡¡Ã¡½System
¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡Ã¡½Common
¡¡¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡¡¡Ã¡½Catalina
¡¡¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡¡¡Ã¡½Shared
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡½Webapp1
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡½Webapp2

ref: The Apache Jakarta Tomcat 5.5 Servlet/JSP Container Class Loader HOW-TO

Tomcat¤Î¾ì¹ç¡¢EAR¤¬¤Ê¤¯¡¢Web¥¢¥×¥ê¥±¡¼¥·¥ç¥ó(WAR)¤À¤±¤Ê¤Î¤Ç¼ã´³°ã¤¤¤¬¤¢¤ë¤¬¡¢
tomcat#common¡¢shareÇÛ²¼¤è¤ê¤â³ÆwebappsÆâ¤Î¥¯¥é¥¹¡¦¥ê¥½¡¼¥¹¤¬Í¥À褵¤ì¤ë
¤È¥É¥­¥å¥á¥ó¥È¤ËÌÀµ­¤µ¤ì¤Æ¤¤¤ë¡£
¤Ä¤Þ¤ê¡¢PARENT_LAST¤ÎÀßÄê¡£

¢£¥·¥ó¥°¥ë¥È¥ó¤¬¥·¥ó¥°¥ë¥È¥ó¤Ç¤Ê¤¯¤Ê¤ëÆü
PARENT_LAST¤È¤¹¤Ù¤­¤À¤¬¡¢
Ä̾ï¤ÎJava¤Î¥¯¥é¥¹¥í¡¼¥À¤Î¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤Ï¡¢PARENT_FIRST¡£

¡½typical singleton pattern class¡½
package com.example;
public class Singleton {
¡¡¡¡
¡¡¡¡private static Singleton instance = new Singleton();
¡¡¡¡private int counter;
¡¡¡¡private Singleton() {}
¡¡¡¡
¡¡¡¡public static Singleton getInstance() {
¡¡¡¡¡¡¡¡return instance;
¡¡¡¡}
¡¡¡¡
¡¡¡¡public void increment(int i) {
¡¡¡¡¡¡¡¡counter += i;
¡¡¡¡}
¡¡¡¡
¡¡¡¡public int getCounter() {
¡¡¡¡¡¡¡¡return counter;
¡¡¡¡}

}
¡½/typical singleton pattern class¡½

£±¤Ä¤·¤«¥¤¥ó¥¹¥¿¥ó¥¹À¸À®¤µ¤ì¤Ê¤¤¡¢
¤È¤¤¤¦¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹¤Î¥ë¡¼¥ë¤Ç¤â
°Ê²¼¥ë¡¼¥ë¤ÇÇˤé¤ì¤ë¡£

¡½¥¯¥é¥¹¤ÎƱ°ìÀ­¤Ë´Ø¤¹¤ë¥ë¡¼¥ë¡½
Á´¤¯Æ±¤¸¥Ñ¥Ã¥±¡¼¥¸Ì¾¡¦Æ±¤¸¥¯¥é¥¹¤Ç¤â¡¢
°Û¤Ê¤ë¥¯¥é¥¹¥í¡¼¥À¤«¤é¥í¡¼¥É¤µ¤ì¤¿¤â¤Î¤Ï¡¢
Ʊ°ì¥¯¥é¥¹¤È¤·¤Æ°·¤ï¤ì¤º¤Ë¡¢ÊÌ¥¯¥é¥¹°·¤¤¤È¤Ê¤ë¡£
¡½/¥¯¥é¥¹¤ÎƱ°ìÀ­¤Ë´Ø¤¹¤ë¥ë¡¼¥ë¡½


¢¢¼Â¸³

¡½EAR¹½À®¡½
luv-app.ear
¡¡|¡½ luv-ejb.jar
¡¡| ¡¡¡¡|¡½ com.example.Singleton
¡¡| ¡¡¡¡|¡½ com.example.ejb.InEJB
¡¡|¡½ luv.war
¡¡¡¡¡¡¡¡|¡½ WEB-INF/
¡¡¡¡¡¡¡¡¡¡¡¡¡¡|¡½ classes/
¡¡¡¡¡¡¡¡¡¡¡¡¡¡|¡½ com.example.Singleton
¡¡¡¡¡¡¡¡¡¡¡¡¡¡|¡½ com.example.web.ClassLoaderTestServlet
¡½/EAR¹½À®¡½

Singleton¥¯¥é¥¹¤ò¡¢EJB¥â¥¸¥å¡¼¥ë¤ÈWeb¥â¥¸¥å¡¼¥ë¤ÎÁÐÊý¤ËÇÛÃÖ¡£
¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡¦¥¯¥é¥¹¥í¡¼¥À¤ÈWAR¥¯¥é¥¹¥í¡¼¥À
ξÊý¤Î¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¡¼¥É¤òPARENT_LAST¤ËÀßÄê¡£

¡½test classes¡½
package com.example.web;

import com.example.Singleton;
import com.example.ejb.InEJB;
...
public class ClassLoaderTestServlet extends HttpServlet {

¡¡¡¡protected void service(HttpServletRequest req,
¡¡¡¡HttpServletResponse res)
¡¡¡¡¡¡¡¡¡¡¡¡throws ServletException, IOException {
¡¡¡¡¡¡¡¡testSingleton();
¡¡¡¡}

¡¡¡¡private void testSingleton() {
¡¡¡¡¡¡¡¡Singleton singleton = Singleton.getInstance();

¡¡¡¡¡¡¡¡System.out.println("1. InWeb - counter: "
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ + singleton.getCounter());
¡¡¡¡¡¡¡¡System.out.println("counter: +1");
¡¡¡¡¡¡¡¡singleton.increment(1);
¡¡¡¡¡¡¡¡System.out.println("2. InWeb - counter: "
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ + singleton.getCounter());¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡InEJB.testSingleton();
¡¡¡¡¡¡¡¡System.out.println("5. InWeb - counter: "
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ + singleton.getCounter());
¡¡¡¡¡¡¡¡
¡¡¡¡}
}

package com.example.ejb;

import com.example.Singleton
...

public class InEJB {

¡¡¡¡public static void testSingleton() {
¡¡¡¡¡¡¡¡Singleton singleton = Singleton.getInstance();

¡¡¡¡¡¡¡¡System.out.println("3. InEJB - counter: "
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ + singleton.getCounter());
¡¡¡¡¡¡¡¡System.out.println("counter: +10");
¡¡¡¡¡¡¡¡singleton.increment(10);
¡¡¡¡¡¡¡¡System.out.println("4. InEJB - counter: "
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ + singleton.getCounter());
¡¡¡¡}
¡¡¡¡
¡¡¡¡public static Singleton getSingleton() {
¡¡¡¡¡¡¡¡return Singleton.getInstance();
¡¡¡¡}
}
¡½/test classes¡½

Web¥â¥¸¥å¡¼¥ëÆâ¤Î¥µ¡¼¥Ö¥ì¥Ã¥ÈClassLoaderTestServlet¤È¡¢
EJB¥â¥¸¥å¡¼¥ëÆâ¤Î¥¯¥é¥¹InEJB¤ÎξÊý¤«¤é
Ʊ°ì¤Î¥·¥ó¥°¥ë¥È¥ó¡¦¥¯¥é¥¹com.sample.Singleton¤ò»ÈÍÑ¡£


Singleton¥¯¥é¥¹¤¬£±¥¤¥ó¥¹¥¿¥ó¥¹¤·¤«À¸À®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¡¢
¼Â¹Ô¤Î·ë²Ì¡¢ºÇ¸å¤Ë½ÐÎϤµ¤ì¤ë[counter]¤Ï[11]¤Î¤Ï¤º¡£

¡½£±¥¤¥ó¥¹¥¿¥ó¥¹¤·¤«À¸À®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¼Â¹Ô·ë²Ì¡½
1. InWeb - counter: 0
counter: +1
2. InWeb - counter: 1
3. InEJB - counter: 1
counter: +10
4. InEJB - counter: 11
5. InWeb - counter: 11
¡½£±¥¤¥ó¥¹¥¿¥ó¥¹¤·¤«À¸À®¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Î¼Â¹Ô·ë²Ì¡½

¤¬¡¢¼ÂºÝ¤ÏPARENT_LAST¥â¡¼¥É¤Ç¥·¥ó¥°¥ë¥È¥ó¤Ç¤Ê¤¯¤Ê¤Ã¤Æ¤ë¡£

¡½¼ÂºÝ¤Î¼Â¹Ô·ë²Ì¡½
1. InWeb - counter: 0
counter: +1
2. InWeb - counter: 1
3. InEJB - counter: 0
counter: +10
4. InEJB - counter: 10
5. InWeb - counter: 1
¡½/¼ÂºÝ¤Î¼Â¹Ô·ë²Ì¡½

Web¥â¥¸¥å¡¼¥ëÆâ¤Î¥µ¡¼¥Ö¥ì¥Ã¥È¡¢EJB¥â¥¸¥å¡¼¥ëÆâ¤ÎInEJB¤Ï
¤½¤ì¤¾¤ì°Û¤Ê¤ë¥·¥ó¥°¥ë¥È¥ó¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤ò»²¾È¤·¤Æ¤¤¤ë¡£

PARENT_LAST¥â¡¼¥É¤È¤Ê¤Ã¤Æ¤¤¤ë¤¿¤á¡¢
¥µ¡¼¥Ö¥ì¥Ã¥È(@»Ò¥¯¥é¥¹¥í¡¼¥À)¤Ï¡¢
WAR¥¯¥é¥¹¥í¡¼¥À(»Ò)Æâ¤Ë¥í¡¼¥É¤µ¤ì¤¿¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹¤òÀè¤Ë¸«¤Ä¤±¤ë¡£
°ìÊý¡¢
InEJB¥¯¥é¥¹¤Ï¡¢EJB¥â¥¸¥å¡¼¥ë(¿Æ)Æâ¤Ë¥í¡¼¥É¤µ¤ì¤¿¥·¥ó¥°¥ë¥È¥ó¥¯¥é¥¹¤òºÇ½é¤Ë¸«¤Ä¤±¤ë¡£

·ë²Ì¡¢ÊÌ¡¹¤ÎSingleton¥¯¥é¥¹¤ò»²¾È¡£
ÅöÁ³¡¢staticÊÑ¿ô¥¤¥ó¥¹¥¿¥ó¥¹¤â¤½¤ì¤¾¤ì¤Î¥¯¥é¥¹¤Ë¸ºß¡£
¢ª¥·¥ó¥°¥ë¥È¥ó¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬£²¤Ä¡ª

PARENT_FIRST¤ËÀßÄꤷ¤¿¾ì¹ç¡¢
¥·¥ó¥°¥ë¥È¥ó¥¤¥ó¥¹¥¿¥ó¥¹¤Ï£±¤Ä¤·¤«À¸À®¤µ¤ì¤º¡¢
JVMÁ´ÂΤǥ·¥ó¥°¥ë¥È¥ó¤ÎÌò³ä¤ò²Ì¤¿¤¹¡£


£±¤Ä¤ÎJVMÆâ¤Ç¡¢¥¯¥é¥¹¤ò¼±Ê̤¹¤ë¥­¡¼¤È¤Ê¤ë¤Î¤Ï
[¥Ñ¥Ã¥±¡¼¥¸Ì¾¡Ü¥¯¥é¥¹Ì¾]¤Ç¤Ï¤Ê¤¯¡¢
[¥Ñ¥Ã¥±¡¼¥¸Ì¾¡Ü¥¯¥é¥¹Ì¾¡Ü¥í¡¼¥É¤·¤¿¥¯¥é¥¹¥í¡¼¥À]¤¬¼±ÊÌ¥­¡¼¤È¤Ê¤ë¡£


http://www-06.ibm.com/jp/software/websphere/developer/j2ee/strategy/2.html

¥¯¥é¥¹¥í¡¼¥À/ ¥Ç¥ê¥²¡¼¥·¥ç¥ó¡¦¥â¥Ç¥ë

¢£¥¯¥é¥¹¥í¡¼¥À
¥¯¥é¥¹¤ò¥í¡¼¥É¤¹¤ë¤â¤Î
¥¯¥é¥¹¤Ï»ÈÍѤµ¤ì¤ëÁ°¤Ëɬ¤º¥¯¥é¥¹¥í¡¼¥À¤Ë¤è¤Ã¤ÆJVM¡ÊJava Virtual Machine¡Ë¤Î¥á¥â¥ê¶õ´Ö¾å¤Ë¥í¡¼¥É¤µ¤ì¤ë¡£

public class SimpleTest {
public static void main(String[] args) {

SimpleTest test = new SimpleTest();//­¡
ClassLoader loader = test.getClass().getClassLoader();
syso("SimpleTest.class is loaded by " + loader);
syso("java/lang/String.class is found at " + loader.getResource("java/lang/String.class"));//­¢

}
}

­¡¥¯¥é¥¹¥í¡¼¥À¤Î¼èÆÀ
¡¡¥¯¥é¥¹¥í¡¼¥À¤Ï¥×¥í¥°¥é¥àÃæ¤«¤é¤Ç¤â¼èÆÀ²Äǽ¡£
¡¡¾åµ­¤Ï¡¢java.lang.Class#getClassLoader¤Ç¼èÆÀ¡£
¡¡syso·ë²Ì¤Ï¡¢
¡¡SimpleTest.class is loaded by sun.misc.Launcher$AppClassLoader@3c6d53c4

­¢¥¯¥é¥¹¥í¡¼¥À¤Ç¥ê¥½¡¼¥¹¸¡º÷
¡¡ClassLoader#getResource(String)¤Ï¡¢¡ö.propertiesÅù¤ÎÆÉ¤ß¹þ¤ß¤Ç¤è¤¦ÍøÍѤµ¤ì¤ë¤¬¡¢¡ö.class¤À¤Ã¤±¤è¸«¹þ¤ß²Äǽ¡£
¡¡¢¨getResource(String)¤Ï¡¢¥ê¥½¡¼¥¹¸¡º÷¤Î¥á¥½¥Ã¥É
¡¡¡¡°ú¿ô¤Ï¡¢"java.lang.String"¤Ç¤Ï¤Ê¤¯¡¢"java/land/String.class"¤È¤¹¤ë¤³¤È¡£
¡¡syso·ë²Ì¤Ï¡¢
¡¡java/lang/String.class is found at jar:file:C:/opt/rad/runtimes/base_v6/java/jre/lib/core.jar!/java/lang/String.class

¼ÂºÝ¤Ë¥¯¥é¥¹¤¬¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¾å¤Î²¿½è¤«¤é¥í¡¼¥É¤µ¤ì¤¿¤òÃΤë¤Î¤Ë¤â¥¯¥é¥¹¥í¡¼¥À¤ÏÍ­¸ú¡£

¢£¥¯¥é¥¹¥í¡¼¥À¥Ò¥¨¥é¥ë¥­¡¼
£±¤Ä¤ÎJVMÆâ¤ËÊ£¿ô¤Î¥¯¥é¥¹¥í¡¼¥À¤¬ÉáÄÌ¡£
J2EE¥¢¥×¥ê¥±¡¼¥·¥ç¥óŽ¥¥µ¡¼¥Ð¤ÎÀ¤³¦¤âƱ¤¸¡£

¢¢WebSphereApplicationServerÆâ¤Î¥¯¥é¥¹¥í¡¼¥À¹½À®
Java´ðËÜ¥¯¥é¥¹¥í¡¼¥À/¥Ö¡¼¥¹¥È¥È¥é¥Ã¥×¥¯¥é¥¹¥í¡¼¥À
¡¡(loads /lib/*.jar)
¡Ã
¡Ã¡½Java´ðËÜ¥¯¥é¥¹¥í¡¼¥À/¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡(loads /lib/ext/*.jar)
¡Ã
¡Ã¡½Java´ðËÜ¥¯¥é¥¹¥í¡¼¥À/¥·¥¹¥Æ¥à¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡(loads CLASSPATH)
¡¡¡¡¡Ã
¡¡¡¡¡Ã¡½WebSphere/EXT¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡¡(loads /lib/*.jar)
¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡Ã¡½banking.ear/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡¡¡¡¡¡(loads banking-ejb.jar, utility.jar)
¡¡¡¡¡¡¡¡¡Ã¡¡¡Ã
¡¡¡¡¡¡¡¡¡Ã¡¡¡Ã¡½customer.war/WAR¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡Ã¡¡¡Ã
¡¡¡¡¡¡¡¡¡Ã¡¡¡Ã¡½admin.war/WAR¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡Ã¡½trading.ear/¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À
¡¡¡¡¡¡¡¡¡¡¡¡¡¡(loads trading-ejb.jar, utility.jar)
¡¡¡¡¡¡¡¡¡¡¡¡¡Ã
¡¡¡¡¡¡¡¡¡¡¡¡¡Ã¡½company.war/WAR¥¯¥é¥¹¥í¡¼¥À

¡½¥Ö¡¼¥¹¥È¥È¥é¥Ã¥×¥¯¥é¥¹¥í¡¼¥À
¡¡°ìÈ֤οơ£
¡¡Java¤Î¥³¥¢API¤Ë´Ø¤¹¤ë¥¯¥é¥¹(java.lang.*Åù)¤ò¥í¡¼¥É¡£

¡½¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À
¡¡¥Ö¡¼¥¹¥È¥È¥é¥Ã¥×¥¯¥é¥¹¥í¡¼¥À¤Î»Ò¶¡¡£
¡¡¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥óŽ¥¥Ç¥£¥ì¥¯¥È¥ê(/lib/ext/*.jar)Æâ¤Î¥¯¥é¥¹¤ò¥í¡¼¥É¡£

¡½EXT¥¯¥é¥¹¥í¡¼¥À
¡¡¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À¤Î»Ò¶¡¡£
¡¡WebSphereApplicationServerÆÃÍ­¤Î¥¯¥é¥¹¥í¡¼¥À¡£
¡¡WebSphereApplicationServerËÜÂΤΥ¯¥é¥¹¤ò¥í¡¼¥É¡£
¡¡/lib/*.jarÅù¤¬¥í¡¼¥ÉÂоݡ£

¡½¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À
¡¡EXT¥¯¥é¥¹¥í¡¼¥À¤Î»Ò¶¡¡£
¡¡¥¢¥×¥ê¥±¡¼¥·¥ç¥óŽ¥¥µ¡¼¥Ð¤Ë¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤¿¥¨¥ó¥¿¡¼¥×¥é¥¤¥ºŽ¥¥¢¥×¥ê¥±¡¼¥·¥ç¥ó(EAR)¤´¤È¤Ë£±¤Ä¤º¤ÄÀìÍѤ˳ä¤ê¿¶¤é¤ì¤ë¥¯¥é¥¹¥í¡¼¥À¡£
¡¡³ÆEARÆâ¤Ë´Þ¤Þ¤ì¤ëejb-jar¤ä¥æ¡¼¥Æ¥£¥ê¥Æ¥£-jarÆâ¤Î¥¯¥é¥¹¤¬¥í¡¼¥ÉÂоݡ£

¡½WAR¥¯¥é¥¹¥í¡¼¥À
¡¡¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë´Þ¤Þ¤ì¤ëWAR¥â¥¸¥å¡¼¥ë¡Ê¡áWeb¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡ËËè¤Ë£±¤Ä¤º¤Ä³ä¤êÅö¤Æ¤é¤ì¤ë¡£
¡¡³ÆWAR¥â¥¸¥å¡¼¥ëÆâ¤ÎWEB-INF/classes°Ê²¼¤äWEB-INF/lib/*.jarÆâ¤Î¥¯¥é¥¹¤¬¥í¡¼¥ÉÂоݡ£

¢£¥¯¥é¥¹¥í¡¼¥ÀŽ¥¥Ç¥ê¥²¡¼¥·¥ç¥óŽ¥¥â¥Ç¥ë
¡¡¥¯¥é¥¹¥í¡¼¥À¤Ï¡¢É¬Íפ˱þ¤¸¤Æ¡¢¼«Ê¬¼«¿È¤Ç¥í¡¼¥É¤»¤º¤Ë¡¢¿Æ¥¯¥é¥¹¥í¡¼¥À¤Ë¥¯¥é¥¹¤Î¥í¡¼¥É¤ò°Ñ¾ù(¥Ç¥ê¥²¡¼¥È)¤¹¤ë¡£
¡¡Î㤨¤Ð¡¢
¡¡¥·¥¹¥Æ¥àŽ¥¥¯¥é¥¹¥í¡¼¥À¤¬¤¢¤ë¥¯¥é¥¹¤ò¥í¡¼¥É¤¹¤ëɬÍפ¬¤¢¤Ã¤¿¤È¤¹¤ë¡£
¡¡¤³¤Î»þ¡¢
¡¡¥·¥¹¥Æ¥àŽ¥¥¯¥é¥¹¥í¡¼¥À¤Ï¡¢¼«Ê¬¤Î¥í¡¼¥«¥ë¥¯¥é¥¹¥Ñ¥¹Æâ¡¢¤¹¤Ê¤ï¤Á´Ä¶­ÊÑ¿ôCLASSPATHÆâ¤òõ¤¹Á°¤Ë¡¢ºÇ½é¤Ë¿Æ¤Ç¤¢¤ë¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥óŽ¥¥¯¥é¥¹¥í¡¼¥À¤Ë¥¯¥é¥¹¤ò¥í¡¼¥É¤ò°ÍÍꤹ¤ë¡£
¡¡Æ±¤¸¤è¤¦¤Ë¡¢
¡¡¥¨¥¯¥¹¥Æ¥ó¥·¥ç¥óŽ¥¥¯¥é¥¹¥í¡¼¥À¤â¡¢¤Þ¤º¿Æ¤Ç¤¢¤ë¥Ö¡¼¥ÈŽ¥¥¹¥È¥é¥Ã¥×Ž¥¥¯¥é¥¹¥í¡¼¥À¤Ë¥¯¥é¥¹¤Î¥í¡¼¥É¤ò¥Ç¥ê¥²¡¼¥È¤¹¤ë¡£
¡¡¿Æ¥¯¥é¥¹¥í¡¼¥À¤Ç¸«¤Ä¤«¤Ã¤¿¾ì¹ç¤Ï¡¢¤½¤³¤Ç½ªÎ»¡£
¡¡¿Æ¥¯¥é¥¹¥í¡¼¥À¤Ç¸«¤Ä¤«¤é¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ê¤Ã¤Æ¡¢½é¤á¤Æ»Ò¶¡¤Ï¼«Ê¬¤Î¥í¡¼¥«¥ë¥¯¥é¥¹¥Ñ¥¹Æâ¤òõ¤·¤Ë¤¤¤­¡¢¥¯¥é¥¹¤ò¥í¡¼¥É¤·¤è¤¦¤È¤¹¤ë¡£
¡¡
¡¡¢¨Ãí¡§¥Ç¥ê¥²¡¼¥È¥â¥Ç¥ë¤Ï¡¢»Ò¶¡¤¬¿Æ¤Ë°ÍÍꤷ¤Æ¤â¡¢¿Æ¤¬»Ò¶¡¤Ë°ÍÍꤹ¤ë¤³¤È¤Ï¤Ê¤¤¡£

¢£¥¯¥é¥¹¤È¥¯¥é¥¹¥í¡¼¥À¤Î´Ø·¸¤Ë´Ø¤¹¤ë¥ë¡¼¥ë

¢¢¥ë¡¼¥ë­¡ ¥¯¥é¥¹¥í¡¼¥É¤ÎºÝ¡¢»ÈÍѤµ¤ì¤ë¥¯¥é¥¹¥í¡¼¥À¤Î·èÄêÊýË¡
¡¡¥¯¥é¥¹A¤ÎÆâÉô¤Ç¥¯¥é¥¹B¤ò»ÈÍѤ¹¤ë¥±¡¼¥¹¡£
¡¡¥¯¥é¥¹A¤ò¥í¡¼¥É¤·¤¿¥¯¥é¥¹¥í¡¼¥À[CL-A]¤¬µ¯ÅÀ¤È¤Ê¤ê¡¢¥¯¥é¥¹B¤ò¥í¡¼¥É¤¹¤ë¡£
¡¡¤³¤Î»þ¡¢¥Ç¥ê¥²¡¼¥·¥ç¥ó¥â¥Ç¥ë¤Ç¡¢CL-A¤Î¿Æ¥¯¥é¥¹¥í¡¼¥À¤Ë¤Ï¥Ç¥ê¥²¡¼¥·¥ç¥ó¤¹¤ë¤¬¡¢
¡¡CL-A¤Î»Ò¶¡¤Ë¤Ï¥Ç¥ê¥²¡¼¥·¥ç¥ó¤·¤Ê¤¤¡£
¡¡
¡¡------------------------------
¡¡package com.example.web;
¡¡public class InWeb {//»Ò³¬ÁؤΥ¯¥é¥¹
¡¡}
¡¡------------------------------
¡¡package com.example.ejb;
¡¡...
¡¡public class InEJB {//¿Æ³¬ÁؤΥ¯¥é¥¹
¡¡¡¡private InWeb inWeb = new InWeb();//»Ò³¬ÁؤΥ¯¥é¥¹¤Î¸Æ¤Ó½Ð¤·
¡¡}
¡¡------------------------------
¡¡package com.example.web;
¡¡...¡Êά¡Ë...
¡¡import com.example.ejb.InEJB;
¡¡
¡¡public class ClassLoaderTestServlet extends HttpServlet {
¡¡
¡¡ protected void service(HttpServletRequest req, HttpServletResponse res)
¡¡ ¡¡¡¡throws ServletException, IOException {
¡¡
¡¡¡¡System.out.println("inWeb : " + new InWeb()); // (1)
¡¡¡¡System.out.println("inEJB : " + new InEJB()); // (2)
¡¡¡¡}
¡¡}
¡¡------------------------------
¡¡¤ò¼Â¹Ô¤¹¤ë¤È
¡¡------------------------------
¡¡inWeb: com.example.web.InWeb@3e25a5
¡¡¥µ¡¼¥Ö¥ì¥Ã¥È ClassLoaderTestServlet ¤Ç service() ¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤»¤Þ¤»¤ó¤Ç¤·¤¿¡£
¡¡¥¹¥í¡¼¤µ¤ì¤¿Îã³°: java.lang.NoClassDefFoundError: com/example/web/InWeb
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ at com.example.ejb.InEJB.(InEJB.java:10)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ at com.example.web.ClassLoaderTestServlet.service(ClassLoaderTestServlet.java:20)
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ ...¡Êά¡Ë
¡¡------------------------------
¡¡ClassLoaderTestServlet¤Î(2)¤ÇÍî¤Á¤Æ¤¤¤ë¡£
¡¡¥¯¥é¥¹InWeb¤Ï¸«¤ì¤Æ¤ë¤¬¡¢¥¯¥é¥¹InEjb¤Ï¸«¤ì¤Æ¤Ê¤¤¡£
¡¡
¡¡¥¯¥é¥¹ClassLoaderTestServlet¤¬¥¯¥é¥¹InWeb¤ò»ÈÍѤ¹¤ë¤È¤­¤Ï¡¢
¡¡¥¯¥é¥¹ClassLoaderTestServlet¤ò¥í¡¼¥É¤·¤¿¥¯¥é¥¹¥í¡¼¥À¡¢
¡¡¤¹¤Ê¤ï¤ÁWAR¥¯¥é¥¹¥í¡¼¥À(»Ò¥¯¥é¥¹¥í¡¼¥À)¤¬¡¢¥¯¥é¥¹InWeb¤òõ¤·¤Ë¹Ô¤¯¡£
¡¡ÌäÂê¤Ê¤·¡£
¡¡
¡¡¥¯¥é¥¹ClassLoaderTestServlet¤¬¥¯¥é¥¹InEjb¤ò»ÈÍѤ¹¤ë¤È¤­¤Ï¡¢
¡¡¥¯¥é¥¹ClassLoaderTestServlet¤ò¥í¡¼¥É¤·¤¿¥¯¥é¥¹¥í¡¼¥À¡¢
¡¡¤¹¤Ê¤ï¤ÁWAR¥¯¥é¥¹¥í¡¼¥À¤¬¡¢¥¯¥é¥¹InEjb¤òõ¤·¤Ë¹Ô¤¯¡£
¡¡¤¬¡¢¼ÂºÝ¤Ï¡¢
¡¡¥Ç¥ê¥²¡¼¥·¥ç¥ó¥â¥Ç¥ë¤Ç¡¢¥¯¥é¥¹InEjb¤ò¥í¡¼¥É¤¹¤ë¤Î¤Ï
¡¡¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¥í¡¼¥À(¿Æ¥¯¥é¥¹¥í¡¼¥À)¡£
¡¡¢¨µ¯ÅÀ¥¯¥é¥¹¥í¡¼¥À¤¬WAR¥¯¥é¥¹¥í¡¼¥À(»Ò)¤«¤éAP¥¯¥é¥¹¥í¡¼¥À(¿Æ)¤ËÊѤï¤Ã¤Æ¤¤¤ë¡£
¡¡ÌäÂê¤Ê¤·¡£
¡¡
¡¡¤µ¤Æ¡¢InEjb¤ÎÃæ¿È¡£
¡¡¥¯¥é¥¹InEjb¤¬¥¯¥é¥¹InWeb¤ò»ÈÍѤ¹¤ë»þ¤Ï¡¢¥¯¥é¥¹InEjb¤ò¥í¡¼¥É¤·¤¿
¡¡¥¯¥é¥¹¥í¡¼¥À(µ¯ÅÀ¥¯¥é¥¹¥í¡¼¥À)¡¢¤¹¤Ê¤ï¤Á¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥¯¥é¥¹¥í¡¼¥À(¿Æ)¤¬¡¢
¡¡¥¯¥é¥¹InWeb(»Ò³¬ÁؤΥ¯¥é¥¹)¤òõ¤·¤Ë¹Ô¤¯¡£
¡¡¤¬¡¢
¡¡¥¯¥é¥¹InWeb¤ÏWAR¥¯¥é¥¹¥í¡¼¥À(»Ò)¤Ë¤¤¤ë¤Î¤Ç¡¢¿Æ¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¯¥é¥¹¥í¡¼¥À¤Ï
¡¡¸«¤Ä¤±¤é¤ì¤º¤Ë¡¢NoClassDefFoundError¤È¤Ê¤Ã¤Æ¤Þ¤¦¡£
¡¡
¡¡¤¢¤ë¥¯¥é¥¹¤¬¡¢²¼°Ì¥¯¥é¥¹¥í¡¼¥ÀÇÛ²¼¤·¤«Â¸ºß¤·¤Ê¤¤¥¯¥é¥¹¤Ë°Í¸¤·¤Æ¤¤¤ë¹½À®¤¬£Î£Ç¡ª
¡¡


ref:
http://www-06.ibm.com/jp/software/websphere/developer/j2ee/strategy/1.html

Velocity

¢£Velocity
Java¥Ù¡¼¥¹¤Î¥Æ¥ó¥×¥ì¡¼¥È¥¨¥ó¥¸¥ó
Web ¥Ú¡¼¥¸¤ä SQL¡¢PostScript ¤È¤¤¤Ã¤¿½ÐÎϤò¥Æ¥ó¥×¥ì¡¼¥È¤«¤éÀ¸À®
Java¥³¡¼¥É¤ÇÄêµÁ¤µ¤ì¤¿¥á¥½¥Ã¥É¤¬»²¾È²Ä
JSP¡¢PHP¤ÎÂåÂØÅª¤â¤Î

¢£VTL
Velocity ¥Æ¥ó¥×¥ì¡¼¥È¸À¸ì(VTL:Velocity Template Language)

¢¢VTL¼±ÊÌ»Ò
[±Ñ»ú]¤«¤é»Ï¤á [±Ñ¿ô»ú,¥Ï¥¤¥Õ¥ó,¥¢¥ó¥À¡¼¥¹¥³¥¢]¤Ç³¤±¤ë¤³¤È

¢¢VTL»Ø¼¨»Òǧ¼±»Ò[#]
»Ø¼¨»Ò¤Ï[#]¤Ç»Ï¤á¤ë¤³¤È

¢¢ÊÑ¿ôǧ¼±»Ò[$]
ÊÑ¿ô¤Ï[$]¤Ç»Ï¤á¤ë¤³¤È

¢¢Ãͼ±ÊÌ»Ò[°úÍÑÉä]
ÃͤÏ["]["]¤Ç°Ï¤à¤³¤È

¢¢¥³¥á¥ó¥È¼±ÊÌ»Ò
¡¦1¹Ô¥³¥á¥ó¥È
[##]¤Ç³«»Ï
¹ÔËö¤Ç½ªÎ»
¡¦Ê£¿ô¹Ô¥³¥á¥ó¥È
[#*]¤Ç³«»Ï
[*#]¤Ç½ªÎ»

¢£[VTL]¥ì¥Õ¥¡¥ì¥ó¥¹
3¼ïÎà
¡¦ÊÑ¿ô
¡¦¥×¥í¥Ñ¥Æ¥£
¡¦¥á¥½¥Ã¥É
¥ê¥Õ¥¡¥ì¥ó¥¹¤ò½ÐÆþ¤ê¤¹¤ë¤â¤Î¤Ï Á´¤ÆÊ¸»úÎ󥪥֥¸¥§¥¯¥È
ʸ»úÎ󥪥֥¸¥§¥¯¥È¤Ç¤Ê¤¤Êª¤Ï toString¤Ç±Æ¤Ç¶¯À©ÊÑ´¹

¢¢ÊÑ¿ô
Àµ¼°É½µ­¡§[$]¡Ü[{]¡ÜVTL¼±Ê̻ҡÜ[}]
´Êάɽµ­¡§[$]¡ÜVTL¼±ÊÌ»Ò
ÃÍ¤Ï [set]¼±Ê̻Ҥ«java¥³¡¼¥É¤«¤é¼èÆÀ

¢¢¥×¥í¥Ñ¥Æ¥£
Àµ¼°É½µ­¡§[$]¡Ü[{]¡ÜVTL¼±Ê̻ҡܥɥåÈ[.]¡Ü¾¤ÎVTL¼±Ê̻ҡÜ[}]
´Êάɽµ­¡§[$]¡ÜVTL¼±Ê̻ҡܥɥåÈ[.]¡Ü¾¤ÎVTL¼±ÊÌ»Ò
--------------------
$customer.Address
--------------------
customer¤Ç¼±Ê̤µ¤ì¤ëhashtable¤ò¸«¤Æ ¥­¡¼Address¤È´ØÏ¢¤Å¤±¤é¤ì¤ëÃÍ
¤«
$customer.Address()
¤òÆÀ¤ë

¢¢¥á¥½¥Ã¥É
Àµ¼°É½µ­¡§[$]¡Ü[{]¡ÜVTL ¼±Ê̻ҡÜVTL¥á¥½¥Ã¥É¥Ü¥Ç¥£¡Ü[}]
´Êάɽµ­¡§[$]¡ÜVTL ¼±Ê̻ҡÜVTL¥á¥½¥Ã¥É¥Ü¥Ç¥£
¡öVTL¥á¥½¥Ã¥É¥Ü¥Ç¥£
ɽµ­¡§VTL ¼±Ê̻ҡܺ¸³ç¸Ì[(]¡Ü¥Ñ¥é¥á¡¼¥¿/¥Ñ¥é¥á¡¼¥¿¥ê¥¹¥È(¥ª¥×¥·¥ç¥ó)¡Ü±¦³ç¸Ì[)]
--------------------
$purchase.getTotal()
$page.setTitle( "My Home Page" )
$!person.setAttributes( ["Strange", "Weird", "Excited"] )
--------------------

¢¢¥¨¥¹¥±¡¼¥×
VTLÆÃ¼ìʸ»ú¤Ï¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å[\]¤Ç¥¨¥¹¥±¡¼¥×
--------------------
#set( $hoge = "piyo" )
1.$hoge
2.\$hoge
3.\\$hoge
4.\\\$hoge
1.$hogehoge ##̤ÄêµÁÊÑ¿ô
2.\$hogehoge
3.\\$hogehoge
4.\\\$hogehoge
--------------------
1.piyo
2.$hoge
3.\piyo
4.\$hoge
5.$hogehoge
6.\$hogehoge
7.\\$hogehoge
8.\\\$hogehoge

¢¢Â羮ʸ»úÃÖ´¹
Velocity¤Ï Java¤Î¥¤¥ó¥È¥í¥¹¥Ú¥¯¥·¥ç¥óµ¡Ç½¤ÈBeanµ¡Ç½¤òÍøÍѤ·¤Æ
¥³¥ó¥Æ¥­¥¹¥ÈÆâ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤È¥ª¥Ö¥¸¥§¥¯¥È¥á¥½¥Ã¥É¤ÎξÊý¤Î¥ê¥Õ¥¡¥ì¥ó¥¹Ì¾¤ò²ò·è¤Ç¤­¤ë¡£
--------------------
$foo.getBar()
same as
$foo.bar

$data.getUser("jon")
same as
$data.user("jon")

$data.getRequest().getServerName()
same as
$data.Request.ServerName
same as
${data.Request.ServerName}
--------------------

¢¢ÄÀÌÛ¥ê¥Õ¥¡¥ì¥ó¥¹
Velocity ¤¬Ì¤ÄêµÁ¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤ËÁø¶ø¤·¤¿¤È¤­¡¢
Ä̾ï¤Îµóư¤È¤·¤Æ¡¢¥ê¥Õ¥¡¥ì¥ó¥¹¤Îµ­½Ò¤ò¤½¤Î¤Þ¤Þ½ÐÎϤ¹¤ë¡£
--------------------
$hoge ##̤ÄêµÁ¤Î¾ì¹ç [hoge]¤È½ÐÎϤµ¤ì¤ë
$!hoge ##̤ÄêµÁ¤Î¾ì¹ç [](¥Ö¥é¥ó¥¯)¤È½ÐÎϤµ¤ì¤ë
$!{hoge} ##̤ÄêµÁ¤Î¾ì¹ç [](¥Ö¥é¥ó¥¯)¤È½ÐÎϤµ¤ì¤ë
--------------------

¢£[VTL]»Ø¼¨»Ò
¥¹¥¯¥ê¥×¥ÈÍ×ÁÇ

¢¢[set]»Ø¼¨»Ò
¥ê¥Õ¥¡¥ì¥ó¥¹¤ÎÃͤòÀßÄê
½ñ¼°¡§#set( $ref = [ ", ' ]arg[ ", ' ] )
#set »Ø¼¨»Ò¤Ï¡¢¥ê¥Õ¥¡¥ì¥ó¥¹¤ÎÃͤò¥»¥Ã¥È¤¹¤ë¡£
Ãͤϡ¢ÊÑ¿ô¥ê¥Õ¥¡¥ì¥ó¥¹¤«¥×¥í¥Ñ¥Æ¥£¥ê¥Õ¥¡¥ì¥ó¥¹¤Ë¥»¥Ã¥È¤µ¤ì¤ë¡£

[[ÊÑ¿ô¤¬º¸Â¦¤ÇÃͤ¬±¦Â¦¤Ç[=]¤¬¶èÀÚ]]
º¸ÊÕ(LHS:LeftHandSide)¡§ÊÑ¿ô¥ê¥Õ¥¡¥ì¥ó¥¹/¥×¥í¥Ñ¥Æ¥£¥ê¥Õ¥¡¥ì¥ó¥¹
±¦ÊÕ(RHS:RightHandSide)¡§ÊÑ¿ô¥ê¥Õ¥¡¥ì¥ó¥¹/ʸ»úÎó¥ê¥Æ¥é¥ë/¥×¥í¥Ñ¥Æ¥£¥ê¥Õ¥¡¥ì¥ó¥¹/¥á¥½¥Ã¥É¥ê¥Õ¥¡¥ì¥ó¥¹/¿ôÃÍ¥ê¥Æ¥é¥ë/ÇÛÎó¥ê¥¹¥È(ArrayList)
--------------------
#set( $monkey = $bill ) ## ÊÑ¿ô¥ê¥Õ¥¡¥ì¥ó¥¹
#set( $monkey.Friend = "monica" ) ## ʸ»úÎó¥ê¥Æ¥é¥ë
#set( $monkey.Blame = $whitehouse.Leak ) ## ¥×¥í¥Ñ¥Æ¥£¥ê¥Õ¥¡¥ì¥ó¥¹
#set( $monkey.Plan = $spindoctor.weave($web) ) ## ¥á¥½¥Ã¥É¥ê¥Õ¥¡¥ì¥ó¥¹
#set( $monkey.Number = 123 ) ## ¿ôÃÍ¥ê¥Æ¥é¥ë
#set( $monkey.Say = ["Not", $my, "fault"] ) ## ÇÛÎó¥ê¥¹¥È

$monkey.Say.get(0) ## ¡á[Not]
--------------------

¢¨±¦ÊÕ¤¬null¤È¤·¤ÆÉ¾²Á¤µ¤ì¤¿¾ì¹ç¡¡ nullÃͤϺ¸ÊÕ¤ËÂåÆþ¤µ¤ì¤Ê¤¤¡£
¢¨[set]»Ø¼¨»Ò¤Ë¤Ï #end ʸ¤Ï¤Ê¤¤¡£

¢¢Ê¸»úÎó¥ê¥Æ¥é¥ë
["]¤Çʸ»úÎó¥ê¥Æ¥é¥ë¤ò°Ï¤à¤È Ãæ¿È¤¬¥Ñ¡¼¥¹¡¿½èÍý¤µ¤ì¤ë¡£
¢¨[']¤Ï ¥Ð¡¼¥¹¤µ¤ì¤Ê¤¤¡£
¢¨[']¤Î¥Ñ¡¼¥¹¤Ï [velocity.properties]#[stringliterals.interpolate=false]¤ÇÊѹ¹²Ä
--------------------
#set( $directoryRoot = "www" )
#set( $templateName = "index.vm" )
#set( $template = "$directoryRoot/$templateName" )
$template

#set( $foo = "bar" )
$foo
#set( $blargh = '$foo' )
$blargh

#set($prefix = "prefix")
#set($suffix = "suffix")
#set($hoge = "$prefix$suffix")
$hoge
--------------------
¢­
--------------------
www/index.vm

bar
$foo

prefixsuffix
--------------------

¢¨»»½Ñ¼°¤âµ­½Ò²Ä
¡¦²Ã»»: #set( $value = $foo + 1 )
¡¦¸º»»: #set( $value = $bar - 1 )
¡¦¾è»»: #set( $value = $foo * $bar )
¡¦½ü»»: #set( $value = $foo / $bar )
¡¦¾ê;: #set( $value = $foo % $bar )


¢¢if/elseif/elseʸ
¾ò·ïʬ´ô
½ñ¼°¡§ #if( [condition] ) [output] [ #elseif( [condition] ) [output] ] * [ #else [output] ] #end
--------------------
#if ($foo == $bar)
AND
#elseif ( $foo || $bar )
OR
#else ( !$foo ) ## NOT SAME AS [$!foo](ÄÀÌÛ¥ê¥Õ¥¡¥ì¥ó¥¹)
NOT
#end
--------------------

¢¢foreachʸ
¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ê¥¹¥È¤Ç¥ë¡¼¥×
½ñ¼°¡§ #foreach( $ref in arg ) statement #end
¢¨Vector¡¢Hashtable¡¢ÇÛÎó¤Î¾ì¹ç¤Î¤ß»ÈÍѲÄ
--------------------
<'ul>
#foreach( $product in $allProducts )
<'li>$product<'/li>
#end
<'/ul>
--------------------
¢¨¥ë¡¼¥×¥«¥¦¥ó¥¿ÊÑ¿ô¤Ï ¥Ç¥Õ¥©¥ë¥È1
([velocity.properties]#[directive.foreach.counter.initial.value]¤ÇÊѹ¹²Ä)

¢¢include
¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥Ý¡¼¥È
½ñ¼°¡§#include( arg[, arg2, ... argn] )
¥Õ¥¡¥¤¥ë¤Ï¡¢#include»Ø¼¨»Ò¤¬ÄêµÁ¤µ¤ì¤ë°ÌÃÖ¤ËÁÞÆþ¤µ¤ì¤ë¡£
¥Æ¥ó¥×¥ì¡¼¥È¥¨¥ó¥¸¥ó¤Ç¤ÎÃæ¿È¤Î½èÍý¤Ï¤·¤Ê¤¤¡£
¢¨TEMPLATE_ROOT°Ê²¼¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë¤À¤±¥¤¥ó¥Ý¡¼¥È²Ä
--------------------
#include( "one.gif","two.txt","three.htm" )
--------------------

¢¢parse
VTL¤ò´Þ¤à¥í¡¼¥«¥ë¥Õ¥¡¥¤¥ë¤Î¥¤¥ó¥Ý¡¼¥È
½ñ¼°¡§#parse( arg )
¢¨TEMPLATE_ROOT°Ê²¼¤Ë¤¢¤ë¥Õ¥¡¥¤¥ë¤Î¤ß¥¤¥ó¥Ý¡¼¥È²Ä
--------------------
#parse( "parsefoo.vm" )
--------------------

¢¢#stop
¥Æ¥ó¥×¥ì¡¼¥È¥¨¥ó¥¸¥ó¤Î¼Â¹Ô¤òÄä»ß

¢¢#macro
Velocimacro
VTL¥Æ¥ó¥×¥ì¡¼¥È¤Î¥»¥°¥á¥ó¥È¤Î·«¤êÊÖ¤·
½ñ¼°¡§ #macro( vmname $arg1[, $arg2, $arg3, ... $argn ] ) [ VM VTL code... ] #end


ref:
http://www.jajakarta.org/velocity/velocity-1.3.1/docs-ja/user-guide.html

Àµµ¬É½¸½

ÆÃ¼ìʸ»úÎó
. ^ $ [ ] * + ? | ( )
¢ª¥á¥¿Ê¸»úÎó

¥á¥¿Ê¸»úÎó¤òñ¤Ê¤ëʸ»ú¤È¤·¤Æ»È¤¦¾ì¹ç¤Ï[\]¤òÁ°¤Ë­¤¹
\. \^ \$ \[ \] \* \+ \? \| \( \) \\

¢¢¤È¤Ë¤«¤¯²¿¤Ç¤â¤¤¤¤1ʸ»ú[.]
Ⱦ³Ñ¤Î[.]¤Ç ¤È¤Ë¤«¤¯¤Ê¤ó¤Ç¤â¤¤¤¤£±Ê¸»ú¤òɽ¸½
ex. »ä¤Ï...¤¬..¢ª»ä¤ÏÁᵯ¤­¤¬¶ì¼ê

¢¢¹Ô¤ÎÀèÆ¬¤ÈºÇ¸å[^$]
¹Ô¤ÎÀèÆ¬¤äºÇ¸å¤Ë¤Î¤ß¸ºß¤¹¤ëʸ»úÎó¤ò¸¡º÷¤·¤¿¤¤¾ì¹ç¤Ë[^$]
ex. ^¤¢¤ê¤¬¤È¤¦¢ª¤¢¤ê¤¬¤È¤¦¤«¤é»Ï¤Þ¤ë¤â¤Î
¡¡¡¡¤¢¤ê¤¬¤È¤¦$¢ª¤¢¤ê¤¬¤È¤¦¤Ç½ª¤ï¤ë¤â¤Î

¢¢Æ±¤¸Ê¸»ú¤Î·«¤êÊÖ¤·[* + ?]
Ʊ¤¸Ê¸»ú¤Î·«¤êÊÖ¤·¤òɽ¤¹Àµµ¬É½¸½¤Ï [*]¡¢[+]¡¢[?]¤Î£³¤Ä
¡¦[*]:[*]¤ÎľÁ°¤Îʸ»ú¤¬0¸Ä°Ê¾åϢ³¤¹¤ë¤«
¡¡ex. ¤ª¡¼*¤¤¢ª¤ª¤¤¡¢¤ª¡¼¤¤¡¢¤ª¡¼¡¼¡¼¤¤
¡¦[+]:[+]¤ÎľÁ°¤Îʸ»ú¤¬1¸Ä°Ê¾åϢ³¤¹¤ë¤«
¡¡ex. ¤ª¡¼+¤¤¢ª¤ª¡¼¤¤¡¢¤ª¡¼¡¼¡¼¤¤
¡¦[?]:[?]¤ÎľÁ°¤Îʸ»ú¤¬0¸Ä¤«1¸Ä¤À¤±Â¸ºß¤¹¤ë¤«
¡¡ex. Windows?¢ªWindow¡¢Windows

¢¢²¿¤Ç¤â¤¤¤¤Ê¸»ú¤ÎϢ³[.*]
[* + ?]¤Ï[.]¤ÈÊ»ÍѲÄ
ex. ¥³¡¼¥Ò¡¼¤¬¹¥¤­.*¡£¢ª¥³¡¼¥Ò¡¼¤¬¹¥¤­¤Ç¤¹¡£¡¢¥³¡¼¥Ò¡¼¤¬¹¥¤­¤«¤â¤Í¡£
¡¡¡¡[.]¤¬[*]¤Ç¤¢¤ë¤â¤Î¢ª²¿¤Ç¤â¤¤¤¤1ʸ»ú¤¬0¸Ä°Ê¾åϢ³¤¹¤ë¤â¤Î

¢¢¤¤¤º¤ì¤«¤Îʸ»úÎó[|]
| ¤Ç¶èÀÚ¤é¤ì¤¿Ê¸»úÎó¤Î¤¤¤º¤ì¤«¤Îʸ»úÎó¤¬Â¸ºß¤¹¤ë¤â¤Î
ex. hoge|piyo¢ªhoge¡¢piyo

¢¢»ØÄꤷ¤¿Ê¸»ú¤Î¤É¤ì¤«[[]]
[]Ãæ¤Î¤É¤ì¤«£±¤Ä¤Ë¹çÃפ¹¤ë¤â¤Î
ex. º£Æü¤Ï[À²ÆÞ±«]¤Ç¤¹¢ªº£Æü¤ÏÀ²¤Ç¤¹
¡¡¡¡£Á[A-Z]£Ã¢ª£ÁB£Ã
¡¡¡¡£±[0-9]£¸¢ª£±0£¸
¡¡¡¡£Á[^A-Z0-9]£Ú¢ª£Á¡Ý£Ú
¡¡¡¡[]¤ÎÃæ¤Ç^¢ª£Ø£Ø°Ê³°¢ª2ÈÖÌܤÎʸ»ú¤Ï¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤È¿ô»ú°Ê³°¤Îʸ»ú

¢¢¥°¥ë¡¼¥×²½[()]
¤Þ¤È¤á¤Æ¿ôʸ»úñ°Ì¤Ç½èÍý
ex. (¤¸¤ã)+¡¼¤ó¢ª¤¸¤ã¡¼¤ó¡¢¤¸¤ã¤¸¤ã¡¼¤ó
¡¡¡¡ÌÀÆü(¤Ü¤¯|¤ï¤¿¤·)¤Ïµ¢Â𤷤ޤ¹¢ªÌÀÆü¤Ü¤¯¤Ïµ¢Â𤷤ޤ¹¡¢ÌÀÆü¤ï¤¿¤·¤Ïµ¢Â𤷤ޤ¹


ref:
http://www.mnet.ne.jp/~nakama/

JSP#include

JSP¤Ë¡¢³°Éô¤ÎJSP¥Ú¡¼¥¸¤äHTML¥Ú¡¼¥¸¤òinclude¤¹¤ë¼êÃʤϣ²¤Ä

£±¡¥include¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¡§<'%@ include file="¥Õ¥¡¥¤¥ë̾" %>
£²¡¥include¥¢¥¯¥·¥ç¥ó¡§<'jsp:include page="¥Õ¥¡¥¤¥ë̾" />

¢¢include¥Ç¥£¥ì¥¯¥Æ¥£¥Ö
¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¦¤ÎJSP¥Ú¡¼¥¸¡Ê¿Æ¥Ú¡¼¥¸¡Ë¤Î¥³¥ó¥Ñ¥¤¥ë»þ¤Ë¡¢
¥¤¥ó¥¯¥ë¡¼¥É¤µ¤ì¤ë¦¤ÎJSP¥Ú¡¼¥¸¤äHTML¥Ú¡¼¥¸¡Ê»Ò¥Ú¡¼¥¸¡Ë¤¬
¿Æ¥Ú¡¼¥¸¤Î°ìÉô¤È¤·¤ÆÁÞÆþ¤µ¤ì¤ë¡£
¢ÍÀÅŪ¤Ê¥¤¥ó¥¯¥ë¡¼¥Éµ¡Ç½

¢¢include¥¢¥¯¥·¥ç¥ó
Web¥Ö¥é¥¦¥¶¤¬¿Æ¥Ú¡¼¥¸¤ò¥ê¥¯¥¨¥¹¥È¤¹¤ë¤¿¤Ó¤Ë
»Ò¥Ú¡¼¥¸¤Î¥³¥ó¥Æ¥ó¥Ä¤¬¥ì¥¹¥Ý¥ó¥¹¤ËÁÞÆþ¤µ¤ì¤ë¡£
¢ÍưŪ¤Ê¥¤¥ó¥¯¥ë¡¼¥Éµ¡Ç½

¢¢Ê¸»ú²½¤±ÂнèË¡
page¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Î
¡¦contentType°À­
¡¦pageEncoding°À­
¤òµ­½Ò¤¹¤ë¡£

¢¢contentType°À­
JSP¥Ú¡¼¥¸½ÐÎÏ»þ¤Îʸ»ú¥³¡¼¥É¡¢¤ª¤è¤ÓContent-Type¥Ø¥Ã¥À¤Ë»ØÄꤹ¤ëʸ»ú¥³¡¼¥É̾¤ò»ØÄꤹ¤ë

¢¢pageEncoding°À­
JSP¥Ú¡¼¥¸ÆÉ¤ß¹þ¤ß»þ¤Îʸ»ú¥³¡¼¥É¤ò»ØÄꤹ¤ë

pageEncoding¤Ï¾Êά²Ä
¾Êά»þ¤ÏcontentType°À­¤ÎÃͤ¬»ÈÍѤµ¤ì¤ë

contentType°À­¤ÎËÜÍè¤ÎÌÜŪ¤Ï¡ÖHTTP¥ì¥¹¥Ý¥ó¥¹¤ËÍѤ¤¤ëʸ»ú¥³¡¼¥É¤Î»ØÄê¡×
¢ª£±²ó¥»¥Ã¥È¤¹¤ì¤ÐOK¡£
¢ª»Ò¥Ú¡¼¥¸Â¦¤Ë¤ÏÉÔÍס£
¤¬¡¢
»Ò¥Ú¡¼¥¸¤ËcontentType¤òµ­½Ò¤»¤ó¤È
¥µ¡¼¥Ö¥ì¥Ã¥È¡¦¥³¥ó¥Æ¥Ê
¤¬»Ò¥Ú¡¼¥¸¤Îʸ»ú¥³¡¼¥É¤òȽÊ̤¹¤ë¼êΩ¤Æ¤¬¤Ê¤¯¤Ê¤ê
»Ò¥Ú¡¼¥¸Éôʬ¤Îʸ»ú²½¤±¤¬È¯À¸¤·¤Æ¤·¤Þ¤¦¡£
¤Ç¡¢
»Ò¥Ú¡¼¥¸¤Ë¤Ï¡¢
ÆÉ¤ß¹þ¤ß»þ¤Îʸ»ú¥³¡¼¥É¤òÅÁ¤¨¤ë¼êÃʤȤ·¤Æ
pageEncoding°À­¤À¤±¤òµ­½Ò¤·¤Æ¤ª¤¯¡£

¤Ä¤Þ¤ê¡¢
¡¦¿Æ¥Ú¡¼¥¸¡§contentType°À­¤Çʸ»ú¥³¡¼¥É¤ò»ØÄꤹ¤ë
¡¦»Ò¥Ú¡¼¥¸¡§pageEncoding°À­¤Çʸ»ú¥³¡¼¥É¤ò»ØÄꤹ¤ë


ref:
http://www.atmarkit.co.jp/fjava/rensai3/mojibake04/mojibake04.html

Shift-JIS & Windows-31J

¢¢NG:charset=Windows-31J
======
content="text/html; charset=Windows-31J">
======
cuz.
charset=Windows-31J¤À¤È
PHP¤ÎDOMDocument::loadHTMLFile()´Ø¿ô¤Ç¾å¼ê¤¯ÆÉ¤ß¹þ¤á¤Ê¤¤

Windows-31J¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÏShift-JIS¤ÈƱ¤¸
¤¬¡¢
PHP¤ÏÉÔÌÀ¤Ê¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤È¸«¤Ê¤·¤ÆÊÑ´¹¤¹¤ë

¤¦¤ó¤Ì¤ó¤Ì¤ó¡Ä

ref:
http://d.hatena.ne.jp/eggtoothcroc/20060214

¢¢Windows-31J¤ÏShift-JIS¤ò³ÈÄ¥¤·¤¿¤â¤Î
CP932=MS932=MS´Á»ú¥³¡¼¥É=Windows-31J¢âShift JIS

ref:
http://q.hatena.ne.jp/1167447698

Encoding stg

¢¢¤½¤â¤½¤â
Java¤Ï ÆâÉôŪ¤Ëʸ»úÎó¡ÊString·¿¡Ë¤òUnicode¡ÊUCS-2¡Ë¤ÇÊÝ»ý¡£
¤½¤Î¤¿¤á¡¢
Java¤Ø¤Îʸ»úÎó¤ÎÆþ½ÐÎϤǤÏɬ¤º Unicode¤È¤Î´Ö¤Ç¥³¡¼¥ÉÊÑ´¹¤¬È¯À¸¡£
ÆÃ¤Ë¡¢
Java¤Î¥³¡¼¥ÉÊÑ´¹¤Ç¤Ï¡¢
Âбþ¤¹¤ë¥³¡¼¥É¥Ý¥¤¥ó¥È¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡È¡©¡É¤ËÊÑ´¹¤µ¤ì¤ë¡£
¢Íʸ»ú²½¤±

¥×¥é¥¹¡¢
Java°Ê³°¤ÎÉôʬ¤Ç¤âȯÀ¸¤¹¤ë¡ª
ex
¥Õ¥¡¥¤¥ëžÁ÷»þ¤Î¥³¡¼¥ÉÊÑ´¹
¥Ö¥é¥¦¥¶¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°ÀßÄê

¢¢Weblogic#EncodingStgPoint
üñ HTTP¥ê¥¯¥¨¥¹¥È
¡¡servlet:
¡¡¡¡¡¦¥½¡¼¥¹¥³¡¼¥ÉÃæ¤ÎServletRequest#setCharacterEncoding
¡¡¡¡¡¦weblogic.xml ¤Î
¡¡¡¡¡¦weblogic.xml¤Î
¡¡JSP:
¡¡¡¡¡¦weblogic.xml ¤Î
¡¡¡¡¡¦weblogic.xml¤Î
üò HTTP¥ì¥¹¥Ý¥ó¥¹
¡¡servlet:
¡¡¡¡¡¦¥½¡¼¥¹¥³¡¼¥ÉÃæ¤ÎServletResponse#setContentType
¡¡¡¡¡¦weblogic.xml¤Î
¡¡JSP:
¡¡¡¡¡¦page¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ÎcontentType¤Î»ØÄê
¡¡¡¡¡¦weblogic.xml¤Î
üó Servlet¡¿JSPÆâ¤Îʸ»úÎó(¥³¥ó¥Ñ¥¤¥ë»þ)
¡¡servlet:
¡¡¡¡¡¦¥½¡¼¥¹¥³¡¼¥É¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤­¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Î»ØÄê
¡¡JSP:
¡¡¡¡¡¦JSPÃæ¤Îpage¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤ÎcontentType¤Î»ØÄê
üô weblogic.log¡¿¥³¥ó¥½¡¼¥ë¤Ø¤Î¥í¥°½ÐÎÏ
¡¡¡¡¡¦Java¤Î¥Ç¥Õ¥©¥ë¥È¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¡Êµ¯Æ°¤¹¤ë¥æ¡¼¥¶¡¼¤Î¥í¥±¡¼¥ë¡Ë
üõ JDBC¤Ë¤è¤ëDB¤Ø¤Î¥¢¥¯¥»¥¹(Oracle¤Î¾ì¹ç)
¡¡¡¡¡¦DB¤Îʸ»ú¥³¡¼¥É¥»¥Ã¥È
¡¡¡¡¡¦WebLogicµ¯Æ°¥æ¡¼¥¶¡¼¤ÎNLS_LANG´Ä¶­ÊÑ¿ô
¡¡¡¡¡¦¥³¥Í¥¯¥·¥ç¥ó¥×¡¼¥ë¤Îweblogic.codeset¥×¥í¥Ñ¥Æ¥£

¢¢Shift-JIS
JSP¤Î¥³¡¼¥ÉÊÑ´¹¤Ë±Æ¶Á¤òÍ¿¤¨¤¦¤ëÀßÄê
üñ¡¥JSPÆâ¤Îpage¥Ç¥£¥ì¥¯¥Æ¥£¥Ö
¡¡¡¡<%@ page contentType="text/html; charset=Shift_JIS" %>
üò¡¥weblogic.xml¤Îcharset-mapping¤Î»ØÄê
¡¡¡¡
¡¡¡¡¡¡Shift_JIS
¡¡¡¡¡¡MS932
¡¡¡¡

üñ
page¥Ç¥£¥ì¥¯¥Æ¥£¥Ö#contentType#charset¤Ï¡¢
HTTP¥ì¥¹¥Ý¥ó¥¹¤Î¥Ø¥Ã¥À¤ËÍøÍѤµ¤ì¤ë¡£
HTTP¤ÏJava¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ç¤Ï¤Ê¤¯¡¢
iana¤Çµ¬Äꤵ¤ì¤Æ¤¤¤ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄꤹ¤ë¤³¤È¡£
¢ªpage¥Ç¥£¥ì¥¯¥Æ¥£¥Ö¤Î»ØÄê¤Ï¡¢Java¤Î Shift_JIS¤Ç¤Ï¤Ê¤¯¡¢iana¤ÎShift_JIS*2¤Ç¤¢¤ë¡£

¤³¤ÎEncoding»ØÄê¤Ï¡¢JSP¤ò¥³¥ó¥Ñ¥¤¥ë¤¹¤ë¤È¤­¤Ë¤â»ÈÍѤµ¤ì¤ë
¤¬¡¢
Shift_JIS¤ò¤½¤Î¤Þ¤ÞJava¤ÎShift_JIS¤È¤·¤Æ°·¤¦¤Î¤ÏÌäÂê¤ä¤â¡£
Java#Shift_JIS¤Ï
MS932 or SJIS ¤ÎÊÌ̾¤È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤ë¡ª
¢¨ JDK 1.3¤Ç¤ÏMS932¤À¤¬¡¢JDK 1.4¤Ç¤ÏSJIS¤È¤Ê¤ë¡£

¤½¤³¤Ç¡¢
üò
WebLogic¤Ç¤Ï¡¢
weblogic.xml#charset-mapping¤Ë¡¢
iana¤Î charset¤òJava¤Îcharset¤Ë¥Þ¥Ã¥Ô¥ó¥°¤¹¤ë»ØÄê¤òÀߤ±¤Æ¡¢
ÌÀ¼¨Åª¤ËJava¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ò»ØÄê¡£

¢¢°ÅÌÛ¤Îʸ»ú¥³¡¼¥ÉÊÑ´¹
JSP¤Î¥³¥ó¥Ñ¥¤¥ë¤Ç¤Ï¡¢
JSP¥Õ¥¡¥¤¥ë¢ªJava¥½¡¼¥¹¡Êby Servlet¡Ë¢ªclass¥Õ¥¡¥¤¥ë
¢Í£²Ãʳ¬¤Î¥³¥ó¥Ñ¥¤¥ë
Á°¼Ô¤Î¥³¥ó¥Ñ¥¤¥ë¡áJSPC
¸å¼Ô¤Î¥³¥ó¥Ñ¥¤¥ë¡ájavac

¢Írequest¤«¤éresponse¤Þ¤Ç£´Ãʳ¬¤Î¥³¥ó¥Ñ¥¤¥ë

ʸ»ú²½¤±¤·¤¿¾ì¹ç¡¢¤É¤ÎÃʳ¬¤Çʸ»ú²½¤±¤¿¤Î¤«¤ò¥¯¥ê¥¢¤Ë¡ª

¢¢javac¤Îencoding
java¤Ç¤Ïµ¯Æ°¤¹¤ë¥æ¡¼¥¶¤ÎLANGÀßÄê¤Ë¤è¤Ã¤Æ
¥Ç¥Õ¥©¥ë¥È¤Îencoding¤¬·è¤á¤é¤ì¤Æ¤¤¤ë¡£
ex
LANGÀßÄê¡ája_JP.PCK¢ªSJIS¤Ç¥³¥ó¥Ñ¥¤¥ë


ref:
http://www.atmarkit.co.jp/fjava/rensai2/webopt08/webopt08.html

mime

¢£MIME type
in web, there are two main concepts; extension of file and mine type.
MIME¥¿¥¤¥×¡á¡Ö¥¿¥¤¥×̾/¥µ¥Ö¥¿¥¤¥×̾¡×¤Î·Á¼°¤Îʸ»úÎó
WEB¥µ¡¼¥Ð¡¼¤ÈWEB¥Ö¥é¥¦¥¶¤Î´Ö¤Ï¤³¤ÎMIME¥¿¥¤¥×¤òÍѤ¤¤Æ¥Ç¡¼¥¿¤Î·Á¼°¤ò»ØÄê¡£
such as
+ ¥Æ¥­¥¹¥È
¢ª.txt, text/plain
+ HTMLʸ½ñ
¢ª.htm .html, text/html
+ XMLʸ½ñ
¢ª.xml, text/xml
+ JavaScript
¢ª.js, text/javascript
+ VBScript
¢ª.vbs, text/vbscript
+ CSS
¢ª.css, text/css
+ GIF²èÁü
¢ª.gif, image/gif
+ JPEG²èÁü
¢ª.jpg(.jpeg), image/jpeg
+ PNG²èÁü
¢ª.png, image/png
+ CGI¥¹¥¯¥ê¥×¥È
¢ª.cgi, application/x-httpd-cgi
+ Wordʸ½ñ
¢ª.doc, application/msword
+ PDFʸ½ñ
¢ª.pdf, application/pdf
+ any other ref http://www.iana.org/assignments/media-types/index.html
cf.
x-hogehoge means

when a browser ask a webServer a hoge.gif,
server gonna return the hoge.gif telling that this is a data of image/gif-type.
so that,
browser can operate the hoge.gif correctly.

but,
some browser like IE ignore the info of mime-type, and trust the info of extension of the file.
and
some ignore the both info, and checking the content of file, display the file as HTML because the content looks like HTML document. its a unnecessary favors!

so,
mine-type is not perfect.

¢£how to set MIME¥¿¥¤¥×
it is different depends on the webServer.
if webServer is Apache,
there is a file named hoge.htaccess. using this file to specify the MIME.
so,
create a file with the name "hoge.htaccess" under the directory same as other data like hoge.html.
and
write following in the hoge.htaccess.
"AddType text/html .html"
so that,
webServer gonna send the .html file as a data of text/html mime-type.
the setting is not necessary for .html and .gif files cuz provider-side gonna do that for those file.
but you have to do the setting for something like CGI and RealAudio

¢£excel file download
for downloading and saving a excel file;
application/octet-stream

for displaying a excel file on a browser;
application/vnd.ms-excel


ref:
¤È¤Û¤Û¤ÎWWWÆþÌç
http://www.tohoho-web.com/wwwxx015.htm

web.xml

what in web.xml#web-app

servlet
- servlet-name
- servlet-class
sevlet-mapping
- servlet-name
- url-pattern
welcome-file-list
- welcome-file
error-page
- error-code
- location
taglib
- taglib-uri
- taglib-location

Top|Next »

HOME

09 | 2008/10 | 11
Æü ·î ²Ð ¿å ÌÚ ¶â ÅÚ
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

QR

name:
mail:
title:
body:

N/A