You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2008/06/22 04:38:23 UTC
svn commit: r670299 - in /tomcat/sandbox/tomcat-lite: ./ bin/
coyote-extensions/org/apache/coyote/adapters/
coyote-extensions/org/apache/tomcat/util/net/ java/org/apache/tomcat/lite/
test/org/apache/tomcat/lite/ test/org/apache/tomcat/test/
Author: costin
Date: Sat Jun 21 19:38:22 2008
New Revision: 670299
URL: http://svn.apache.org/viewvc?rev=670299&view=rev
Log:
Fixed the inetd mode ( convenient for port 80, load on demand )
Added:
tomcat/sandbox/tomcat-lite/build.properties.default
Removed:
tomcat/sandbox/tomcat-lite/bin/Tomcat6Sandbox.launch
Modified:
tomcat/sandbox/tomcat-lite/bin/tomcatInetd.sh
tomcat/sandbox/tomcat-lite/build.xml
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java
tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/net/SelectorThreadNio.java
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/TomcatLite.java
tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteTest.java
tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/test/CoyoteTestHelper.java
Modified: tomcat/sandbox/tomcat-lite/bin/tomcatInetd.sh
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/bin/tomcatInetd.sh?rev=670299&r1=670298&r2=670299&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-lite/bin/tomcatInetd.sh (original)
+++ tomcat/sandbox/tomcat-lite/bin/tomcatInetd.sh Sat Jun 21 19:38:22 2008
@@ -1,8 +1,11 @@
#!/bin/sh
-. $HOME/.bashrc
+# Example - you need to set JAVA_HOME, BASE
-$BASE=`pwd`/../..
-export CLASSPATH=$BASE/sandbox/classes:$BASE/connectors/bin
-cd $BASE/sandbox
-exec sudo -u costin java org.apache.coyote.standalone.MainInetd >/tmp/tc.log 2>&1
+JAVA_HOME=/local/opt/jdk1.6.0
+
+BIN=`dirname $0`
+BASE=$BIN/..
+
+cd $BASE
+$JAVA_HOME/bin/java -jar $BASE/output/tomcat-lite.jar --async --port 0 >>tcout.log 2>>tcerr.log
Added: tomcat/sandbox/tomcat-lite/build.properties.default
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/build.properties.default?rev=670299&view=auto
==============================================================================
--- tomcat/sandbox/tomcat-lite/build.properties.default (added)
+++ tomcat/sandbox/tomcat-lite/build.properties.default Sat Jun 21 19:38:22 2008
@@ -0,0 +1,5 @@
+watchdog.src=../../watchdog
+tc6.src=../../tomcat6
+#Alternative:
+#tc6.home=../../tomcat6/output/build
+
Modified: tomcat/sandbox/tomcat-lite/build.xml
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/build.xml?rev=670299&r1=670298&r2=670299&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-lite/build.xml (original)
+++ tomcat/sandbox/tomcat-lite/build.xml Sat Jun 21 19:38:22 2008
@@ -13,7 +13,7 @@
<property name="source.vm" value="1.6"/>
<property name="compile.optimize" value="true"/>
- <property name="compile.debug" value="false" />
+ <property name="compile.debug" value="true" />
<property name="compile.deprecation" value="false" />
<property name="compile.source" value="1.6" />
@@ -38,7 +38,7 @@
includeJavaRuntime="false"
deprecation="false"
classpathref="runtime-deps"
- debug="false" >
+ debug="${compile.debug}" >
<src path="java" />
<include name ="org/apache/tomcat/servlets/addon/**" />
<include name ="org/apache/tomcat/servlets/util/**" />
@@ -50,7 +50,7 @@
classpathref="runtime-deps"
includeJavaRuntime="false"
deprecation="false"
- debug="false" >
+ debug="${compile.debug}" >
<src path="tomcat-coyote" />
<include name ="**" />
</javac>
@@ -65,7 +65,7 @@
includeJavaRuntime="false"
classpathref="runtime-deps"
deprecation="false"
- debug="false" >
+ debug="${compile.debug}" >
<src path="java" />
<include name ="org/apache/tomcat/servlets/config/**" />
<include name ="org/apache/tomcat/servlets/file/**" />
@@ -81,7 +81,7 @@
target="${target.vm}"
includeJavaRuntime="false"
deprecation="false"
- debug="false" >
+ debug="${compile.debug}" >
<src path="coyote-nio" />
<include name ="**" />
</javac>
@@ -98,7 +98,7 @@
classpathref="runtime-deps"
includeJavaRuntime="false"
deprecation="false"
- debug="false" >
+ debug="${compile.debug}" >
<src path="coyote-apr" />
<include name ="**" />
</javac>
@@ -114,7 +114,7 @@
classpathref="runtime-deps"
includeJavaRuntime="false"
deprecation="false"
- debug="false" >
+ debug="${compile.debug}" >
<src path="coyote-extensions" />
<include name ="**" />
</javac>
@@ -125,7 +125,7 @@
classpathref="runtime-deps"
includeJavaRuntime="false"
deprecation="false"
- debug="false" >
+ debug="${compile.debug}" >
<src path="java" />
<include name ="org/apache/tomcat/lite/**" />
</javac>
@@ -141,7 +141,7 @@
classpathref="runtime-deps"
includeJavaRuntime="false"
deprecation="false"
- debug="false" >
+ debug="${compile.debug}" >
<src path="webapps/addons-jasper/WEB-INF/src" />
<include name ="org/apache/tomcat/**" />
<classpath>
Modified: tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java?rev=670299&r1=670298&r2=670299&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java (original)
+++ tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/coyote/adapters/CoyoteServer.java Sat Jun 21 19:38:22 2008
@@ -15,6 +15,7 @@
*/
package org.apache.coyote.adapters;
+import java.io.IOException;
import java.lang.management.ManagementFactory;
import org.apache.coyote.Adapter;
@@ -96,8 +97,12 @@
/**
*/
public void run() {
- init();
- start();
+ try {
+ init();
+ start();
+ } catch(IOException ex) {
+ ex.printStackTrace();
+ }
}
public void setDaemon(boolean b) {
@@ -173,7 +178,7 @@
}
}
- public void start() {
+ public void start() throws IOException {
try {
if (started) {
return;
@@ -200,6 +205,7 @@
started = true;
} catch (Throwable e) {
e.printStackTrace();
+ throw new IOException(e);
}
}
Modified: tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/net/SelectorThreadNio.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/net/SelectorThreadNio.java?rev=670299&r1=670298&r2=670299&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/net/SelectorThreadNio.java (original)
+++ tomcat/sandbox/tomcat-lite/coyote-extensions/org/apache/tomcat/util/net/SelectorThreadNio.java Sat Jun 21 19:38:22 2008
@@ -644,6 +644,27 @@
}
}
+ /**
+ * Example config:
+ *
+ * www stream tcp wait USER PATH_TO_tomcatInetd.sh
+ *
+ * For a different port, you need to add it to /etc/services.
+ *
+ * 'wait' is critical - the common use of inetd is 'nowait' for
+ * tcp services, which doesn't make sense for java ( too slow startup
+ * time ). It may make sense in future with something like android VM.
+ *
+ * In 'wait' mode, inetd will pass the acceptor socket to java - so
+ * you can listen on port 80 and run as regular user with no special
+ * code and magic.
+ * If tomcat dies, inetd will get back the acceptor and on next connection
+ * restart tomcat.
+ *
+ * This also works with xinetd. It might work with Apple launchd.
+ *
+ * TODO: detect inactivity for N minutes, exist - to free resources.
+ */
@Override
public void inetdAcceptor(SelectorCallback cstate) throws IOException {
SelectorProvider sp=SelectorProvider.provider();
@@ -653,13 +674,19 @@
log.info("Inherited: " + ch.getClass().getName());
// blocking mode
ServerSocketChannel ssc=(ServerSocketChannel)ch;
+ ssc.configureBlocking(false);
+
SelectorData selectorData = new SelectorData(this);
selectorData.channelData = ssc;
+ selectorData.callback = cstate;
synchronized (connectAcceptInterest) {
connectAcceptInterest.add(selectorData);
}
selector.wakeup();
+ } else {
+ log.severe("No inet socket ");
+ throw new IOException("Invalid inheritedChannel");
}
}
@@ -857,7 +884,6 @@
while (ci.hasNext()) {
SelectorData selectorData = ci.next();
- SelectionKey sk = (SelectionKey) selectorData.selKey;
// Find host, port - initiate connection
try {
@@ -891,8 +917,9 @@
log.info("Pending connect added: " + selectorData.callback);
}
}
- } catch (IOException e) {
- e.printStackTrace();
+ } catch (Throwable e) {
+ log.log(Level.SEVERE, "error registering connect/accept",
+ e);
}
}
connectAcceptInterest.clear();
Modified: tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/TomcatLite.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/TomcatLite.java?rev=670299&r1=670298&r2=670299&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/TomcatLite.java (original)
+++ tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/TomcatLite.java Sat Jun 21 19:38:22 2008
@@ -57,7 +57,6 @@
private String serverDirName;
private File workDir;
- private int port = 8080;
// all contexts - hostMapper knows about hostnames and how they are mapped.
// this shouldn't be needed if we want to delegate ctx management
@@ -90,6 +89,10 @@
return contexts;
}
+ public CoyoteServer getConnectors() {
+ return coyote;
+ }
+
public URLClassLoader getContextParentLoader() {
if (contextParentLoader == null) {
@@ -132,7 +135,6 @@
}
public void startConnector() {
- coyote.setPort(port);
coyote.addAdapter("/", this);
try {
coyote.init();
@@ -432,11 +434,7 @@
public void setServerDir(String dir) {
this.serverDirName = dir;
}
-
- public void setPort(int port) {
- this.port = port;
- }
-
+
public File getWork() {
if (workDir == null) {
File rootDirFile = new File(serverDirName);
Modified: tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteTest.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteTest.java?rev=670299&r1=670298&r2=670299&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteTest.java (original)
+++ tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/lite/TomcatLiteTest.java Sat Jun 21 19:38:22 2008
@@ -32,7 +32,7 @@
void initServer() throws Exception {
TomcatLiteTest.initServlets(lite);
- lite.setPort(8804);
+ lite.getConnectors().setPort(8804);
// At this point we can add contexts and inject requests, if we want to
// do it over HTTP need to start the connector as well.
lite.startConnector();
Modified: tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/test/CoyoteTestHelper.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/test/CoyoteTestHelper.java?rev=670299&r1=670298&r2=670299&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/test/CoyoteTestHelper.java (original)
+++ tomcat/sandbox/tomcat-lite/test/org/apache/tomcat/test/CoyoteTestHelper.java Sat Jun 21 19:38:22 2008
@@ -106,12 +106,17 @@
*
* @param port
* @return
+ * @throws IOException
* @throws ServletException
*/
- public static CoyoteServer getTestServer(int port) {
+ public static CoyoteServer getTestServer(int port) {
CoyoteServer server = getCachedServer(port);
if (!server.getStarted()) {
- server.start();
+ try {
+ server.start();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
}
return server;
}
@@ -133,7 +138,7 @@
return server;
}
- public static CoyoteServer getProxyServer(int port) {
+ public static CoyoteServer getProxyServer(int port) throws IOException {
CoyoteServer server = servers.get(port);
if (server == null) {
server = new CoyoteServer(port, new ProxyAdapter());
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org