-->

2013-08-23

memo: tomcat

http://www.mulesoft.com/using-tomcat-reload-features-speed-development
http://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/core/ContainerBase.html
http://wiki.gentoo.org/wiki/Apache_Tomcat
http://www.searchman.info/java_eclipse/1040.html

$ cat /var/lib/tomcat-7-main/conf/Catalina/localhost/test001.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context
    reloadable="true"
    backgroundProcessorDelay="1"
    >
  <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

再起動が遅い。
reloadable="true"でも読み込みが遅い。10秒。
javac xxx.java => xxx.class で出力途中のファイルが読み込まれるとおかしくなる。メモリリーク。

意味は無いかもしれない。
javac -d ./tmp/ -classpath "/usr/share/tomcat-servlet-api-3.0/lib/servlet-api.jar" HelloWorld.java && mv -f ./tmp/HelloWorld.class .

jspは関係ないかもしれない。
eclipseを使うのが正解かもしれない。

$ grep -nriP "backgroundProcessorDelay\s*=" apache-tomcat-7.0.32-src/
apache-tomcat-7.0.32-src/java/org/apache/catalina/core/StandardEngine.java:76:        backgroundProcessorDelay = 10;
apache-tomcat-7.0.32-src/java/org/apache/catalina/core/ContainerBase.java:176:    protected int backgroundProcessorDelay = -1;
apache-tomcat-7.0.32-src/java/org/apache/catalina/core/ContainerBase.java:370:        backgroundProcessorDelay = delay;

backgroundProcessorDelayはreloadable限定の設定ではないのでテスト以外で変な値にするとダメかもしれない。

$ grep -iP "java|tomcat" /var/lib/portage/world | while read pkgname; do eix -I $pkgname | grep -P "(^\[I\]\s)|(^\s*Installed versions:)"; done
[I] dev-java/jdbc-mysql
     Installed versions:  5.1.18^t(08:14:30 08/22/13)(-c3p0 -log4j -source ELIBC="-FreeBSD")
[I] dev-java/struts
     Installed versions:  1.2.9-r3(1.2)(05:50:48 04/06/13)(doc examples source ELIBC="-FreeBSD")
[I] www-servers/tomcat
     Installed versions:  7.0.32(7)^t(06:25:34 04/06/13)(doc extra-webapps source -test ELIBC="-FreeBSD")

#$ sudo /usr/share/tomcat-7/gentoo/tomcat-instance-manager.bash --create
#$ sudo /usr/share/tomcat-7/gentoo/tomcat-instance-manager.bash --remove
$ sudo /usr/share/tomcat-7/gentoo/tomcat-instance-manager.bash --create --suffix main

$ cat /var/lib/tomcat-7-main/webapps/test001/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app
    version="3.0"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

  <servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>HelloWorld</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>
      hello
    </servlet-name>
    <url-pattern>
      /hello
    </url-pattern>
  </servlet-mapping>

</web-app>

$ cat /var/lib/tomcat-7-main/webapps/test001/WEB-INF/classes/HelloWorld.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet {
    public void doGet(HttpServletRequest request,
                      HttpServletResponse response)
        throws IOException, ServletException
    {

        PrintWriter out = response.getWriter();
        out.println("HelloWorld.");
        out.close();
    }
}

javac -d ./tmp/ -classpath "/usr/share/tomcat-servlet-api-3.0/lib/servlet-api.jar" HelloWorld.java && mv -f ./tmp/HelloWorld.class .

$ tail -n0 -f /var/log/tomcat-7-main/catalina.2013-08-23.log
Aug 23, 2013 8:23:02 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/test001] has started
Aug 23, 2013 8:23:02 AM org.apache.catalina.core.StandardContext reload
INFO: Reloading Context with name [/test001] is completed

/var/lib/tomcat-7-main/conf/Catalina/localhost/test001.xml
/var/lib/tomcat-7-main/webapps/test001/WEB-INF/classes/HelloWorld.java
/var/lib/tomcat-7-main/webapps/test001/WEB-INF/web.xml

$ curl http://localhost:8080/test001/hello
HelloWorld.1

0 件のコメント: