我目前在 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)
关于导致这些警告的原因有什么提示吗?
感谢您的帮助!
我正在将 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)
因此,我尝试在互联网上搜索但找不到以下问题
还请建议任何文档以供参考(如果有)
我尝试使用 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)