¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯
Top / J2EE / Eclipse¤ÇWeb Services¤ò³«È¯¤¹¤ë

Eclipse + WTP¤ò»È¤Ã¤Æ¡¢WEB¥µ¡¼¥Ó¥¹¤Î³«È¯¤ò¥×¥í¥È¤·¤Æ¤ß¤Þ¤·¤¿¡£¥×¥ê¥ß¥Æ¥£¥Ö¥ª¥Ö¥¸¥§¥¯¥È°Ê³°¤Î·¿¤Ë¤Ä¤¤¤Æ¤â¡¢Àµ¤·¤¯WSDL¤È¥×¥í¥­¥·¥¯¥é¥¤¥¢¥ó¥È¤¬ºîÀ®¤µ¤ì¡¢»È¤¤Êª¤Ë¤Ê¤ë¤â¤Î¤¬À¸À®¤µ¤ì¤ë¤³¤È¤¬³Îǧ¤Ç¤­¤Þ¤·¤¿¡£

WEB¥µ¡¼¥Ó¥¹³«È¯¤Îή¤ì¤Ï

  • Web¥×¥í¥¸¥§¥¯¥È¤ÎºîÀ®
  • ¸ø³«¤·¤¿¤¤JavaBeans?¤ÎºîÀ®
  • ¤½¤ÎJavaBeans?¤«¤é¡¢WEB¥µ¡¼¥Ó¥¹¤ÎºîÀ®
    • WSDL¤ÎºîÀ®
    • ¥×¥í¥­¥·¥¯¥é¥¤¥¢¥ó¥È¤òÊݸ¤¹¤ëJava¥×¥í¥¸¥§¥¯¥È¤ÎºîÀ®
    • ¥×¥í¥­¥·¥¯¥é¥¤¥¢¥ó¥È¤ÎºîÀ®

¤È¤¤¤Ã¤¿´¶¤¸¤Ë¤Ê¤ê¤Þ¤¹¡£

Web¥×¥í¥¸¥§¥¯¥È¤ÎºîÀ®

ưŪWeb¥×¥í¥¸¥§¥¯¥È

¥×¥í¥¸¥§¥¯¥È̾   : WebServicesSamplesWeb
Content Directory: war
Source Deirectory: source

EAR¥×¥í¥¸¥§¥¯¥È

¥×¥í¥¸¥§¥¯¥È̾   : WebServicesSamplesEAR
project.png

¸ø³«¤·¤¿¤¤JavaBeans?¤ÎºîÀ®

Îã¤È¤·¤Æ

  • java.lang.String¤òÊÖ¤¹sayHello¥á¥½¥Ã¥É
  • java.lang.String[]¤òÊÖ¤¹sayHellos¥á¥½¥Ã¥É
  • JavaBeans? nu.mine.kino.services.Model ¤òÊÖ¤¹getModel¥á¥½¥Ã¥É

¤ò»ý¤Ä nu.mine.kino.services.HelloWorld? ¥¯¥é¥¹¤òºîÀ®¤·¡¢¤³¤ì¤òWEB¥µ¡¼¥Ó¥¹¤È¤·¤Æ¸ø³«¤·¤¿¤¤¤È»×¤¤¤Þ¤¹¡£

  • nu.mine.kino.services.HelloWorld?
    package nu.mine.kino.services;
    
    /**
     * @author Masatomi KINO
     * @version $Revision$
     */
    public class HelloWorld {
      public String sayHello() { // String¤òÊÖ¤¹
        return "Hello";
      }
    
      public String[] sayHellos() { // String[] ¤òÊÖ¤¹
        return new String[] { "Hello World.", "hello world." };
      }
    
      public Model getModel() { // Model ¤òÊÖ¤¹
        return new Model();
      }
    }
  • nu.mine.kino.services.Model
    package nu.mine.kino.services;
    
    /**
     * @author Masatomi KINO
     * @version $Revision$
     */
    public class Model {
      public String getName() {
        return "¤Ê¤Þ¤¨";
      }
    }

