You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2007/10/19 04:16:41 UTC

svn commit: r586228 - in /tomcat/tc6.0.x/trunk: ./ java/org/apache/catalina/loader/ java/org/apache/catalina/startup/ java/org/apache/catalina/tribes/membership/ java/org/apache/jasper/compiler/ java/org/apache/tomcat/util/net/ webapps/docs/

Author: fhanik
Date: Thu Oct 18 19:16:41 2007
New Revision: 586228

URL: http://svn.apache.org/viewvc?rev=586228&view=rev
Log:
Add in voted on fixes

Modified:
    tomcat/tc6.0.x/trunk/STATUS
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/mbeans-descriptors.xml
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ConnectorCreateRule.java
    tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
    tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Compiler.java
    tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java
    tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java
    tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java
    tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml

Modified: tomcat/tc6.0.x/trunk/STATUS
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS?rev=586228&r1=586227&r2=586228&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/STATUS (original)
+++ tomcat/tc6.0.x/trunk/STATUS Thu Oct 18 19:16:41 2007
@@ -31,16 +31,6 @@
   http://people.apache.org/~fhanik/patches/digester-attribute-warnings.patch
   +1: fhanik, yoavs
   -1: 
-
-* Add missing mbean descriptor
-  http://people.apache.org/~fhanik/patches/loader-mbean.patch
-  +1: fhanik,funkman,yoavs
-  -1:
-
-* Proposed solution to http://issues.apache.org/bugzilla/show_bug.cgi?id=42693
-  Patch: http://issues.apache.org/bugzilla/attachment.cgi?id=20940
-  +1: fhanik,funkman, yoavs
-  -1: 
   
 * IcedTea support. Upcoming Linux distributions will package a (working) open source JRE,
   available in /usr. As a result, it could now be possible to use a "/usr/bin/java" binary
@@ -70,21 +60,7 @@
   -1:
    0: yoavs
 
