如何为glassfish服务器找到servlet API版本?

时间:2015-06-11 09:44:56

标签: java java-ee servlets glassfish

在编写servlet时,我找到了一个说

的方法
Since:
    Servlet 3.1

我想如果我有NetBeans的自动提示使用它是因为我有Servlet版本。但我找不到确认的地方。我使用glassfish4.1作为容器。如果我转到mypathtoglassfish4.1\glassfish\modules那里,我可以看到javax.servlet-api.jar并在清单中显示:

Implementation-Version: 3.1.0

这是检查它的正确方法吗?我特别感兴趣的是能够告诉我的同事"去那个罐子并检查那个属性"所以我确定我的代码将在他们的服务器上运行。

作为替代方案,我找到了一个网页Oracle GlassFish Server 3.1 Application Development Guide,上面写着:" GlassFish Server支持Java Servlet规范3.0版。"但很明显对于Glassfish 3.1而言,我无法找到每种玻璃鱼版本中的一种(甚至不适用于我的-4.1)

2 个答案:

答案 0 :(得分:5)

看看Java EE version。 Servlet(以及JSP,JSF,EJB,JPA等)版本与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

查看服务器主页/文档如何呈现自己。对于GlassFish,目前(使用4.1):

  

世界上第一个Java EE 7应用服务器

所以,它是Servlet 3.1。

但是,有一个很强的,这是一回事。第二件事是,webapp的web.xml版本也起了作用。不是每个人都知道。

如果您的webapp的web.xml被声明符合Servlet 3.1,如下所示

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">

    <!-- Config here. -->
</web-app>

那么你的webapp也将真正运行在Servlet 3.1模式中。

但是,如果它声明符合Servlet 3.0,如下所示,甚至更旧,

<?xml version="1.0" encoding="UTF-8"?>
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

    <!-- Config here. -->
</web-app>

然后你的webapp将以Servlet 3.0兼容性模式运行,即使部署到Servlet 3.1兼容容器时也是如此!上面会影响ServletContext#getMajorVersion()getMinorVersion(),所以他们实际上对容器一无所知,只关注webapp本身。

如果您的webapp web.xml包含<!DOCTYPE>,无论DTD和版本如何,那么它将以Servlet 2.3兼容性模式运行,即使在宣布更新的XSD时也是如此!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "java.sun.com/dtd/web-app_2_3.dtd">
<web-app 
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    version="3.1">

    <!-- This is WRONG! The DOCTYPE must be removed! -->
</web-app>

答案 1 :(得分:1)

首先,看看Comparing GlassFish Open Source Edition versions 2.x and 3.0.x。您也可以在servlet中添加

{{1}}