JavaBeans?¤«¤éWEB¥µ¡¼¥Ó¥¹¤ÎºîÀ®

WSDL¤ÎºîÀ®

¼¡¤ËWTP¤ò»È¤Ã¤Æ¡¢JavaBeans?¤«¤éWSDL¤Ê¤É¤Ê¤É¤òºîÀ®¤·¤Æ¤¤¤­¤Þ¤¹¡£¥Ñ¥Ã¥±¡¼¥¸¥¨¥¯¥¹¥×¥í¡¼¥é¤«¤éHelloWorld?¤òÁªÂò¤·¤Æ±¦¥¯¥ê¥Ã¥¯¤· Create Web services ¤òÁªÂò¤·¤Þ¤¹¡£¤½¤¦¤¹¤ë¤È²¼¤Î¤è¤¦¤Ê¥À¥¤¥¢¥í¥°¤¬É½¼¨¤µ¤ì¤Þ¤¹¡£

01.png

¤³¤Î¥À¥¤¥¢¥í¥°¤Ç

Web Service Type: Bottom up Java Bean Web Service
Generate a proxy ¤Ë¥Á¥§¥Ã¥¯
Install Web Service client on server ¤Ï³°¤¹

¤Ê¤ÉÁªÂò¤·¤Æ¡¢¼¡¤Ø¿Ê¤ß¤Þ¤¹¡£¤Á¤Ê¤ß¤Ë°ìÈÌŪ¤Ë

Bottom up Java Bean Web Service: JavaBeans¤«¤éWSDLºîÀ®
Top down  Java Bean Web Service: WSDL¤«¤éJavaBeansºîÀ®

¤È¤¤¤¦°ÕÌ£¤À¤½¤¦¤Ç¤¹¡£

¼¡²èÌ̤ǤÏBeans¤òÁªÂò¤¹¤ë²èÌ̤Ǥ¹¡£¤³¤Î¤Þ¤ÞHelloWorld?¤òÁªÂò¤·¤Æ¡¢¼¡¤Ø¿Ê¤ß¤Þ¤¹

02.png

¼¡¤Ï¸ø³«¤¹¤ëWEB¥µ¡¼¥Ó¥¹¤ò¤É¤ÎWeb¥×¥í¥¸¥§¥¯¥È¤ËDeploy¤¹¤ë¤«¡¢¤Þ¤¿¥¯¥é¥¤¥¢¥ó¥È¥×¥í¥­¥·¤ò¤É¤Î¥×¥í¥¸¥§¥¯¥È¤ËÇÛÃÖ¤¹¤ë¤«¤ò»ØÄꤷ¤Þ¤¹¡£Client Project type¤Ï Java Utility Project ¤Ë¤·¤Æ¤ª¤­¤Þ¤¹¡£

03.png

¼¡¤Ë¸ø³«¤¹¤ë¥á¥½¥Ã¥É¤òÁªÂò¤·¤Þ¤¹¡£²¼¤Î¤è¤¦¤ËÁªÂò¤·¡¢¼¡¤Ë¿Ê¤ß¤Þ¤¹¡£

04.png

¤³¤³¤Þ¤Ç¤­¤Æ¡¢¤è¤¦¤ä¤¯WEB¥×¥í¥¸¥§¥¯¥È¤ËWSDL¥Õ¥¡¥¤¥ë¤¬ºîÀ®¤µ¤ì¤Þ¤¹¡£J¼¡¤Î²èÌ̤ǡ¢JBoss¤ò¥¹¥¿¡¼¥È¤·¤Þ¤¹¤«¤Èʹ¤¤¤Æ¤¯¤ë¤Î¤Ç¡¢¥µ¡¼¥Ð¤ò¥¹¥¿¡¼¥È¤µ¤»¤Þ¤¹¡£¼«Æ°Åª¤ËEAR¥×¥í¥¸¥§¥¯¥È¤¬¥Ç¥×¥í¥¤¤µ¤ì¡¢WEB¥µ¡¼¥Ó¥¹¤¬¸ø³«¤µ¤ì¤¿¾õÂ֤ˤʤê¤Þ¤¹*1¡£

