Como encontrar a versão da API do servlet para o servidor glassfish?

Enquanto codificava um servlet, encontrei um método que diz

Since: Servlet 3.1 

Eu acho que se eu tiver a autohint do NetBeans para usá-lo é porque eu tenho essa versão do Servlet. Mas não consigo encontrar um lugar para confirmar isso. Eu estou usando glassfish4.1 como contêiner. Se eu for ao mypathtoglassfish4.1\glassfish\modules lá eu posso ver javax.servlet-api.jar e dentro de um manifesto que diz:

 Implementation-Version: 3.1.0 

Essa é a maneira correta de verificar isso? Estou especialmente interessado em poder dizer aos meus colegas “vá para o flask e verifique essa propriedade”, então tenho certeza de que meu código será executado em seu servidor.

Como alternativa, encontrei uma página da Web do Oracle GlassFish Server 3.1 Application Development Guide que diz: “O GlassFish Server suporta a versão 3.0 do Servlet Java Specification.” mas, obviamente, para Glassfish 3.1, e eu não consegui encontrar um desses para cada versão glassfish (nem mesmo para o meu -4.1)

Veja a versão do Java EE . A versão do servlet (e JSP, JSF, EJB, JPA, etc) anda de mãos dadas com a versão Java EE.

  • Java EE 8 = Servlet 4.0
  • Java EE 7 = Servlet 3.1
  • Java EE 6 = Servlet 3.0
  • Java EE 5 = Servlet 2.5
  • J2EE 1.4 = Servlet 2.4
  • J2EE 1.3 = Servlet 2.3
  • J2EE 1.2 = Servlet 2.2

Veja na página inicial do servidor / documentação como se apresenta. Para o GlassFish , atualmente (com 4.1):

O primeiro servidor de aplicativos Java EE 7 do mundo

Então, é o Servlet 3.1.

Mas, com um grande mas , isso é uma coisa. A segunda coisa é que a versão web.xml do webapp também desempenha um papel. Nem todo mundo sabe disso.

Se o web.xml do seu webapp for declarado conforme o Servlet 3.1, como abaixo,

     

então seu webapp também será realmente executado no modus do Servlet 3.1.

No entanto, se for declarado conforme o Servlet 3.0, como abaixo ou até mais antigo,

     

então seu webapp será executado no modo de compatibilidade do Servlet 3.0, mesmo quando implantado em um contêiner compatível com o Servlet 3.1! Os ServletContext#getMajorVersion() acima influenciam o ServletContext#getMajorVersion() e getMinorVersion() , então eles realmente não dizem nada sobre o container, mas apenas sobre o próprio webapp.

Se o web.xml do seu webapp contiver um , independentemente do DTD e da versão, ele será executado no modo de compatibilidade do Servlet 2.3, mesmo quando houver um novo XSD declarado!

      

Primeiro, dê uma olhada nas versões 2.xe 3.0.x do GlassFish Open Source Edition . Também no seu servlet você pode adicionar

 HttpSession session = request.getSession(); int majorVersion = session.getServletContext().getMajorVersion(); int minorVersion = session.getServletContext().getMinorVersion();