Amazon.co.jp ¥¦¥£¥¸¥§¥Ã¥È

xi-cholo Lab.

# | Home | Nonsense | Paper | DownLoad | #
#
.¥á¥¤¥ó¥á¥Ë¥å¡¼

.ºÇ¶á¤Î¥³¥á¥ó¥È

.¸¡º÷

[¥×¥ì¥¹¥Ö¥í¥°]²ÁÃͤ¢¤ë¥Ö¥í¥°¤Ë·ÇºÜÎÁ¤ò¤ª»Ùʧ¤¤¤·¤Þ¤¹¡£
#Paper

2009ǯ12·î25Æü(¶âÍËÆü)

GAE/J¤Çsmartgwt¤òÍøÍѤ¹¤ëÊýË¡

¥«¥Æ¥´¥ê¡¼: - xi-cholo @ 00»þ04ʬ24ÉÃ

GAE/J¤Çsmartgwt¤ò¤½¤Î¤Þ¤ÞÍøÍѤ·¤¿¾ì¹ç¡¢¥Õ¥¡¥¤¥ë¿ôÀ©¸Â¤Ë¤«¤«¤Ã¤¿¤ê¤¹¤ë¤Î¤ÇZIP¤Ë¸Ç¤á¤ÆServlet¤ÇÊÖ¤¹¤è¤¦¤Ë¤¹¤ë¡£
¸µ¥Í¥¿¤Ï¤É¤³¤«¤Î¥µ¥¤¥È¤«¤é¼è¤Ã¤ÆÍ褿¤â¤Î¤À¤±¤É¹â®²½¤Î°Ù¤Ëmemcache¤È¥¯¥é¥¤¥¢¥ó¥È¤Î¥­¥ã¥Ã¥·¥å¤¬¸ú¤¯¤è¤¦¤ÊÊýË¡¤ò¼è¤Ã¤Æ¤¤¤Þ¤¹¡£

  • smartgwt¤¬ºîÀ®¤¹¤ëÀÅŪ¥Õ¥¡¥¤¥ë¤òZIP¤Ç¸Ç¤á¤ë
  • smartgwt¤ò¥³¥ó¥Ñ¥¤¥ë¤·¤ÆºîÀ®¤µ¤ì¤ësc¥Ç¥£¥ì¥¯¥È¥ê¡Ê/war/*/sc¡Ë¤òZIP¤Ç°µ½Ì¤·¤Æ¡¢warľ²¼¤ËÇÛÃÖ¤¹¤ë¡£

  • ZIP¤«¤é¥ê¥½¡¼¥¹¤òÊÖ¤¹Servlet¤òÇÛÃÖ¤¹¤ë
  • ¥½¡¼¥¹¤Ï²¼µ­¤Î´¶¤¸¡£
    ¡ö¡ö¡ö¡ö¡ö¡ö¡ö¡ö¡öÉôʬ¤Ë¤Ï¡¢GWT¤Î¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È̾¡Ê/war/*/sc¤Î*¤Î¤È¤³¤í¡Ë¤òÆþ¤ì¤ë¡£
    ¥Ñ¥Ã¥±¡¼¥¸Ì¾¤ä¥¨¥é¡¼¥Ï¥ó¥É¥ê¥ó¥°¤ÏŬÅö¤Ê¤Î¤Ç¡¢Ä¾¤·¤Æ²¼¤µ¤¤¡£

    package hogepackage;

    import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Calendar; import java.util.Collections; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import javax.cache.Cache; import javax.cache.CacheException; import javax.cache.CacheFactory; import javax.cache.CacheManager; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.appengine.repackaged.org.apache.commons.logging.Log; import com.google.appengine.repackaged.org.apache.commons.logging.LogFactory;

    public class ScServlet extends HttpServlet { private static final long serialVersionUID = 8039195338253452464L; private static final int LAST_MODIFIED = 0; private static final Log log = LogFactory.getLog(ScServlet.class);

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {

    // Á°²ó¹¹¿·Æü¤ò¼èÆÀ if (req.getDateHeader("If-Modified-Since") == LAST_MODIFIED) { // ¹¹¿·¤¬¤Ê¤±¤ì¤Ð304(NOT MODIFIED)¤òÊÖ¤¹ resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED); return; }

    // HTTP¥Ø¥Ã¥À¡¼¤òÀßÄê Calendar cal = Calendar.getInstance(); cal.add(Calendar.YEAR, 1); resp.setHeader("Cache-Control", "public, maxtime=1209600"); resp.setDateHeader("Expires", cal.getTimeInMillis()); resp.setDateHeader("Last-Modified", LAST_MODIFIED);

    // ¥ê¥½¡¼¥¹¤Î¥Ñ¥¹¼èÆÀ String requestedURI = req.getRequestURI().replaceFirst("¡ö¡ö¡ö¡ö¡ö¡ö¡ö¡ö¡ö", "");

    // Ƭ¤Î/¤Ï¼è¤ë requestedURI = requestedURI.substring(1);

    // ¥­¥ã¥Ã¥·¥å¤«¤éÃͤò¼èÆÀ Cache cache = null; try { CacheFactory cacheFactory = CacheManager.getInstance().getCacheFactory(); cache = cacheFactory.createCache(Collections.emptyMap());

    if (cache.containsKey(requestedURI)) { byte[] cachedContent = (byte[]) cache.get(requestedURI); OutputStream out = resp.getOutputStream(); for (int i = 0; i < cachedContent.length; i++) { out.write(cachedContent[i]); } return; } } catch (CacheException e) { log.error("¥­¥ã¥Ã¥·¥å¥¨¥é¡¼", e); }

    // ¥ê¥½¡¼¥¹¤òõ¤·ÊÖ¤¹ ZipInputStream in = new ZipInputStream(new FileInputStream("sc.zip")); ZipEntry entry; while ((entry = in.getNextEntry()) != null) { if (requestedURI.equals(entry.getName())) { OutputStream out = resp.getOutputStream(); ByteArrayOutputStream bytes = new ByteArrayOutputStream();

    byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); bytes.write(buf, 0, len); } byte[] b = bytes.toByteArray(); cache.put(requestedURI, b);

    in.close(); out.close(); bytes.close(); return; } } } }

  • web.xml¤òÀßÄê
  • smartgwt¤Î¥ê¥½¡¼¥¹¤Ø¤Î¥¢¥¯¥»¥¹¤òServlet¤Ç¼õ¤±¤ë¤è¤¦ÀßÄê¡£
    ¤Þ¤¿¤â¤ä¡ö¡ö¡ö¡ö¡ö¡ö¡ö¡ö¡öÉôʬ¤Ë¤Ï¡¢GWT¤Î¥¨¥ó¥È¥ê¥Ý¥¤¥ó¥È̾¡Ê/war/*/sc¤Î*¤Î¤È¤³¤í¡Ë¤òÆþ¤ì¤ë¡£

    	<servlet>
    		<servlet-name>scServlet</servlet-name>
    		<servlet-class>hogepackage.ScServlet</servlet-class>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>scServlet</servlet-name>
    		<url-pattern>/¡ö¡ö¡ö¡ö¡ö¡ö¡ö¡ö¡ö/*</url-pattern>
    	</servlet-mapping>
    

¿ʬ¡¢¾åµ­¤Ç¤¤¤±¤ë¤Ï¤º¡£

¤®¤ã¤Õ¤ó¡ª


¥³¥á¥ó¥È

¤³¤Î¥³¥á¥ó¥È¤ÎRSS

TrackBack URL : http://www.xi-cholo.com/modules/wordpress/wp-trackback.php/730

¤³¤ÎÅê¹Æ¤Ë¤Ï¡¢¤Þ¤À¥³¥á¥ó¥È¤¬ÉÕ¤¤¤Æ¤¤¤Þ¤»¤ó

¥³¥á¥ó¥È¤ÎÅê¹Æ


¤´Ãí°Õ : ¥»¥Ã¥Æ¥£¥ó¥°¤Ë¤è¤ê¡¢¥³¥á¥ó¥ÈÅê¹Æ¤«¤é¼ÂºÝ¤Ë±ÜÍ÷¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¤Þ¤Ç»Ã¤¯»þ´Ö¤¬³Ý¤«¤ë¾ì¹ç¤¬¤¢¤ê¤Þ¤¹¡£ ºÆÅê¹Æ¤ÎɬÍפϤ¢¤ê¤Þ¤»¤ó¤Î¤Ç¡¢É½¼¨¤µ¤ì¤ë¤Þ¤Ç¤ªÂÔ¤Á²¼¤µ¤¤¡£

Random Number

16 queries. 0.316 sec.
Powered by WordPress Module based on WordPress ME & WordPress




| Home | Nonsense | Paper | DownLoad |


# #