05.png

¥×¥í¥­¥·¥¯¥é¥¤¥¢¥ó¥È¤ÎºîÀ®

¤¢¤È¤Ï¼¡¤Ø¼¡¤Ø¤È¿Ê¤ó¤Ç¤¤¤±¤Ð¤µ¤Ã¤­»ØÄꤷ¤¿JavaProject?¤Ë¥×¥í¥­¥·¥¯¥é¥¤¥¢¥ó¥È¤¬ÇÛÃÖ¤µ¤ì¡¢Á´¤Æ´°Î»¤Ç¤¹¡£

tree.png

ºÇ½ªÅª¤Ë¾å¤Î¤è¤¦¤Ê¥Ç¥£¥ì¥¯¥È¥ê¹½Â¤¤Ë¤Ê¤ê¤Þ¤¹¡£

¼Â¹Ô¤·¤Æ¤ß¤ë¡£

¤¤¤Þ¡¢WEB¥µ¡¼¥Ó¥¹¤¬¸ø³«¤µ¤ì¤Æ¤¤¤ë¾õÂ֤ʤΤǡ¢¼ÂºÝ¤Ë¥Æ¥¹¥È¥¯¥é¥¹¤òºî¤Ã¤Æ²Ôư³Îǧ¤·¤Æ¤ß¤Þ¤¹¡£¥×¥í¥­¥·¤¬ÃÖ¤«¤ì¤¿¥×¥í¥¸¥§¥¯¥ÈÆâ¤Ç°Ê²¼¤ÎMain¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£

import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import nu.mine.kino.services.HelloWorld;
import nu.mine.kino.services.HelloWorldServiceLocator;
import nu.mine.kino.services.Model;

public class Main {
  public static void main(String[] args) {
    try {
      HelloWorld helloWorld = new HelloWorldServiceLocator()
          .getHelloWorld();
      System.out.println(helloWorld.sayHello());
      String[] hellos = helloWorld.sayHellos();
      for (int i = 0; i < hellos.length; i++) {
        System.out.println(hellos[i]);
      }
      Model model = helloWorld.getModel();
      System.out.println(model.getName());
    } catch (ServiceException e) {
      e.printStackTrace();
    } catch (RemoteException e) {
      e.printStackTrace();
    }
  }
}

¼Â¹Ô·ë²Ì¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£

2006/04/25 17:36:29 org.apache.axis.utils.JavaUtils isAttachmentSupported
·Ù¹ð: Í׵ᤵ¤ì¤¿¥¯¥é¥¹(javax.activation.DataHandler ¤È javax.mail.internet.
MimeMultipart)¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£Attachment¥µ¥Ý¡¼¥È¤¬ÍøÍѤǤ­¤Þ¤»¤ó¡£ 
/ [en]-(Unable to find required classes (javax.activation.DataHandler 
and javax.mail.internet.MimeMultipart). 
Attachment support is disabled.)
Hello
Hello World.
hello world.
¤Ê¤Þ¤¨

¤Ê¤ó¤«·Ù¹ð¤¬½Ð¤Æ¤Þ¤¹¤¬¡¢String¤âÇÛÎó¤âJavaBeans?¤âÀµ¤·¤¯²Ôư¤·¤Æ¤¤¤ë¤³¤È¤¬³Îǧ¤Ç¤­¤Þ¤·¤¿¡ª¡ª

deploy/undeploy¤ò¤¹¤ë¤¿¤á¤Îant¤Îbuild.xml

