gpt4 book ai didi

java - Wildfly 中的 WAR 扩展策略

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

在 WildFly 项目中,我有一个很大的 WAR 文件(大约 100 MB),其中包含 JAR 文件中的整个应用程序(EJB、GUI、Web 服务等)

在此 WAR 中,有一些函数实现了自定义 Function 接口(interface)(还有其他类,如 AbstractFunction 等)。现在我想使用用户提供的函数扩展应用程序(它们应该位于类路径上,然后应用程序可以访问该路径。

问题是我无法在主 WAR 之前部署函数,因为 FunctionAbstractFunction 等是尚未部署的 WAR。

由于同样的原因,添加带有函数的 WildFly 模块会失败。

一种可能是重构 WAR 文件,以便 FunctionAbstractionFunction 位于单独部署的自己的 jar 中。不幸的是,这将是一次重大重构,目前还不可能。

那么将 JAR 中的用户定义函数放入 WAR 文件中是唯一(简单)的可能性吗?

最佳答案

您可以使用 EJB 将用户代码部署为独立的 jar/war。 EJB 实现函数。主模块可以通过JNDI查找并找到它们。此外,您还必须为用户模块和主战提供诸如 Function 和 DTO 之类的通用类。最简单的方法是共享主战中的类。您可以将 META-INF/jboss-deployment-struct.xml 添加到客户端模块:

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
<deployment>
<dependencies>
<module name="deployment.main.war"/>
</dependencies>
</deployment>
</jboss-deployment-structure>

附注

我有类似的项目结构:

  • core.war包含Plugin接口(interface)
  • 插件集*.jar(依赖于 core.war)

在我的 core.war 中,我有这样的代码:

 Plugin srv = (Plugin) new InitialContext().lookup(jndi);

我的插件看起来像:

 @Stateless
public class UserPlugin implements Plugin

JNDI 看起来像 java:global/user-plugin/UserPlugin

关于java - Wildfly 中的 WAR 扩展策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32224339/

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