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: [email protected]
For additional commands, e-mail: [email protected]