当前位置: 首页 > 面试题库 >

如何找到Glassfish服务器的Servlet API版本?

彭俊智
2023-03-14
问题内容

在编写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应用程序开发指南
,上面写着:“
GlassFish Server支持Java Servlet Specification 3.0版。” 但显然对于Glassfish
3.1,我找不到每个版本的Glassfish之一(甚至不是我的-4.1)


问题答案:

看一下Java
EE版本
。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。

但是, 尽管 很大,但这是一回事。第二件事是,Web应用程序的web.xml版本也起作用。并非所有人都知道。

如果您的Web应用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>

那么您的web应用也将真正以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>

那么您的Web应用程序将以Servlet 3.0兼容方式运行,即使将其部署到Servlet
3.1兼容容器中也是如此!上面的内容影响了ServletContext#getMajorVersion()getMinorVersion(),因此它们实际上不涉及容器,只涉及Webapp本身。

如果您的Web应用程序web.xml包含一个<!DOCTYPE>,而不管DTD和版本如何,那么即使声明了更新的XSD,它也将以Servlet
2.3兼容方式运行!

<?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>


 类似资料:
  • 我的glassFish服务器有问题。当我部署项目时,他们会向我显示以下消息: 构建impl。xml:1045:尚未部署该模块。 我一直在重新启动netbeans,并将debugmode更改为TRUE,但问题仍然存在。 这是build impl生产的1045线。xml: 我使用: macOS塞拉利昂10.12 NetBeans 8.2 GlassFish 4.1.1 JDK 8

  • 我在C:\glassfish3目录中安装了GlassFish服务器。 当我在C:\glassfish3\bin目录中键入“dir”时,文件就会被列出。 但是当我输入asadmin时,我得到“系统找不到指定的路径”。 可能出了什么问题? 如何启动GlassFish服务器? --编辑-- 此外,在安装后,我得到: 创建域 执行命令:C:\glassfish3\glassfish\bin\asadmin

  • 每当我从Netbeans运行我的项目时,都会出现以下错误: 以下是日志输出:

  • 我已经扫描了SO,发现没有关于如何在glassfish上安装letsencrypt.orgSSL证书的详细说明,特别是在本教程中,我将使用glassfish 4.1.2 build 1。经过大量的尝试和错误,我终于能够整理出以下指南。所以我希望可以问和回答我自己的问题。 在本教程中,我将使用Ubuntu16.04 LTS服务器,从我的Ubuntu16.04 LTS桌面访问Shell。

  • 问题内容: 我可以确定是否可以看到JAVA OPTS参数。我想使用Jconsole监视hornetq服务器,所以我需要端口号。 我记得前一段时间连接到它时使用过一些命令,例如java grep等。 问题答案: 如果知道进程号,则可以使用netstat查找程序正在侦听的端口,例如 JMX侦听器的常规端口是1099。

  • 我们在netbeans上有一个java应用程序,它使用Glassfish Server4.1。我们最近进行了一次扫描,我们得到了建议,我们应该将Glassfish服务器更新到最新版本,因为V4.1有漏洞问题。我下载了Glassfish Server5.0,在zip中,我解压缩并在文件夹中导航。我可以访问管理控制台,但是当我尝试从netbeans中的工具添加Glassfish服务器时,它告诉我,这不