¤µ¤Æ¡¢¤³¤³¤Þ¤Ç¤Ç´û¸¤ÎJavaBeans?¤òWEB¥µ¡¼¥Ó¥¹¤È¤·¤Æ¸ø³«¤¹¤ë¤È¤³¤í¤Þ¤Ç¤¬¤Ç¤­¤Þ¤·¤¿¡£¤¢¤È¤Ï¸ø³«¤·¤¿WEB¥µ¡¼¥Ó¥¹¤ò¡¢¥Ç¥×¥í¥¤¤·¤¿¤ê¥¢¥ó¥Ç¥×¥í¥¤¤¹¤ëant¤Îbuild¥¹¥¯¥ê¥×¥È¤òºîÀ®¤·¤Æ¤ª¤³¤¦¤È»×¤¤¤Þ¤¹¡£

  • build.xml
    <?xml version="1.0" encoding="UTF-8"?>
     <project name="WebServices Deploy" basedir=".">
       <property file="build.win.properties" />
       <property file="build.properties" />
     
       <!--  
     http://ws.apache.org/axis/java/ant/ant.html
     -->
       <path id="axis.classpath">
         <fileset dir="${web.lib.dir}" includes="*.jar" />
         <fileset dir="${axis.dir}/lib" includes="*.jar" />
       </path>
       <taskdef resource="axis-tasks.properties" classpathref="axis.classpath" />
     
       <target name="deploy">
         <axis-admin port="8080" hostname="localhost" failonerror="true" 
          servletpath="${axisservlet}" debug="true" xmlfile="${wsdd.deployfile}" />
       </target>
     
     
       <target name="undeploy">
         <axis-admin port="8080" hostname="localhost" failonerror="true" 
          servletpath="${axisservlet}" debug="true" xmlfile="${wsdd.undeployfile}" />
       </target>
     </project>
    
  • build.properties
    wsdd.dir=war/WEB-INF/HelloWorldService/nu/mine/kino/services
    wsdd.deployfile=${wsdd.dir}/deploy.wsdd
    wsdd.undeployfile=${wsdd.dir}/undeploy.wsdd
    web.lib.dir=war/WEB-INF/lib
    axis.dir=C:/javatools/axis
    axisservlet=WebServicesSamplesWeb/servlet/AxisServlet

TIPS½¸

TCP¥â¥Ë¥¿¤ò»È¤¦

Apache Axis¤Ë¤Ï¥µ¡¼¥Ð¤È¤ÎÄÌ¿®¤ò¥­¥ã¥×¥Á¥ã¤¹¤ëTCP¥â¥Ë¥¿¤¬Æ±º­¤µ¤ì¤Æ¤¤¤Þ¤¹¡£Eclipse¤«¤é¡¢¥á¥¤¥ó¥¯¥é¥¹Ì¾:org.apache.axis.utils.tcpmon ¤Çµ¯Æ°¤Ç¤­¤Þ¤¹¡£

¤Ä¤«¤¤¤«¤¿¤Ç¤¹¤¬¡¢º£¤Þ¤Ç¤Ï

¥¯¥é¥¤¥¢¥ó¥È(ÀܳÀè:8080) -> (¥Ý¡¼¥È:8080)¥µ¡¼¥Ð

¤È¤¤¤¦Àܳ¤Ç¤·¤¿¤¬¡¢¤¢¤¤¤À¤Ë¤³¤Î¥Ä¡¼¥ë¤ò¤«¤Þ¤¹¤¿¤á¤Ë¤Ï¥¯¥é¥¤¥¢¥ó¥È¤ÎÀܳÀè¥Ý¡¼¥ÈÈÖ¹æ¤òÎ㤨¤Ð

¥¯¥é¥¤¥¢¥ó¥È(ÀܳÀè:8081) -> (¥Ý¡¼¥È:8081)tcpmon(ÀܳÀè:8080) -> (¥Ý¡¼¥È:8080)¥µ¡¼¥Ð