-* Fix multicasting bind address on multihomed computers
-  http://issues.apache.org/bugzilla/show_bug.cgi?id=43641
-  +1: fhanik, pero, yoavs, markt
-  -1: 
-
-* Warn if connector can not use external executors
-  http://issues.apache.org/bugzilla/show_bug.cgi?id=43643
-  +1: fhanik, pero, yoavs, markt
-  -1:
-  
-* Fix SSL buffer bug
-  http://issues.apache.org/bugzilla/show_bug.cgi?id=43653
-  +1: fhanik, yoavs, markt
-  -1: 
-  
+    
 * Add a working ANT script that signs and publishes JARs to a maven repo
   http://people.apache.org/~fhanik/patches/maven-publish.patch
   +1: fhanik, yoavs

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/mbeans-descriptors.xml
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/mbeans-descriptors.xml?rev=586228&r1=586227&r2=586228&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/mbeans-descriptors.xml (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/loader/mbeans-descriptors.xml Thu Oct 18 19:16:41 2007
@@ -72,4 +72,9 @@
                 group="Loader"
                  type="org.apache.catalina.loader.WebappClassLoader" />
 
+  <mbean         name="VirtualWebappLoader"
+          description="Extension of the webapp class loader with additional features"
+               domain="Catalina"
+                group="Loader"
+                 type="org.apache.catalina.loader.VirtualWebappLoader" />
 </mbeans-descriptors>

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ConnectorCreateRule.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ConnectorCreateRule.java?rev=586228&r1=586227&r2=586228&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ConnectorCreateRule.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/startup/ConnectorCreateRule.java Thu Oct 18 19:16:41 2007
@@ -27,6 +27,8 @@
 import org.apache.catalina.Executor;
 import org.apache.tomcat.util.IntrospectionUtils;
 import java.lang.reflect.Method;
+import org.apache.juli.logging.LogFactory;
+import org.apache.juli.logging.Log;
 
 
 /**
@@ -35,7 +37,7 @@
 
 public class ConnectorCreateRule extends Rule {
 
-
+    protected static Log log = LogFactory.getLog(ConnectorCreateRule.class);
     // --------------------------------------------------------- Public Methods
 
 
@@ -58,7 +60,11 @@
     
     public void _setExecutor(Connector con, Executor ex) throws Exception {
         Method m = IntrospectionUtils.findMethod(con.getProtocolHandler().getClass(),"setExecutor",new Class[] {java.util.concurrent.Executor.class});
-        m.invoke(con.getProtocolHandler(),new Object[] {ex});
+        if (m!=null) {
+            m.invoke(con.getProtocolHandler(), new Object[] {ex});
+        }else {
+            log.warn("Connector ["+con+"] does not support external executors. Method setExecutor(java.util.concurrent.Executor) not found.");
+        }
     }
 
 

Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java?rev=586228&r1=586227&r2=586228&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/membership/McastServiceImpl.java Thu Oct 18 19:16:41 2007
@@ -29,6 +29,7 @@
 import org.apache.catalina.tribes.Channel;
 import org.apache.catalina.tribes.Member;
 import org.apache.catalina.tribes.MembershipListener;
+import java.net.BindException;
 
 /**
  * A <b>membership</b> implementation using simple multicast.
@@ -182,8 +183,22 @@
     }
     
     protected void setupSocket() throws IOException {
-        if (mcastBindAddress != null) socket = new MulticastSocket(new InetSocketAddress(mcastBindAddress, port));
-        else socket = new MulticastSocket(port);
+        if (mcastBindAddress != null) {
+            try {
+                log.info("Attempting to bind the multicast socket to "+address+":"+port);
+                socket = new MulticastSocket(new InetSocketAddress(address,port));
+            } catch (BindException e) {
+                /*
+                 * On some plattforms (e.g. Linux) it is not possible to bind
+                 * to the multicast address. In this case only bind to the
+                 * port.
+                 */
+                log.info("Binding to multicast address, failed. Binding to port only.");
+                socket = new MulticastSocket(port);
+            }
+        } else {
+            socket = new MulticastSocket(port);
+        }
         socket.setLoopbackMode(false); //hint that we don't need loop back messages
         if (mcastBindAddress != null) {
 			if(log.isInfoEnabled())

Modified: tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Compiler.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Compiler.java?rev=586228&r1=586227&r2=586228&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Compiler.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/jasper/compiler/Compiler.java Thu Oct 18 19:16:41 2007
@@ -141,23 +141,9 @@
 
         ctxt.checkOutputDir();
         String javaFileName = ctxt.getServletJavaFileName();
-        ServletWriter writer = null;
 
+        ServletWriter writer = null;
         try {
-            // Setup the ServletWriter
-            String javaEncoding = ctxt.getOptions().getJavaEncoding();
-            OutputStreamWriter osw = null;
-
-            try {
-                osw = new OutputStreamWriter(
-                        new FileOutputStream(javaFileName), javaEncoding);
-            } catch (UnsupportedEncodingException ex) {
-                errDispatcher.jspError("jsp.error.needAlternateJavaEncoding",
-                        javaEncoding);
-            }
-
-            writer = new ServletWriter(new PrintWriter(osw));
-            ctxt.setWriter(writer);
 
             // Reset the temporary variable counter for the generator.
             JspUtil.resetTemporaryVariableName();
@@ -168,6 +154,7 @@
 
             if (ctxt.isPrototypeMode()) {
                 // generate prototype .java file for the tag file
+                writer = setupContextWriter(javaFileName);
                 Generator.generate(writer, this, pageNodes);
                 writer.close();
                 writer = null;
@@ -207,6 +194,7 @@
             ELFunctionMapper.map(this, pageNodes);
 
             // generate servlet .java file
+            writer = setupContextWriter(javaFileName);
             Generator.generate(writer, this, pageNodes);
             writer.close();
             writer = null;
@@ -258,6 +246,26 @@
 
         return smapStr;
     }
+
+	private ServletWriter setupContextWriter(String javaFileName)
+			throws FileNotFoundException, JasperException {
+		ServletWriter writer;
+		// Setup the ServletWriter
+		String javaEncoding = ctxt.getOptions().getJavaEncoding();
+		OutputStreamWriter osw = null;
+
+		try {
+		    osw = new OutputStreamWriter(
+		            new FileOutputStream(javaFileName), javaEncoding);
+		} catch (UnsupportedEncodingException ex) {
+		    errDispatcher.jspError("jsp.error.needAlternateJavaEncoding",
+		            javaEncoding);
+		}
+
+		writer = new ServletWriter(new PrintWriter(osw));
+		ctxt.setWriter(writer);
+		return writer;
+	}
 
     /**
      * Compile the servlet from .java file to .class file

Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java?rev=586228&r1=586227&r2=586228&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioBlockingSelector.java Thu Oct 18 19:16:41 2007
@@ -47,10 +47,6 @@
         boolean timedout = false;
         int keycount = 1; //assume we can write
         long time = System.currentTimeMillis(); //start the timeout timer
-        if (socket.getBufHandler().getWriteBuffer() != buf) {
-            socket.getBufHandler().getWriteBuffer().put(buf);
-            buf = socket.getBufHandler().getWriteBuffer();
-        }
         try {
             while ( (!timedout) && buf.hasRemaining()) {
                 if (keycount > 0) { //only write if we were registered for a write

Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java?rev=586228&r1=586227&r2=586228&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/NioSelectorPool.java Thu Oct 18 19:16:41 2007
@@ -139,10 +139,6 @@
         boolean timedout = false;
         int keycount = 1; //assume we can write
         long time = System.currentTimeMillis(); //start the timeout timer
-        if ( socket.getBufHandler().getWriteBuffer()!= buf ) {
-            socket.getBufHandler().getWriteBuffer().put(buf);
-            buf = socket.getBufHandler().getWriteBuffer();
-        }
         try {
             while ( (!timedout) && buf.hasRemaining() ) {
                 int cnt = 0;

Modified: tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java?rev=586228&r1=586227&r2=586228&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java (original)
+++ tomcat/tc6.0.x/trunk/java/org/apache/tomcat/util/net/SecureNioChannel.java Thu Oct 18 19:16:41 2007
@@ -392,38 +392,44 @@
      * @todo Implement this java.nio.channels.WritableByteChannel method
      */
     public int write(ByteBuffer src) throws IOException {
-        //make sure we can handle expand, and that we only use on buffer
-        if ( src != bufHandler.getWriteBuffer() ) throw new IllegalArgumentException("You can only write using the application write buffer provided by the handler.");
-        //are we closing or closed?
-        if ( closing || closed) throw new IOException("Channel is in closing state.");
-        
-        //the number of bytes written
-        int written = 0;
-        
-        if (!flush(netOutBuffer)) {
-            //we haven't emptied out the buffer yet
+        if ( src == this.netOutBuffer ) {
+            //we can get here through a recursive call
+            //by using the NioBlockingSelector
+            int written = sc.write(src);
             return written;
-        }
-
-        /*
-         * The data buffer is empty, we can reuse the entire buffer.
-         */
-        netOutBuffer.clear();
-
-        SSLEngineResult result = sslEngine.wrap(src, netOutBuffer);
-        written = result.bytesConsumed();
-        netOutBuffer.flip();
-
-        if (result.getStatus() == Status.OK) {
-            if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) tasks();
         } else {
-            throw new IOException("Unable to wrap data, invalid engine state: " +result.getStatus());
-        }        
-
-        //force a flush
-        flush(netOutBuffer);
-
-        return written;
+            //make sure we can handle expand, and that we only use on buffer
+            if ( src != bufHandler.getWriteBuffer() ) throw new IllegalArgumentException("You can only write using the application write buffer provided by the handler.");
+            //are we closing or closed?
+            if ( closing || closed) throw new IOException("Channel is in closing state.");
+    
+            //the number of bytes written
+            int written = 0;
+    
+            if (!flush(netOutBuffer)) {
+                //we haven't emptied out the buffer yet
+                return written;
+            }
+    
+            /*
+             * The data buffer is empty, we can reuse the entire buffer.
+             */
+            netOutBuffer.clear();
+    
+            SSLEngineResult result = sslEngine.wrap(src, netOutBuffer);
+            written = result.bytesConsumed();
+            netOutBuffer.flip();
+    
+            if (result.getStatus() == Status.OK) {
+                if (result.getHandshakeStatus() == HandshakeStatus.NEED_TASK) tasks();
+            } else {
+                throw new IOException("Unable to wrap data, invalid engine state: " +result.getStatus());
+            }        
+    
+            //force a flush
+            flush(netOutBuffer);
+            return written;
+        }
     }
     
     /**

Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=586228&r1=586227&r2=586228&view=diff
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Thu Oct 18 19:16:41 2007
@@ -42,6 +42,11 @@
   </subsection>
   <subsection name="Catalina">
     <changelog>
+      <fix><bug>43653</bug>Fix SSL buffer mixup when response is unable to write more than socket buffer can handle</fix>
+      <fix><bug>43643</bug>If connector doesn't support external executor, display warning</fix>
+      <fix><bug>43641</bug>Property bind multicast address for cluster membership</fix>
+      <fix><bug>42693</bug> Fix JSP compiler bug</fix>
+      <update>Add mbean descriptor for virtual webapp loader</update>
       <fix><bug>43487</bug>
         Fix request processing stats
       </fix>  



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org