Author: markt Date: Mon Nov 3 13:16:36 2014 New Revision: 1636347 URL: http://svn.apache.org/r1636347 Log: Put the current version of the TODO list in svn.
Modified: tomcat/trunk/TOMCAT-NEXT.txt Modified: tomcat/trunk/TOMCAT-NEXT.txt URL: http://svn.apache.org/viewvc/tomcat/trunk/TOMCAT-NEXT.txt?rev=1636347&r1=1636346&r2=1636347&view=diff ============================================================================== --- tomcat/trunk/TOMCAT-NEXT.txt (original) +++ tomcat/trunk/TOMCAT-NEXT.txt Mon Nov 3 13:16:36 2014 @@ -15,210 +15,30 @@ limitations under the License. ================================================================================ -Notes of things to consider for the next major Tomcat release (probably 8.0.x -but possibly 7.1.x). +Notes of things to consider for the next major Tomcat release (9.0.x) - 1. Refactor the TLD parsing. TLDs are currently parsed twice. Once by Catalina - looking for listeners and once by Jasper. - - Complete + 1. Fix Java 8 Javadoc warnings. Currently ~2800. - 2. Refactor the XML parsing (org.apache.tomcat.util.xml ?) to remove duplicate - XML parsing code in Catalina and Jasper such as the entity resolvers used - for validation. - - Complete + 2. Remove BIO AJP and HTTP connector. - 3. TLDs may have a many to many relationship between URIs and TLD files. This - can result in the same TLD file being parsed many times. Refactor the - TldLocationCache to cache the parsed nodes (will need to check for changes - to TLD files). - - Complete + 3. Remove Comet support. - 4. TLD files should be included in the dependencies for JSP and Tag files. - - Complete + 4. Refactor the connectors to minimise code duplication + - All implementation specific per connector code -> Endpoint + - All implementation specific per connection code -> SocketWrapper + + 5. SNI support for JSSE. - 5. Run the unused code detector and remove everything that isn't currently used. - Add deprecation markers for the removed code to Tomcat 7.0.x - - Complete + 6. See what Java 8 language features we want to use. - 6. Change the default URIEncoding on the connector to UTF-8. - - Complete + 7. Connector refactoring required for HTTP2/SPDY APIs that might be exposed in + the Servlet API. - 7. Rip out all the JNDI code in resource handling and replace it with straight - URLs (File or WAR). - - Complete + 8. Keep an eye on the other Java EE 8 EGs (no sign of any movement apart + from the Servlet EG so far). - kkolinko: I think this proposal goes too far. There are several - separate issues. There are: + 9. Refactor WebSocket I/O to go directly to Tomcat's internals rather than via + the Servlet API. - a) Internal API to define resources - - BaseDirContext implementing aliases and resource jars, - and there will be overlays in Servlet 3.1 - - StandardContext.setResources() allowing an arbitrary DirContext - implementation via <Resources> element. - - Concerns: - - Too many ways to configure it. - - b) Internal API to lookup resources - - DirContext interface - - Concerns: - - Unnecessary objects, e.g. NamingException instead of null. - - - Too many methods. Name vs. String. list() vs. listBindings(). - - - Limited API. As a workaround, there are non-standard methods that - are implemented on BaseDirContext instead, e.g. getRealPath(), - doListBindings(..). - - - All caching (ProxyDirContext) and aliases handling is - performed on the root level only. - - Once I do a lookup that returns a DirContext, further lookups on it - will bypass the caching and aliases. - - c) WebappClassLoader and its interaction with resources - - WebappClassLoader uses DirContext API to access resources (classes, - jars). - - Note that it has to construct a classpath for Java compiler called by - Jasper. The compiler cannot operate on a DirContext and needs access - to actual files and JARs. - - Concerns: - - There are problems with access to classes and JAR files in - non-unpacked WARs. - - It is resolved by unzipping the files into the working directory (in - WebappLoader#setRepositories()). - - Note that DirContext is not notified of this copying. - StandardJarScanner does not know of those copies either. - - - There are problems when the classes directory is served from - multiple locations - - It seems to be worked around by adding the path of the alternative - classes directory to virtualClasspath of VirtualWebappLoader (as shown - by example in config/context.html#Virtual_webapp), but it is likely - that I miss something. - - - antiJARLocking support in WebappClassLoader creates copies of - resources, but does not notify the DirContext. - - - WebappClassLoader.jarFiles is used to track JAR files and keep them - open. These might be useful when looking for resources in those files. - These might be useful for StandardJarScanner. - - d) StandardJarScanner - - Concerns: - - It essentially scans the same JARs as accessed by WebappClassLoader. - - It might be better to access them via WebappClassLoader rather that - through Servlet API methods. - - The scanner is used by Jasper as well, so there are some concerns to - keep the components independent. - - e) URL returned by ServletContext.getResource() - jndi:/hostName/contextPath/resourcePath - - Goodies: - - Uniform URL space. Both files and directories can be represented, - hiding details of aliases, resource jars, etc. - - - It hides implementation details. - - - Permissions can be expressed as JndiPermission. They do not depend - on context version number. - - - Accessing a resource through such URL leverages the cache - implemented in ProxyDirContext class. We do not access the file system - directly, nor need to open a JAR file. - - - It can be created from a String if necessary. - - Such use relies on DirContextURLStreamHandler.bindThread(..) being - called earlier in the same thread. - - Concerns: - - Some components would like to get "real" resource URL from this one. - - Maybe it can be exposed through some special header name, - DirContextURLConnection.getHeaderField(str)? - - How such real URL can be prepared? - DirContext.getNameInNamespace()? - BaseDirContext.getRealPath()? - ((FileResourceAttributes)DirContext.getAttributes()).getCanonicalPath()? - - - A resource lookup is performed twice. The first time in - ServletContext.getResource() (implemented in ApplicationContext.getResource()) - to return null for non-existing paths. - The second time in DirContextURLConnection.connect(). - - It is good that there is a cache in ProxyDirContext that saves time - for repeated lookups. - - - Using URLs involves encoding/decoding. - - If there were some other API to access resources in a web application, - I would prefer some opaque object that allows access to resource - properties, but is converted to string/url form only on demand. - - f) Connection, created from jndi: URL - DirContextURLStreamHandler, DirContextURLConnection - - Goodies: - - DirContextURLConnection provides information about resource via - methods such as getContentLength(), getHeaderField(str). - - Concerns: - - It exposes DirContext through some APIs, such as - DirContextURLConnection.getContent(). - - Is this feature going to be preserved for compatibility, or to be - removed? - - - DirContextURLConnection.list(): a public method, that is not part of - the usual URL API. So URL API is lacking. Maybe some other methods - could be added. - - A possible candidate could be "isCollection()", instead of asking for - getContentType() and checking its value against ResourceAttributes.COLLECTION_TYPE. - - Threads: - http://markmail.org/thread/hqbmdn2qs6xcooko - - 8. Review the connector shutdown code for timing and threading issues - particularly any that may result in a client socket being left open after a - connector.stop(). - - Complete. - - 9. Remove the svn keywords from all the files. (Just Java files?) - - Complete. - -10. Code to the interfaces in the o.a.catalina package and avoid coding directly - to implementations in other packages. This is likely to require a lot of - work. Maybe use Structure 101 (or similar) to help. - - Partially complete - probably as far as is practical. - -11. Merge Service and Engine - - Decided not to do this. - -12. Java 7 updates - - Use of <> operator where possible - - Complete - - Use of try with resources - - Complete - - Catching multiple exceptions - - Started - - javax.[annotation to el] complete - - remainder TODO - -13. Fix all FindBugs warnings - - Complete - -14. Review date formatting with a view to reducing duplication. +10. Remove the use of system properties to control configuration wherever + possible \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org