¤ÈÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤Ä¤Þ¤ê¥¯¥é¥¤¥¢¥ó¥È¤Î¥×¥í¥¯¥·¤¬Àܳ¤·¤Ë¹Ô¤¯¥µ¡¼¥Ð¤Î¥Ý¡¼¥ÈÈÖ¹æ¤òÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ë¤Î¤Ç¤¹¤¬¡¢¤½¤ì¤Ï

HelloWorldServiceLocator#setHelloWorldEndpointAddress
 ("http://localhost:8081/WebServicesSamplesWeb/services/HelloWorldService")

¤È¤¤¤¦¥¨¥ó¥É¥Ý¥¤¥ó¥È¤òÊѹ¹¤¹¤ë¥á¥½¥Ã¥É¤Ç¹Ô¤¦¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£

»²¹Í:


¤³¤Îµ­»ö¤Ï

ÁªÂò»è Åêɼ
¤ª¤â¤·¤í¤«¤Ã¤¿ 28  
¤½¤¦¤Ç¤â¤Ê¤¤ 4  
  • java2wsdl¤Ç¡¢ÊÖ¤êÃͤòIModel¤Ã¤Æ¤¤¤¦interface¤Ë¤·¤Æ¤¿¤é¡¢¤É¤¦¤·¤Æ¤âcomplexType¤¬À¸À®¤µ¤ì¤Ê¤«¤Ã¤¿¡£¡£¥¯¥é¥¹¤ËÊѤ¨¤¿¤é¤¹¤°¤Ç¤­¤¿¤ó¤À¤±¤É¡£¡£¡£¡£¤³¤ì¤ÇȾÆü¤Ä¤«¤Ã¤¿¤è¡£ -- ¤­¤Î? 2006-04-25 16:15:51 (²Ð)
  • ¥»¥Ã¥·¥ç¥ó´ÉÍý¤Ë¤Ä¤¤¤ÆÄ´¤Ù¤Æ¤¤¤Þ¤¹¡£µóư¤ò¸«¤ë¤È¡¢¥¯¥é¥¤¥¢¥ó¥È¤Ïlocator.setMaintainSession?(true)¤È¤¹¤ë¤È¥µ¡¼¥Ð¤¬ÊֵѤ·¤Æ¤­¤¿Cookie¤òºÆÁ÷¤¹¤ë¤ß¤¿¤¤¤Ç¤¹¡£ false¤È¤¹¤ë¤ÈºÆÁ÷¤·¤Ê¤¤¡¢¤È¡£¥µ¡¼¥Ð¤Ï¾¯¤Ê¤¯¤È¤âJBoss/Axis´Ä¶­¤Ç¤Ï¥»¥Ã¥·¥ç¥ó´ÉÍý(<-Servlet/JSP¤Ç¤¤¤¦HttpSession?´ÉÍý¤Í)¤ò¹Ô¤ª¤¦¤È¤·¤Æ¤ë¤ß¤¿¤¤¡£¡£ -- ¤­¤Î? 2006-06-09 09:14:20 (¶â)
  • ¤Ç¤â¤³¤ì¤À¤È¡¢Axis°Í¸¤·¤Á¤ã¤¦¤è¤Ê¤¢¡£Web¥µ¡¼¥Ó¥¹¤â¤·¤¯¤ÏJAX-RPC½àµò¤Ë¤ä¤ëÊýË¡¤òÄ´¤Ù¤è¤¦¡£ -- ¤­¤Î? 2006-06-09 09:22:33 (¶â)
  • ¥Ý¡¼¥¿¥Ö¥ë¤Ë¤ä¤ë¤Ë¤Ï
    javax.xml.rpc.Stub jaxrpcStub = (javax.xml.rpc.Stub) getVendorSpecificStub();
    jaxrpcStub._setProperty(javax.xml.rpc.Stub.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);
    ¤ß¤¿¤¤¤À¤±¤É¡¢¤½¤â¤½¤â¥×¥í¥¯¥·¤¬Axis°Í¸¤À¤«¤é¡¢¤Þ¤¢¤¤¤Ã¤«¡¼ -- ¤­¤Î? 2006-06-09 09:36:52 (¶â)
  • ¶¯°ú¤Ë¤ä¤ë¤È¡¢
    ((Stub) service)._setProperty(
            javax.xml.rpc.Stub.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);
    ¤Ç¤Ç¤­¤ë¤Í¡£service¤Ï new HelloWorldServiceLocator?().getHelloWorld?();¤ÎÊÖ¤êÃͤ͡£-- ¤­¤Î? 2006-06-09 09:46:15 (¶â)
  • ´ðËÜŪ¤Ë¡¢Stateless¤Ëºî¤ì¡¼¤Ã¤Æ¤Î¤¬´ðËܤ«¤Ê¤¡¡£ -- ¤­¤Î? 2006-06-09 13:13:28 (¶â)
  • ¤Á¤Ê¤ß¤Ë¡¢¥µ¡¼¥Ð¤¬Cookie¤òÊÖ¤¹¤Ë¤Ï¡¢¸ø³«¤µ¤ì¤¿¥µ¡¼¥Ó¥¹¤¬¡¢javax.xml.rpc.server.ServiceLifecycle?¤òimplements¤·¤Ê¤¤¤È¥À¥á¤ß¤¿¤¤¡£ -- ¤­¤Î? 2006-07-05 21:37:00 (¿å)
  • ¢¬°ã¤¦¡£¡£Filter¤«¤Þ¤·¤Ærequest.getSession()¤ä¤Ã¤Æ¤â¡¢¥µ¡¼¥Ð¤¬cookieÊÖ¤¹¤è¤¦¤Ë¤Ê¤Ã¤¿¡£ -- ¤­¤Î? 2006-07-05 23:01:26 (¿å)
  • Îã³°¥¯¥é¥¹¤Ï¡¢°ú¿ô¤Ê¤·¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ä¡¢¥Õ¥£¡¼¥ë¥É¤ò½é´ü²½¤¹¤ë¥³¥ó¥¹¥È¥é¥¯¥¿¤¬É¬Íפʤó¤Ç¤¹¤Í -- ¤­¤Î? 2006-07-17 21:43:06 (·î)

