æåã«ã EHcacheã«ã€ããŠããäžåºŠèª¬æããŸãã ããã¯ãJavaçšã®é«æ§èœã§ã¹ã±ãŒã©ãã«ãªãã£ãã·ã¥ã·ã¹ãã ã§ãããæçããæ·±å»ãªãããžã§ã¯ãã§ãã ãã£ãã·ã¥ãªãã·ã§ã³ã¯ãRAMãšãã£ã¹ã¯ãã£ãã·ã¥ã®äž¡æ¹ã§äœ¿çšã§ãããŸãçµã¿åãããæŠç¥ã§ã䜿çšã§ããŸãïŒä»®æ³ãã·ã³ãŸãã¯ãµãŒããŒã®åèµ·åæã«ããŒã¿ã®å®å šæ§ã確ä¿ãããªãã·ã§ã³ããããŸãïŒã ã¹ã±ãŒã©ããªãã£ã¯ã JGroup ãJMSãRMIã䜿çšããéåæã¬ããªã±ãŒã·ã§ã³ãšãã£ãã·ã¥ã¯ã©ã¹ã¿ãªã³ã°ã䜿çšããŠå®è£ ãããŸãããµãŒãããŒãã£è£œåïŒTerracotaïŒã«åºã¥ããŠåæ£ã·ã¹ãã ãæ§ç¯ããããšãã§ããŸãã ç§ã¯äœãããåé æ§ã奜ãã§ã-åãã£ãã·ã¥ã®åå¥ã®èšå®ïŒåæ/éåæã¬ããªã±ãŒã·ã§ã³ïŒãšãåãJVMïŒãŸãã¯ç°ãªãïŒå ã§ããã€ãã®ç°ãªãã€ã³ã¹ã¿ã³ã¹ãå®è¡ããæ©èœãšã®çµã¿åããã EHCacheã¯ããŒã¿ãJVMããã»ã¹ã®ã¡ã¢ãªã«æ ŒçŽããããšã«æ³šæããå¿ èŠããããŸãããããã«å¿ããŠããã®ããªã¥ãŒã ã«ããã€ãã®å¶éã課ããããŸãïŒ32ãããã·ã¹ãã äžïŒãã誰ããã£ã¹ã¯ãã£ãã·ã¥ããã£ã³ã»ã«ãããæ·±å»ãªãµãŒããŒã¯ãã§ã«64ãããã§ãã 20 GB以äžã®ããŒã¿ãããæ¢ç¥ã®ã€ã³ã¹ããŒã«ã ããã«ããã«ãã¹ã¬ããæ©èœã競äºåã®ããã¢ã¯ã»ã¹ããã«ãã³ã¢ã®å©çšã¯ååã«ãµããŒããããŠããŸãïŒããã§å°ãè°è«ããããšãã§ããŸããã JBoss Cacheã¯ãã©ã³ã¶ã¯ã·ã§ã³ããã®ä»ã®å©ç¹ããµããŒããããŠãããããããã§ããã«åªããŠããããã§ãããåŠç¿ãšãã®APIã¯ç解ããã®ãéåžžã«è€éã§ãããEHcacheãããã«éå§ãããäžæ¹ã§ã2ã€ã®æ¹æ³ã§ãããç解ããããšã¯ã§ããŸããã§ããã
ãã£ãã·ã¥ã¯éåžžã«é«éã§ããããã¯ãŒã¯ã§å©çšå¯èœãªãã¹ãã§ä»ã®ãã£ãã·ã³ã°ã·ã¹ãã ãããåªããŠããŸãïŒãã ãã4å°ã®ãã·ã³ã®ã¯ã©ã¹ã¿ãŒã§ã¯JBoss Cacheãè¥å¹²è¯ãçµæã瀺ããŸãããããã¯å°ã人æ°ã®ããMemcachedãå«ãïŒã EHcacheã¯ã€ã³ããã»ã¹ãã£ãã·ã¥ã§ãããmemcachedã¯ç¬ç«ããããŒã¢ã³ã§ãããå€éšãããã¯ãŒã¯ãµãŒãã¹ãšããŠæ©èœãããããæ¯èŒãå°ãééã£ãŠããããšãç¥ã£ãŠããŸãïŒãããã£ãŠããã®ãããªãã£ãã·ã¥ãµã€ãºã®å¶éã¯ãããŸããïŒã åæã«ãehcacheã®ã»ããæè»æ§ãšã¹ã±ãŒã©ããªãã£ãã¯ããã«åªããŠãããããã¡ã¢ãª/ãã£ã¹ã¯ãšåŸ®èª¿æŽããããã£ãã·ã¥èšå®ã®çµã¿åããã«ãããehcacheãæãŸãããšæ¯èŒãããšããŸãã ããã§ç§ã¯æèã«èšªããŸãã... memcachedã®ä»£ããã«ïŒãŸãã¯äžç·ã«ïŒEHcacheã䜿çšããããšã¯å¯èœã§ããã䜿ãæ £ããPHPãã©ãããã©ãŒã ã®ãŸãŸã§ããïŒ ã¯ããã§ããŸãïŒ
åé¡ã¯ããã£ãã·ã¥èªäœã«å ããŠãéçºè ã®ã³ââãã¥ããã£ããã£ãã·ã¥RESTãµãŒããŒãå®è£ ããRESTã€ã³ã¿ãŒãã§ã€ã¹ãŸãã¯SOAPãéããŠã¢ã¯ã»ã¹ã§ããããšã§ãã ãã®ãããªãœãªã¥ãŒã·ã§ã³ã¯ãçµã¿èŸŒã¿ããŒãžã§ã³ã®Sun GlassFish v3 PreludeãµãŒããŒã«åºã¥ããŠäœæãããå¿ èŠãªãã¹ãŠã®ã³ã³ããŒãã³ããšäŸåé¢ä¿ãå«ããŠèªçµŠèªè¶³ã§ãã ãµãŒããŒã§ã®äœæ¥ã¯ãGET / POST / PUT / DELETE / OPTIONS / HEADã¡ãœããã䜿çšããHTTPçµç±ããŸãã¯XMLçµç±ã®SOAPïŒHTTPã®äžéšïŒçµç±ã§è¡ãããŸãã ããŒãã¢ã©ã€ããLast-ModifiedãETagãªã©ããã¹ãŠã®HTTP / 1.1æ©èœããµããŒããããŠããŸããã€ãŸãããµãŒããŒã¯ãã¹ãŠã®æ£ããããããŒãæäŸããŸãããããã£ãŠãéä¿¡äžãŸãã¯ã¯ã©ã€ã¢ã³ãèªäœã§äžéããŒãã®çµã¿èŸŒã¿ãã£ãã·ã¥ã䜿çšã§ããããšããããããŸãã èå³æ·±ãç¹ã¯ãããã€ãã®ããŒã¿åœ¢åŒãåŠçããæ©èœãæ£ç¢ºã«ã¯ãèŠæ±ã«æ£ããMIMEã¿ã€ãããããŒãèšå®ããã®ã«ååãªXMLãŸãã¯JSON圢åŒã§åçãååŸããæ©èœã§ãã
ãã®ãããæåéãã¯ã³ã¯ãªãã¯ã§ãã·ã³ãã«ã§ãããããããããã³ã«ã§ã¢ã¯ã»ã¹å¯èœãªãã£ãã·ã¥ãµãŒããŒãèµ·åããHTTPãªã¯ãšã¹ãããµããŒãããä»»æã®èšèªãŸãã¯ãã©ãããã©ãŒã ãããã£ãã·ã¥ãµãŒããŒã«ã¢ã¯ã»ã¹ããããšãã§ããŸãã ãã£ãŠã¿ãŸãããïŒ
SourceForgeã§ææ°ã®ãµãŒããŒããŒãžã§ã³ãããŠã³ããŒãã§ããŸãããææ°ã®ãã£ãã·ã¥ããŒãžã§ã³ã®é åžãããã䞊è¡ããŠããŠã³ããŒããããµãŒããŒãã¡ã€ã«ãæŽæ°ããããšããå§ãããŸãã以åã®ããŒãžã§ã³ã®ãã£ãã·ã¥ã䜿çšããããã§ãã çŸåšãããŒãžã§ã³0.7ã®ehcache-standalone-serverã«é¢å¿ããããŸãã
é åžãããã«ã¯ãå®è¡ããã¹ã¯ãªãããREADMEãèªãã¹ã¯ãªããããŸãã¯libãã£ã¬ã¯ããªã«ç§»åããŠæåã§å®è¡ããã¹ã¯ãªãããæ¢ã«å«ãŸããŠããŸãã
java -jar ./ehcache-standalone-server-0.7.jar 8080 ../war * This source code was highlighted with Source Code Highlighter .
java -jar ./ehcache-standalone-server-0.7.jar 8080 ../war * This source code was highlighted with Source Code Highlighter .
java -jar ./ehcache-standalone-server-0.7.jar 8080 ../war * This source code was highlighted with Source Code Highlighter .
ã¡ã€ã³ãµãŒããŒãã¡ã€ã«ãæå®ããåŸãããã䜿çšå¯èœã«ãªãããŒãçªå·ãšãWebã¢ããªã±ãŒã·ã§ã³ïŒwarãã¡ã€ã«ïŒã®ãããã£ã¬ã¯ããªãžã®ãã¹ããããŸãã èµ·ååŸãã³ã³ãœãŒã«ã§æ¥ç¶ã®é²è¡ç¶æ³ãšãå®è¡äžã®ãµãŒãã¹ãšããŒãã«é¢ããæ å ±ã衚瀺ãããŸããããšãã°ããã®æ¹æ³ã§JMXãµãŒãã¹ã管çã«äœ¿çšã§ããããŒãã確èªã§ããŸãã GlassFishãµãŒããŒã®çµã¿èŸŒã¿ããŒãžã§ã³ïŒããã¯WebãµãŒããŒãšã¢ããªã±ãŒã·ã§ã³ãµãŒããŒã®äž¡æ¹ïŒã䜿çšãããããããã®èšå®ãšæ©èœã¯éåžžã«å°ãããªããŸãããGlassFishã§ãªããæ¬æ ŒçãªãµãŒããŒããã€ã§ããããã€ã§ããEHcacheãµãŒããŒã®ã¿ã䜿çšã§ããŸããåå¥ã«ãWebãµãŒããŒãªãã
ããã©ã«ãã§ã¯ããã£ãã·ã¥ã¯/ ehcache / restã§å©çšã§ããŸã-ãã©ãŠã¶ã«ã¢ã¯ã»ã¹ããããGETãªã¯ãšã¹ããå®è¡ããããšã«ãããçŸåšã®ãã¹ãŠã®ãã£ãã·ã¥èšå®ã®èª¬æãå«ãXMLããã¥ã¡ã³ããååŸããŸãã æåã«ãæ§æãã¡ã€ã«ã«ã¯ãããã€ãã®ãã£ãã·ã¥ã®èª¬æãå«ãŸããŠããŸãïŒããšãã°ãããã€ãã®ãã£ãã·ã¥ãå«ãŸããŠããŸãïŒã éå§ããã«ã¯ããã¹ãŠã®åºæ¬èšå®ãåé€ããç¬èªã®ãã£ãã·ã¥ãäœæããããšããå§ãããŸãã ã¬ããªã±ãŒã·ã§ã³ã®ãªãåçŽãªãã£ãã·ã¥ã¯ãããã§è¡ããŸãã
ãã¹ãŠã®ãã£ãã·ã¥èšå®ã¯ãç·šéãã1ã€ã®xml-file /war/WEB-INF/classes/ehcache.xmlã«éäžããŠããŸãã å éšã«ã¯ãã¹ãŠã®ãªãã·ã§ã³ã®ã³ã¡ã³ããšèª¬æãããããããã®ã§ãå®éšãç¶ããããã«åºæ¬çãªãã£ãã·ã¥ãäœæããæ¹æ³ã«ã€ããŠç°¡åã«èª¬æããŸãã
ãããã®ãªãã·ã§ã³ã®æå³ïŒ
- name-ã¢ã¯ã»ã¹ã«äœ¿çšããããã£ãã·ã¥ã®ååïŒURLå ã«ãããããã³ã³ãã³ãã«åãå¶éã課ããããŸããäœããã-ä¿åãããããŒã¿ã®çš®é¡ãçãæ確ã«ç€ºãïŒã åäžã®ãµãŒããŒã¯ãç°ãªãååã®å€ãã®ãã£ãã·ã¥ãæã€ããšãã§ããŸãã
- maxElementsInMemory-ã¡ã¢ãªã«é 眮ãããèŠçŽ ã®æ倧æ°
- maxElementsOnDisk-ãã£ã¹ã¯äžã®èŠçŽ ã®æ倧æ°ïŒ0-å¶éãªãïŒ
- eternal-ãã£ãã·ã¥ã©ã€ãèšå®ãç¡èŠã§ããããšã瀺ããŸããæåã§åé€ãããŸã§ãèŠçŽ ã¯åžžã«ãã£ãã·ã¥å ã«ãããŸã
- overflowToDisk-ã¡ã¢ãªå ã®ãªããžã§ã¯ãã®æ倧æ°ã«éããå Žåã«ã¢ã€ãã ããã£ã¹ã¯ã«ããã·ã¥ã§ãããã©ããã瀺ããŸã
- timeToIdleSeconds-ãªããžã§ã¯ããžã®æåŸã®ã¢ã¯ã»ã¹ããç¡å¹ãšå®£èšããããŸã§ã®æéïŒãªããžã§ã¯ããæ°žé ãšããŠããŒã¯ãããŠããªãå ŽåïŒã ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒ
- timeToLiveSeconds-èŠçŽ ã®æå¹æéïŒããŒãžã§ã³1.6以éãééããªããã°ããã®ãªãã·ã§ã³ã¯åã ã®ãã£ãã·ã¥ãªããžã§ã¯ãããšã«èšå®ã§ããŸãïŒ
- diskPersistent-åèµ·åéã®ãã£ã¹ã¯äžã®ãã£ãã·ã¥ã¹ããŒã¿ã¹ã®ä¿åã瀺ããŸã
- diskExpiryThreadIntervalSeconds -TTLïŒæå¹æéïŒã®æå¹æéã«ã€ããŠãã£ã¹ã¯äžã®ãªããžã§ã¯ãããã§ãã¯ããããã»ã¹ãéå§ããé »åºŠã
- diskSpoolBufferSizeMB-ãã£ã¹ã¯æžã蟌ã¿ããããã¡ãªã³ã°ããããã«ãã£ãã·ã¥ã«å²ãåœãŠãããããŒã«ã®ãµã€ãºã ããŒã«ããã£ã±ãã«ãªããšããã£ãã·ã¥ã¹ããŒã¿ã¹æžã蟌ã¿ã³ãã³ããéåæçã«åŒã³åºãããŸã
- memoryStoreEvictionPolicy-ã©ã®ãã£ãã·ã¥ãªããžã§ã¯ãããã£ã¹ã¯ã«ããã·ã¥ãããã決å®ããããã®æŠç¥ã瀺ããŸãã LRUïŒLeast Recently UsedïŒãæçµäœ¿çšæ¥ãFIFOïŒå å ¥ãå åºããæåã®è¿œå ãæåã®æ··éïŒãããã³LFUïŒäœ¿çšé »åºŠã®äœãã䜿çšé »åºŠïŒ
ã¬ããªã±ãŒã·ã§ã³ãªãã·ã§ã³ã«ã€ããŠã¯ãŸã 説æããŠããŸãããããã¯è©³çŽ°ãªç¹ç°æ§ã§ãããæèœãªã¹ãã·ã£ãªã¹ãã詳ãã説æããå¿ èŠããããŸãã
*ãã®ãœãŒã¹ã³ãŒãã¯ã ãœãŒã¹ã³ãŒããã€ã©ã€ã¿ãŒã§åŒ·èª¿è¡šç€ºãããŸããã
- < ãã£ãã·ã¥ å = "testRestCache"
- maxElementsInMemory = "10000"
- eternal = "true"
- timeToIdleSeconds = "0"
- timeToLiveSeconds = "0"
- overflowToDisk = "true"
- diskSpoolBufferSizeMB = "4"
- maxElementsOnDisk = "1000000000"
- diskPersistent = "true"
- diskExpiryThreadIntervalSeconds = "3600"
- memoryStoreEvictionPolicy = "LFU"
- />
ãããã£ãŠããã£ãã·ã¥ã¯ãã¡ã¢ãªå ã«1äžåã®èŠçŽ ããã£ã¹ã¯äžã«10ååã®èŠçŽ ãä¿æããããã«æ§æãããåèµ·åéã®ããŒã¿ã®æŽåæ§ã確ä¿ããããã«ãã©ã€ãã¿ã€ã èšå®ã䜿çšããŸããã ç§ãéžæãããã£ã¹ã¯èšé²çšã®ããŒã«ã®ããªã¥ãŒã ã¯éåžžã«å°ããããã£ã¹ã¯èŠçŽ ã®å¯¿åœããã§ãã¯ããæéã¯éåžžã«é·ãã§ãïŒãããããã£ãšçæ³çã«ã¯å¿ èŠã ãšæããŸã-ç¡å¹ã«ã§ãããã©ããèŠãŠã¿ãŸãããïŒã ãã®æ§æã¯äœã®ããã§ããïŒ ç§ã¯ããã®ãã£ãã·ã¥ã«åºã¥ããŠåçŽãªããŒå€ããŒã¿ããŒã¹ãäœæããããšã«èå³ããããŸãïŒä»æ¥ãããã¯éåžžã«äººæ°ã®ãããããã¯ã§ãïŒããå€éšãµãŒãã¹ããã³PHP Webã¢ããªã±ãŒã·ã§ã³å ãããã£ãã·ã¥ã«çŽæ¥ã¢ã¯ã»ã¹ã§ããããã«ããŸãã 泚æç¹-ã©ã€ãã¿ã€ã ãã§ãã¯ãäžèŠã§ãäžå®ã®ãã£ãã·ã¥ãå¿ èŠãªå Žåã§ããtimeToIdle / timeToLiveãã©ã¡ãŒã¿ãŒã0ã«èšå®ããªãã§ãã ãããããããªããšããµãŒããŒãèµ·åããªãå ŽåããããŸãïŒãã£ãã·ã¥ãµãŒãã¹ããµãŒããŒãèµ·åããŠ404ãšã©ãŒãçºçããŸãïŒã
確èªããã«ã¯ãç·šéããehcache.xmlãã¡ã€ã«ãä¿åãããµãŒããŒãåèµ·åããŸãã ãã©ãŠã¶ã®URLãéããŸãïŒ localhost ïŒ8080 / ehcache / rest / testRestCache-ãã¹ãŠã®ãã£ãã·ã¥èšå®ãããã³çŸåšã®ãã£ãã·ã¥äœ¿çšçµ±èšïŒããªã¥ãŒã ãããŒã¿éãããããšãã¹ã®å²åïŒãå«ãXMLããã¥ã¡ã³ããååŸããå¿ èŠããããŸã-å°æ¥ãããã¯éã¢ã»ã³ãã«ã§ããŸãããã°ã©ã ã§ç®çã®åœ¢åŒã§è¡šç€ºããïŒããšãã°ã管çããã«ïŒã
å°æ¥çã«ã¯ãRESTããŒãã®ã¿ãæ€èšããŸããSOAPã䜿çšããã«ã¯ãæ®ãã®URLãsoapã«å€æŽããããWSDL圢åŒã§ãµãŒãã¹ã®èª¬æãååŸãããããå¿ èŠããããŸãã ããã©ãŒãã³ã¹ã®ããã«ãäžèŠãªãã£ãã·ã¥ãSOAPãããã³ã«çµç±ã®ã¢ã¯ã»ã¹ãªã©ãæªäœ¿çšã®ãã®ããã¹ãŠãªãã«ããŸããã ãµãŒãã¬ããèšå®ã¯ã / war / WEB-INFãã£ã¬ã¯ããªã®web.xmlãã¡ã€ã«ã§å©çšã§ããŸãã
ãã£ãã·ã¥ã®æäœã¯ãHTTPãããã³ã«ãä»ããŠèŠæ±ãéä¿¡ããå¿çã解æããããšã§æ§æãããŸãã ãšã©ãŒã®å Žåãå¿çã¯ããã¹ã/ãã¬ãŒã³åœ¢åŒã§ãèŠæ±æ¬æã«ã¯ãšã©ãŒããã¹ããå«ãŸããHTTPã³ãŒãã¯404ã«ãªããŸããããšãã°ãååšããªããã£ãã·ã¥ãŸãã¯èŠçŽ ã«å€æŽããå Žåãå¿çã¯ãElement not foundïŒ333ãè¡ã«ãªããŸãïŒããŒ333ã®ã¢ã€ãã ããªã¯ãšã¹ãããŸããïŒã ããããããã¯EHcacheãµãŒãã¬ããã«ãã£ãŠæäŸãããURLã«åœãŠã¯ãŸããŸãããšã©ãŒãå¥ã®éšåã«ããå ŽåãGlassFishããæšæºã®404ãšã©ãŒããŒãžãååŸããŸããããã¯èªå解æã«ã¯ããŸãé©ããŠããŸããã
ãµãŒããŒå šäœã§ïŒãã£ãã·ã¥ãããŒãžã£ãŒã䜿çšããŠïŒäœæ¥ããããšãããã£ãã·ã¥ãšèŠçŽ ããšã«åå¥ã«äœæ¥ããããšãã§ããŸãããã®ããã«ã¯ãURLè¡ãè¿œå ããŠããã©ã¡ãŒã¿ãŒã§ç®çã®ã¡ãœããã䜿çšããŸãã
ãã£ãã·ã¥å šäœïŒCacheManagerïŒã®å ŽåïŒ
- OPTIONS-ã¡ãœããã¯ã䜿çšå¯èœãªæäœã®èª¬æãWADL圢åŒïŒ Webã¢ããªã±ãŒã·ã§ã³èšè¿°èšèª ïŒã§è¿ããŸã
- GET-ãµãŒããŒã§äœ¿çšå¯èœãªãã£ãã·ã¥ãšãã®ãã©ã¡ãŒã¿ãŒã®ãªã¹ããXML圢åŒã§è¿ããŸãã ããã¯ãäžã§è¡ã£ãããã«ããã©ãŠã¶ãä»ããéåžžã®ãªã¯ãšã¹ãã§ããããšãã°ã localhost ïŒ8080 / ehcache / rest /
éå±€ã®ããã«äžã§ãURLã«ç¹å®ã®ãã£ãã·ã¥åãæå®ãããšã次ã®æäœãå®è¡ã§ããŸãã
- OPTIONS-äžèšãšåæ§ãå©çšå¯èœãªæäœã®WADLèšè¿°ãè¿ããŸã
- HEAD-ãã£ãã·ã¥ãã©ã¡ãŒã¿ã®èª¬æãšãšãã«åãã¡ã¿ããŒã¿ãè¿ããŸãããHTTPããããŒã®åœ¢åŒã§ãããå¿çæ¬æã§ã¯ãããŸããïŒGETãªã©ïŒ
- GET-ãã£ãã·ã¥ãã©ã¡ãŒã¿ãŒãšãã®çµ±èšãå«ãXMLããã¥ã¡ã³ãã
- PUT-ããã©ã«ãã®ãã£ãã·ã¥èšå®ïŒæ§æãã¡ã€ã«ã§æå®ïŒã«åºã¥ããŠãæ°ãããã£ãã·ã¥ïŒURLæååã§ååãæå®ãããŠããïŒãäœæã§ããŸãã
- DELETE -URLã§æå®ããããã£ãã·ã¥ãåé€ããŸãã åé€ã¯ãããŸãããã¯ãªã¢ãããŸããïŒãã£ãã·ã¥èŠçŽ ã«å¯Ÿããæäœã®äžã§ãããã«ã¯å¥ã®ã³ãã³ãããããŸãããå¥åŠãªããšã«ïŒã次ã®ãµãŒããŒã®ãªããŒããŸã§ã¯ããã§ãïŒãã ãããã®ç¹ã¯ãŸã 確èªããŠããŸããïŒã
ãã£ãã·ã¥èŠçŽ ã¬ãã«ã§ã¯ã次ã®æäœããµããŒããããŠããŸãã
- OPTIONS-äžèšãšåæ§ãå©çšå¯èœãªæäœã®WADLèšè¿°ãè¿ããŸã
- HEAD-èŠçŽ ã®å 容ãHTTPããããŒã®æååãšããŠè¿ããŸãïŒããã§ã¯ãã«ãã«ãããŸããããããŸããä»ã®å Žåã¯HEADãGETãè€è£œããããããã£ãã·ã¥èŠçŽ ã«ã€ããŠã¯å€ã§ã¯ãªãã¡ã¿ããŒã¿ãè¿ãããšã瀺ãããŠããŸãïŒã
- GET-å¿çæ¬æã®ãã£ãã·ã¥èŠçŽ ã®ã³ã³ãã³ããçŽæ¥è¿ããŸãã
- PUT-ããŒã¿ããã£ãã·ã¥ã«å ¥ããŸãã ããŒã¿èªäœã¯ãªã¯ãšã¹ãæ¬æã§éä¿¡ãããURLã®ãªããžã§ã¯ãåãããã³ãªãã·ã§ã³ã®ãã©ã¡ãŒã¿ãŒãlifetimeã¯ããehcacheTimeToLiveSecondsããšããååã®HTTPããããŒã§æž¡ãããšãã§ããŸãããã©ã¡ãŒã¿ãŒããªãå Žåããã£ãã·ã¥ã®èª¬æã®ãã©ã¡ãŒã¿ãŒã䜿çšãããæå¹ãªå€ã®éé-0ïŒæ°žä¹ ïŒ... 2147483647ïŒçŽ69æ³ïŒã
- DELETE-æå®ãããã¢ã€ãã ãåé€ããŸãã ãã£ãã·ã¥ã®ãã¹ãŠã®èŠçŽ ãåé€ããå¿ èŠãããå Žåã¯ããã¹ã¯*ã䜿çšããŸããä»ã®ã¡ãœãããããããµããŒãããŠããªãã®ã¯æ®å¿µã§ãïŒã€ãŸãããã£ãã·ã¥èªäœã¯JavaAPIã§å®å šã«ãµããŒãããŠããŸãããRESTã¬ãã«ã§ã¯ãã«ãgetã¯ãããŸããïŒã
ã¢ã€ãã ããã£ãã·ã¥ã«ä¿åãããšããMIMEã¿ã€ããïŒãµããŒããããŠãããã®ã®ãªã¹ãããïŒæå®ã§ããŸããæœåºãããšãå¿ èŠãªããŒã¿ãããã«ååŸãããŸãã 以äžããµããŒããããŠããŸãã
- ããã¹ã/ãã¬ãŒã³-ãã¬ãŒã³ããã¹ããŸãã¯ä»»æã®ããŒã¿
- text / xml- RFC 3023ã«æºæ ããXMLããã¥ã¡ã³ã
- application / json-æãèå³æ·±ãJSON圢åŒïŒ RFC 4627ã«æºæ ïŒ
- application / x-java-serialized-object-ã·ãªã¢ã«åãããJavaãªããžã§ã¯ã
å®éãããã¯ãµãŒããŒèªäœã®å šäœçãªèª¬æã§ããä»ã§ã¯ãå®çšçãªéšåã¯ãPHPã®Webã¢ããªã±ãŒã·ã§ã³ãããµãŒããŒãæäœããæ¹æ³ã§ãã æåã®ã¢ã€ãã¢ã¯ãMendcachedã®ã¯ã©ã¹ãšåæ§ã«ã Zend Frameworkã®ç¹å¥ãªãã£ãã·ã¥ããã¯ãšã³ããäœæããããšã§ããããæåã¯ãã¹ãŠã®åäœãå®éšããããšã«ããŸããã ãããããç§ä»¥å€ã®èª°ã«ãšã£ãŠãèå³æ·±ãæçšãªãã®ã§ããã°ããã®ãããªã¯ã©ã¹ãæžãã§ãããã
Zend Frameworkãå®éšã«äœ¿çšããŸããç¹ã«ãHTTPãªã¯ãšã¹ããåŠçããã¯ã©ã¹ïŒ Zend_Http_Client ïŒãšJSONãåŠçããã¯ã©ã¹ïŒ Zend_Json ïŒã䜿çšããŸãã
ãŸãããµãŒããŒãžã®æ¥ç¶ã確ç«ããå¿ èŠããããŸãã Zend_Httpã¯ãã®ããã®ããã€ãã®ãªãã·ã§ã³ãæäŸããŸãããç°ãªãã¢ããã¿ãŒããããŸããããã¹ãã«ãããšããœã±ããã¢ããã¿ãŒãæéã§ããããšãå€æããŸããããã£ãã·ã¥ãµãŒããŒããªã¢ãŒãã§ä»ã®æ¹æ³ã§å°éã§ããªãå Žåã¯ãCurlãæåŸã«äœ¿çšããŸãïŒããšãã°ãSSLã䜿çšããå¿ èŠããããŸãããããã¯ãã£ãã·ã¥ã®å¥åŠãªèŠä»¶ã§ãããå Žåã«ãã£ãŠã¯ä¿®æ£ãå¿ èŠã§ã-ãœã±ããã¯sslã䜿çšã§ããŸãïŒã
ããŒãžå ã§1ã€ã®ãªã¯ãšã¹ããè¡ããªãããšãåæã«ãæ倧ããã©ãŒãã³ã¹ã«åºã¥ããŠæ¥ç¶ãªãã·ã§ã³ã説æããŸãã
*ãã®ãœãŒã¹ã³ãŒãã¯ã ãœãŒã¹ã³ãŒããã€ã©ã€ã¿ãŒã§åŒ·èª¿è¡šç€ºãããŸããã
- $ _config =é åïŒ
- 'timeout' => 5
- 'maxredirects' => 1
- 'httpversion' => 1.1ã
- 'adapter' => 'Zend_Http_Client_Adapter_Sockets' ã
- 'options' =>é åïŒ
- 'persistent' => true ã
- ïŒã
- 'keepalive' => true
- ïŒ;
ã¡ã€ã³URLã¯æ¬¡ã®ãšããã§ãïŒ $ _url = 'httpïŒ// localhostïŒ8080 / ehcache / rest / testRestCache';
æåã®äŸã§ã¯ã倧ããªé åïŒ$ _SERVERïŒã®å 容ããã£ãã·ã¥ããJSONãããŒã¿åãšããŠèšå®ããŸãïŒæåã«é åãJSONã«å€æããŠããéä¿¡ããŸãïŒã
*ãã®ãœãŒã¹ã³ãŒãã¯ã ãœãŒã¹ã³ãŒããã€ã©ã€ã¿ãŒã§åŒ·èª¿è¡šç€ºãããŸããã
- //æ¥ç¶ãªããžã§ã¯ããäœæããŸã
- $ ehcache_connect = new Zend_Http_ClientïŒ 'httpïŒ// localhost' ã$ _configïŒ;
- //ãã£ãã·ã¥å ã®ãªããžã§ã¯ãã®ååããã®äžæã®ID
- $ _chache_item_name = 'testitem1' ;
- //èŠçŽ ãžã®ãã«ãã¹ãèšå®ããŸã
- // localhostïŒ8080 / ehcache / rest / testRestCache / testitem1
- $ ehcache_connect-> setUriïŒ$ _ urlã ' /'ã$ _chache_item_nameïŒ;
- // JSONã䜿çšããŠããããšã瀺ããŸã
- $ ehcache_connect-> setHeadersïŒ 'Content-type' ã 'application / json' ïŒ;
- //ã¡ãœãããèšå®ããŸã
- $ ehcache_connect-> setMethodïŒZend_Http_Client :: PUTïŒ;
- // JSONã§ãšã³ã³ãŒããããããŒã¿ãè¿œå ããŸã
- $ ehcache_connect-> setRawDataïŒZend_Json :: encodeïŒ$ _ SERVERïŒïŒ;
- //ããã ãã§ãïŒ ç§ãã¡ã¯èŠæ±ãæºãããŸã
- $ response = $ ehcache_connect-> requestïŒïŒ;
- // Zend_Http_Responseã¯ã©ã¹ã®ãªããžã§ã¯ããšããŠçããåŸãŸãã
- if ïŒ$ response-> isSuccessfulïŒïŒïŒ
- {
- //ãã¹ãŠãæ£åžžã§ããããªã¯ãšã¹ããæåãããµãŒããŒãã³ãŒã200ã§æ£ããHTTPã¬ã¹ãã³ã¹ãè¿ãã
- echo 'ãªã¯ãšã¹ãOKïŒ' ;
- }
- ä»ã«
- {
- echo $ response-> getMessageïŒïŒ;
- }
ããã§é åãååŸããŸããããã¯ãURLãå€æŽããããšããã§ããããªã¯ãšã¹ãã®ã¿ã€ããå€æŽããã ãã§ãæ®ãã¯åã®ã³ãŒããšåãã§ãïŒ
*ãã®ãœãŒã¹ã³ãŒãã¯ã ãœãŒã¹ã³ãŒããã€ã©ã€ã¿ãŒã§åŒ·èª¿è¡šç€ºãããŸããã
- //ãªããžã§ã¯ãã®URL
- $ ehcache_connect-> setUriïŒ$ _ urlã ' /'ã$ _chache_item_nameïŒ;
- //ã¡ãœãã
- $ ehcache_connect-> setMethodïŒZend_Http_Client :: GETïŒ;
- //ãªã¯ãšã¹ããå®è¡ããŸã
- $ _result = $ ehcache_connect-> requestïŒïŒ;
- //ãã¹ãŠãåé¡ãªãå Žå
- if ïŒ$ _result-> isSuccessfulïŒïŒïŒ
- {
- //ãªã¯ãšã¹ãã®æ¬æãååŸããJSONããArrayã«ãã³ãŒãããŸã
- $ _json_res = Zend_Json :: decodeïŒ$ _ result-> getBodyïŒïŒãZend_Json :: TYPE_ARRAYïŒ;
- //衚瀺
- Zend_Debug :: dumpïŒ$ _ json_resïŒ;
- }
- ä»ã«
- {
- echo $ response-> getMessageïŒïŒ;
- }
æ®ãã®ã³ãã³ãã¯åãæ¹æ³ã§æå®ã§ããŸãã æåã«å°ãå¶éãããŸãããZend_Httpã¯HEADãªã¯ãšã¹ãããµããŒãããŠããŸããããéåžžã¯ä»ã®ãªã¯ãšã¹ããè€è£œããããããããã®ãªã¯ãšã¹ãã¯ããŸãå¿ èŠãããŸããã 2çªç®ã®äžäŸ¿-ãã£ãã·ã¥ãŸãã¯ç¹å®ã®èŠçŽ ã«é¢ããã¡ã¿ããŒã¿ã¯XML圢åŒã§æäŸãããŸãããèŠçŽ ã¯JSONã§ã䜿çšã§ããŸãã çµ±èšã¯ãã¹ãŠã®ããŒã¿ãšãšãã«æäŸãããŸãããå¥ã®ããŒãžã«é 眮ããããšããå§ãããŸãã 3çªç®ã®äžäŸ¿-ããŒã¿ãæœåºããã³è¿œå ããæ©èœãéçºãããŠããŸããã ããã«ããã€ãã®èŠçŽ ãé 眮ãŸãã¯èŠæ±ããããšã¯ã§ããŸããïŒãã ããJava APIèªäœã¯ããã§ãïŒã ããããäžåºŠã«ãã¹ãŠãåé€ããããšã¯ããªãå¯èœã§ãã ããŠãã»ãã¥ãªãã£ã¯æ±ºããŠä¿èšŒãããªãã®ã§ãå€éšã«HTTPã¢ã¯ã»ã¹ã§æ©å¯ããŒã¿ãä¿åããªãã§ãã ããã
çµè«ãšããŠããã®ç 究ã®äž»ãªã¢ã€ãã¢ã«ã€ããŠã話ããŸãã JSONã§çŽæ¥ããŒã¿ãåä¿¡ã§ããWebãµãŒããŒããã¹ãŠã®HTTPæ©èœããµããŒãããŠãããããAJAXãªã©ã®ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³ã¯ãã£ãã·ã¥ãšçŽæ¥å¯Ÿè©±ããããŒã¿ãèŠæ±ããŠJSONã§åä¿¡ãããšããµãŒããŒåŽã¯æ°ããããŒã¿ãéåæã§ã¢ããããŒãããŸã圌ãããããšãã ã¯ã©ã€ã¢ã³ãèªèº«ãæåã«ãã£ãã·ã¥ã«ããŒã¿ããããã©ããã確èªã§ãããªãå Žåã¯ãµãŒããŒåŽã«çŽæ¥é£çµ¡ããŸãã
ãã£ãã·ã¥ã·ã£ãŒãã£ã³ã°ãšè² è·åæ£ã®å®è£ ãéåžžã«ç°¡åã§ãã ãšããã§ããã«ãã€ã³ã«ã¯ç®¡çããã«ããã©ãã£ãã¯ã®gzipå§çž®ãããŒããã©ã³ãµãŒãªã©ã®äŸ¿å©ãªæ©èœããªããããGlassFishã®ãã«ããŒãžã§ã³ã«åºã¥ããŠãµãŒããŒããããã€ããããšããå§ãããŸãã nginxããã³ããšã³ãã䜿çšããããšãã§ããŸããããã«ããããµãŒããŒéã®è² è·ãåæ£ãããJavaãä»ããŠãµãŒããŒéã§ããã¯ã°ã©ãŠã³ãã§è€è£œãããŸãã HTTPãããã³ã«ã¯ã·ã³ãã«ã§éåžžã«æè»ã§ãããããHTTPãšJavaãã©ãããã©ãŒã ã®æ©èœãçµã¿åãããŠããã£ãã·ã³ã°ãµãŒããŒã®åäœã«é¢ããããããæŠç¥ãå®è£ ã§ããŸãã
PSããã©ãŒãã³ã¹ã«ã€ããŠäžèšã ãã¡ãããç§ã®ãã¹ãã¯æ¬ç©ãšã¯ã»ã©é ããã®ã§ãããä¿¡é Œã§ãããã®ã§ã¯ãªãããŸã£ããæå³ããããŸããã çŽ æã®æºåäžã«ç§ã®ãã·ã³ïŒéçºããŒãããã¯ã1.5 GB RAM / Celeron M 1.7 GHzãWinXP SP3ïŒã§åãåã£ãå¹³åå€-0.020-0.025ç§ã èªã¿åã/æžã蟌ã¿æäœæïŒcURLã䜿çšããå ŽåãçŽ2åã®é·ãïŒã ãã¡ãããã¬ããªã±ãŒã·ã§ã³ãšè² è·åæ£ã䜿çšããŠãªãã·ã§ã³ããã¹ãããããšã¯èå³æ·±ãã§ãããããã¯ãŸã£ããç°ãªãã¬ãã«ã§ãããåãã§åå ããŠçµæã確èªããŸãã
PPS質åã«çãã-ãªãããããã¹ãŠãªã®ãïŒ å Žåã«ãã£ãŠã¯ãããæè»ãªãã£ãã·ã¥èšå®ãããŒã¿æ°žç¶æ§ãããŸããŸãªã¬ããªã±ãŒã·ã§ã³ã·ã¹ãã ãæäŸããå®å šã«æ¡åŒµãããŠåæ£ãããã¯ã©ã€ã¢ã³ãã·ã¹ãã ïŒAJAXïŒã«ãã£ãŠããŒã¿ãçŽæ¥åä¿¡ã§ãããããåãmemcachedã§ããä»ã®ãã£ãã·ã¥ã·ã¹ãã ã眮ãæããããšãã§ããŸãã åæã«ãJavaã§ããã¯ãšã³ãã®äžéšãŸãã¯ãã¹ãŠãå®è¡ããŠããå Žåãããã«ããŒã¿ãè¿œå ããã®ãã¯ããã«ç°¡åã«ãªããŸãã EHcacheã¯éåžžã«ã¹ã±ãŒã©ãã«ã§ä¿¡é Œæ§ã®é«ãããŒå€ããŒã¿ããŒã¹ãšããŠãæ©èœããæ·±å»ãªã¬ãã«ã®ã¬ããªã±ãŒã·ã§ã³ãšã¯ã©ã¹ã¿ãªã³ã°ãæäŸããŸããå€ãã®æ°ãããœãªã¥ãŒã·ã§ã³ãšã¯ç°ãªããehcacheã«ã¯éçºãšæé©åã®é·ãæŽå²ããããŸãã
RESTã€ã³ã¿ãŒãã§ãŒã¹ãæäŸãããµãŒãã¬ããèªäœã®ã¿ãååŸãã Tjwsãªã©ã®é«éã§æ倧éã«è»œéãªWebãµãŒããŒã«é 眮ãããšãã©ã€ããã©ã³ãµãŒãè¿œå ãããåãã£ãã·ã¥ã«åå¥ã®JVMãå²ãåœãŠãããŸãïŒ2ããŒãã¯ã©ã¹ã¿ãŒã®ãããã€æ¬è³ªçã«åç©çãµãŒããŒïŒ-åªããã¹ã±ãŒã©ããªãã£ãåããã¯ããã«é«éã§è»œéã®ã·ã¹ãã ãååŸããŸãã ãµãŒãã¬ãããã»ãã®æ°è¡è¿œå ãããšãä»ã®ãããã³ã«/圢åŒã®ãµããŒããæŽçã§ããŸã-Thrift / Google ProtoBuffãä»ããŠããŒã¿ãåä¿¡ããæ©èœãåãããã£ãã·ã¥ã¯ãã¯ã©ã€ã¢ã³ããã·ã³äžã«ãããã®ãããã³ã«ã®ã¯ã©ã€ã¢ã³ããããå ŽåïŒJSããã³ActionScriptïŒã ç 究åéã¯åºããŠé¢çœãã§ããã