如何识别丢失的 JBoss EAP 模块
How to identify the missing JBoss EAP module
我有一个列为依赖项的模块,
--dependencies=javax.servlet.api,javax.security.jacc.api,org.jboss.logging,org.picketbox,org.picketlink.federation,org.picketlink.federation.bindings,org.jboss.as.web
但是 eap 抱怨缺少 class,
Caused by: java.lang.ClassNotFoundException:
javax.servlet.http.HttpServletResponse from [Module
"com.td.cbaw.oauthlogin:main" from local module loader @16f65612
(finder: local module finder @311d617d (roots:
/opt/jboss/EAP-6.4.0/modules,/opt/jboss/EAP-6.4.0/modules/system/layers/base))]
javax.servlet.api 模块包含有问题的 class
...
81 javax/servlet/http/HttpServlet.class
82 javax/servlet/http/LocalStrings_es.properties
83 javax/servlet/http/HttpSessionContext.class
84 javax/servlet/http/NoBodyOutputStream.class
85 javax/servlet/http/HttpServletResponse.class <====
86 javax/servlet/http/HttpUtils.class
87 javax/servlet/http/HttpSessionListener.class
88 javax/servlet/http/HttpSessionActivationListener.class
....
一根怎么会造成这种问题?
这是我找到的有关该主题的信息的总和,Find_the_JBoss_Module_Dependency,基本上是无用的文档。
谢谢。
查看日志似乎缺少 jboss-servlet-api_3.0
JBoss 模块。要解决此问题,请按照以下步骤操作:
第 1 步: 创建目录 javax/servlet/api/main
,如 EAP-6.4.0/modules/system/layers/base/javax/servlet/api/main
第 2 步: 在使用以下内容创建的目录中创建 module.xml
:
EAP-6.4.0/modules/system/layers/base/javax/servlet/api/main/module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="javax.servlet.api">
<resources>
<resource-root path="jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-2.jar"/>
<!-- Insert resources here -->
</resources>
</module>
第三步:从https://mvnrepository.com/artifact/org.jboss.spec.javax.servlet/jboss-servlet-api_3.0_spec下载jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-2
并放入EAP-6.4.0/modules/system/layers/base/javax/servlet/api/main 目录并重新启动服务器。
已解决问题:ID10T 错误。我的 cli 文件预处理器没有替换发送到 jboss 的实际 cli 文件。我忘了通过 cli 强制复制模板。我正在使用的模板具有要替换的 ${} 变量,我被迫使用 sed,因为 jboss-cli 解析器不会对 "module" 命令执行变量替换。所以,我对 jboss-cli 中的一个错误的破解是根本原因。
我有一个列为依赖项的模块,
--dependencies=javax.servlet.api,javax.security.jacc.api,org.jboss.logging,org.picketbox,org.picketlink.federation,org.picketlink.federation.bindings,org.jboss.as.web
但是 eap 抱怨缺少 class,
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletResponse from [Module "com.td.cbaw.oauthlogin:main" from local module loader @16f65612 (finder: local module finder @311d617d (roots: /opt/jboss/EAP-6.4.0/modules,/opt/jboss/EAP-6.4.0/modules/system/layers/base))]
javax.servlet.api 模块包含有问题的 class
... 81 javax/servlet/http/HttpServlet.class 82 javax/servlet/http/LocalStrings_es.properties 83 javax/servlet/http/HttpSessionContext.class 84 javax/servlet/http/NoBodyOutputStream.class 85 javax/servlet/http/HttpServletResponse.class <==== 86 javax/servlet/http/HttpUtils.class 87 javax/servlet/http/HttpSessionListener.class 88 javax/servlet/http/HttpSessionActivationListener.class ....
一根怎么会造成这种问题?
这是我找到的有关该主题的信息的总和,Find_the_JBoss_Module_Dependency,基本上是无用的文档。
谢谢。
查看日志似乎缺少 jboss-servlet-api_3.0
JBoss 模块。要解决此问题,请按照以下步骤操作:
第 1 步: 创建目录 javax/servlet/api/main
,如 EAP-6.4.0/modules/system/layers/base/javax/servlet/api/main
第 2 步: 在使用以下内容创建的目录中创建 module.xml
:
EAP-6.4.0/modules/system/layers/base/javax/servlet/api/main/module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="javax.servlet.api">
<resources>
<resource-root path="jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-2.jar"/>
<!-- Insert resources here -->
</resources>
</module>
第三步:从https://mvnrepository.com/artifact/org.jboss.spec.javax.servlet/jboss-servlet-api_3.0_spec下载jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-2
并放入EAP-6.4.0/modules/system/layers/base/javax/servlet/api/main 目录并重新启动服务器。
已解决问题:ID10T 错误。我的 cli 文件预处理器没有替换发送到 jboss 的实际 cli 文件。我忘了通过 cli 强制复制模板。我正在使用的模板具有要替换的 ${} 变量,我被迫使用 sed,因为 jboss-cli 解析器不会对 "module" 命令执行变量替换。所以,我对 jboss-cli 中的一个错误的破解是根本原因。