¤³¤Î¥Ú¡¼¥¸¤òdel.icio.us¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤ò¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤à¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯ ¤³¤Î¥Ú¡¼¥¸¤òlivedoor ¥¯¥ê¥Ã¥×¤ËÄɲà ¤³¤Î¥Ú¡¼¥¸¤òYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÄɲ䳤Υڡ¼¥¸¤ò´Þ¤àYahoo!¥Ö¥Ã¥¯¥Þ¡¼¥¯
Top / J2EE / Eclipse¤ÇWeb Services¤ò³«È¯¤¹¤ë

¸½ºß¤Î¥¢¥¯¥»¥¹:36432


*1 ¤¢¤é¤«¤¸¤áJBoss¤òÀßÄêºÑ¤ß¤ÎɬÍפ¬¤¢¤ë¤È»×¤¤¤Þ¤¹

źÉÕ¥Õ¥¡¥¤¥ë: file¥´¥ß¤âÆþ¤Ã¤¿build.xml 566·ï [¾ÜºÙ] filetree.png 712·ï [¾ÜºÙ] file05.png 696·ï [¾ÜºÙ] file04.png 725·ï [¾ÜºÙ] file03.png 720·ï [¾ÜºÙ] file02.png 702·ï [¾ÜºÙ] file01.png 857·ï [¾ÜºÙ] fileproject.png 882·ï [¾ÜºÙ]

¥È¥Ã¥×   ÊÔ½¸ Åà·ë º¹Ê¬ ¥Ð¥Ã¥¯¥¢¥Ã¥× źÉÕ Ê£À½ ̾Á°Êѹ¹ ¥ê¥í¡¼¥É   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS
Last-modified: 2012-04-09 (·î) 10:51:40 (40d)