You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Mark Thomas <ma...@apache.org> on 2017/09/21 21:16:33 UTC

Servlet 4.0 implementation status

Hi all,

As of a few minutes ago the Servlet 4.0 API implementation in 9.0.x is
aligned with the 4.0 final release. It is also fully implemented. That
opens up the possibility of both beta and stable labels for the next
9.0.x release. It also means that the next release will be a point
release, not a milestone release.

I'll update the version number info accordingly shortly.

Mark

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


Re: Servlet 4.0 implementation status

Posted by Konstantin Kolinko <kn...@gmail.com>.
2017-09-22 0:16 GMT+03:00 Mark Thomas <ma...@apache.org>:
> Hi all,
>
> As of a few minutes ago the Servlet 4.0 API implementation in 9.0.x is
> aligned with the 4.0 final release. It is also fully implemented. That
> opens up the possibility of both beta and stable labels for the next
> 9.0.x release. It also means that the next release will be a point
> release, not a milestone release.
>
> I'll update the version number info accordingly shortly.

Thank you.

Maybe label the next version as "9.0.1", skipping "9.0.0"?

With so many milestone releases when someone mentions "9.0.0" in some
e-mail it will be confusing whether that is the real "9.0.0" release
or one of those milestones. Some other projects have an explicit
"RELEASE" or "GA" suffix, but we do not have one.

With Tomcat 8.0 we skipped 8.0.0 as it did not pass the vote.
http://tomcat.apache.org/oldnews-2014.html
https://lists.apache.org/thread.html/03dcdb8ae1c3b0b551815c7f7090bc682976876177f7029c4397d9ae@1390940925@%3Cdev.tomcat.apache.org%3E

Best regards,
Konstantin Kolinko

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


Re: Servlet 4.0 implementation status

Posted by Mark Thomas <ma...@apache.org>.
On 22/09/17 15:16, Konstantin Kolinko wrote:
> 2017-09-22 0:16 GMT+03:00 Mark Thomas <ma...@apache.org>:
>> Hi all,
>>
>> As of a few minutes ago the Servlet 4.0 API implementation in 9.0.x is
>> aligned with the 4.0 final release. It is also fully implemented. That
>> opens up the possibility of both beta and stable labels for the next
>> 9.0.x release. It also means that the next release will be a point
>> release, not a milestone release.
>>
>> I'll update the version number info accordingly shortly.
> 
> Reviewing appendix A.1 "Changes Since Servlet 3.1" of Servlet 4.0
> spec, I noted two points:
> 
> "8. Clarify metadata-complete in Section 8.1, “Annotations and pluggability”."
> 
> Section 8.1. clarifies that the following annotations must be
> processed even when metadata-complete="false":
> 
> "Annotations that do not have equivalents in the deployment XSD include
> javax.servlet.annotation.HandlesTypes and all of the CDI-related
> annotations. These annotations must be processed during annotation scanning,
> regardless of the value of “metadata-complete”."

I think we are compliant here. We do look for HandlesTypes matches when
metadata-complete="true" and we don't provide a CDI implementation.

> 
> The code in DefaultInstanceManager
> [[[
>     private Object newInstance(Object instance, Class<?> clazz)
>             throws IllegalAccessException, InvocationTargetException,
> NamingException {
>         if (!ignoreAnnotations) {
>             Map<String, String> injections =
> assembleInjectionsFromClassHierarchy(clazz);
>             populateAnnotationsCache(clazz, injections);
>             processAnnotations(instance, injections);
>             postConstruct(instance, clazz);
>         }
>         return instance;
>     }
> ]]]
> 
> "ignoreAnnotations" flag turns all annotation processing off.

I think that is consistent with 8.1 that lists all the annotations that
can be ignored with metadata-complete="true".

> "13. Remove DTDs and Schemas from binary artifact for Servlet API."
> 
> I do not mind us continuing shipping those resources,
> but maybe there was some reason for their removal?

Let me check back in the EG archives...

<quote>
we intentionally stopped including the DTDs and XSDs in the
javax.servlet:javax.servlet-api JAR, because they are better maintained
outside of that jar.  In the case of GlassFish, they end up in the dtds
and schemas directories, respectively.
</quote>

Looks like a Glassfish packaging decision.

I'm not seeing a need to package these elsewhere in Tomcat.

Mark


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


Re: Servlet 4.0 implementation status

Posted by Konstantin Kolinko <kn...@gmail.com>.
2017-09-22 0:16 GMT+03:00 Mark Thomas <ma...@apache.org>:
> Hi all,
>
> As of a few minutes ago the Servlet 4.0 API implementation in 9.0.x is
> aligned with the 4.0 final release. It is also fully implemented. That
> opens up the possibility of both beta and stable labels for the next
> 9.0.x release. It also means that the next release will be a point
> release, not a milestone release.
>
> I'll update the version number info accordingly shortly.

Reviewing appendix A.1 "Changes Since Servlet 3.1" of Servlet 4.0
spec, I noted two points:

"8. Clarify metadata-complete in Section 8.1, “Annotations and pluggability”."

Section 8.1. clarifies that the following annotations must be
processed even when metadata-complete="false":

"Annotations that do not have equivalents in the deployment XSD include
javax.servlet.annotation.HandlesTypes and all of the CDI-related
annotations. These annotations must be processed during annotation scanning,
regardless of the value of “metadata-complete”."

The code in DefaultInstanceManager
[[[
    private Object newInstance(Object instance, Class<?> clazz)
            throws IllegalAccessException, InvocationTargetException,
NamingException {
        if (!ignoreAnnotations) {
            Map<String, String> injections =
assembleInjectionsFromClassHierarchy(clazz);
            populateAnnotationsCache(clazz, injections);
            processAnnotations(instance, injections);
            postConstruct(instance, clazz);
        }
        return instance;
    }
]]]

"ignoreAnnotations" flag turns all annotation processing off.


"13. Remove DTDs and Schemas from binary artifact for Servlet API."

I do not mind us continuing shipping those resources,
but maybe there was some reason for their removal?

Best regards,
Konstantin Kolinko

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