提问者:小点点

野蝇中的战争扩展策略


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

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

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

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

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

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


共1个答案

匿名用户

您可以使用EJB将用户代码部署为独立的jar/war。EJB实现了Function。主模块可以通过JNDI查找和查找它们。您还必须使诸如Function和DTO之类的通用类可用于用户模块和主战争。最简单的方法是共享来自主战争的类。您可以将META-INF/jbost-部署结构. xml添加到客户端模块中:

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

PS

我有类似的结构项目:

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

在我的core. war中,我有如下代码:

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

我的插件看起来像:

 @Stateless
 public class UserPlugin implements Plugin

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