gpt4 book ai didi

java - Wildfly 如何使用自定义模块中的部署类

转载 作者:行者123 更新时间:2023-12-01 19:10:29 25 4
gpt4 key购买 nike

我正在使用 undertow 子系统并为我的自定义过滤器创建了一个模块。

将模块注册为:

module add --name=example.com.handler --resources=/home/owner/module/jbossModule.jar

在standalone.xml中添加过滤器

<filter name="my-filter" module="example.com.handler" class-name="example.com.handler.ExampleHandler"/>

我已经用 TestClass 部署了我的 war 。

在我的自定义过滤器 ExampleHandler.java 中,我从外部配置读取类名,并使用 Class.forName(...) 创建新实例.

简化:

public class ExampleHandler implements HttpHandler {


public ExampleHandler () {
}

@Override
public void handleRequest(HttpServerExchange exchange) throws Exception {
final String className = "TestClass"
Class.forName(className).newInstance();
}
}

但在 ExampleHandler 内,未找到类 TestClass 并引发 ClassNotFoundException。

如何使模块能够从部署访问类?

最佳答案

要使 TestClass.class 对 war 文件可见,您必须通过 jboss-deployment-struction.xml 文件添加对 war 文件的模块依赖关系。 jboss-deployment-struct.xml 将类似于 war 文件:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="example.com.handler" />
</dependencies>

</deployment>
</jboss-deployment-structure>

将此文件放置在 WEB-INF 目录下。浏览documentation有关 Wildfly 类加载的更多详细信息。

关于java - Wildfly 如何使用自定义模块中的部署类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59488171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com