标签: servlet-4

Widlfy 22 WELD 警告与基于表单的编程登录

我目前在 Wildfly 22 上部署了一个 Web 应用程序,使用 JSF 2.3 和 OpenJDK 11。我目前正在将登录页面从 j_security_check 迁移到以编程方式登录,遵循本文中的 BalusC 示例:

使用 j_security_check 在 Java EE / JSF 中执行用户身份验证

我不会发布登录代码,因为它与 BalusC 的帖子完全相同。

登录过程工作正常,但是在进行此更改后,我在 Wildfly 上收到两个警告。

WELD-000717: Unable to deactivate context org.jboss.weld.module.web.context.http.LazyHttpConversationContextImpl@14d2bf9d when destroying request HttpServletRequestImpl [ GET /app/login/login.xhtml ]
Run Code Online (Sandbox Code Playgroud)
WELD-000335: Conversation context is already active, most likely it was not cleaned up properly during previous request processing: HttpServletRequestImpl [ GET /app/resources/bootstrap/css/bootstrap.min.css]
Run Code Online (Sandbox Code Playgroud)

关于导致这些警告的原因有什么提示吗?

感谢您的帮助!

authentication cdi wildfly jsf-2.3 servlet-4

9
推荐指数
0
解决办法
973
查看次数

将 servlet 4.0.1 升级到 servlet 5.0

我正在将 servlet 4.0.1 升级到 servlet 5.0。我正在使用以下 servlet 4.0.1 的 Maven 依赖项

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
</dependency> 
Run Code Online (Sandbox Code Playgroud)

当我升级到 servlet 5.0 时,我看到有一个新术语“Jakarta”,并且 servlet5 附带具有以下 maven 依赖项的 Jakarta API。

<dependency>
  <groupId>jakarta.servlet</groupId>
  <artifactId>jakarta.servlet-api</artifactId>
  <version>5.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

因此,我尝试在互联网上搜索但找不到以下问题

  1. 请解释一下这个新术语“雅加达”,比如它是如何出现的?
  2. 这是使用 Jakarta API 升级 servlet 5.0 的唯一方法吗?我们可以使用旧的“javax.servlet-api”吗?
  3. 我明白了,4.0 版本中也有 Jakarta,但我们没有使用它。它与 servlet 4 没有任何依赖性吗? https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api
  4. 将 servlet 4.0 升级到 servlet 5.0 还需要什么?

还请建议任何文档以供参考(如果有)

java eclipse servlet-4 jakarta-ee

5
推荐指数
1
解决办法
6240
查看次数

必须声明 web-app 元素(Servlet 4.0)

我尝试使用 Servlet 4.0 命名空间。该应用程序运行良好,但 IDEA 检测到错误:“Element web-app”必须声明”

<?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_4_0.xsd"
         version="4.0">
    ...
    ...
</web-app>
Run Code Online (Sandbox Code Playgroud)

快照 (我无法直接发布图像。)

当我将版本更改为3.1时,效果很好:

<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">
Run Code Online (Sandbox Code Playgroud)

根据Java EE:Java EE 部署描述符的 XML 模式# 使用 Java EE 模式

所有 Java EE 7 和更高版本的部署描述符模式共享命名空间http://xmlns.jcp.org/xml/ns/javaee/。每个模式文档都包含一个版本属性,其中包含规范的版本。例如,Servlet 规范的 XML 模式文档包含版本属性值“3.1”,与规范的特定版本以及模式文档本身有关。

version="4.0"支持吗?我使用 IntelliJ IDEA 2017.2.5 + javax.servlet-api 4.0 + Apache Tomcat v9.0.1。


更新:我找到了 web.xml 的示例(在apache-tomcat-9.0.1/webapps/examples/WEB-INF/web.xml):

<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_4_0.xsd"
  version="4.0" …
Run Code Online (Sandbox Code Playgroud)

web.xml servlets servlet-4 jakarta-ee

4
推荐指数
1
解决办法
2万
查看次数