Wildfly中的WAR扩展策略

时间:2015-08-26 10:36:46

标签: java java-ee war wildfly

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

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

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

添加具有这些功能的WildFly模块失败的原因相同。

一种可能性是重构WAR文件,以便FunctionAbstractionFunction位于一个单独部署的jar中。不幸的是,这将是一次重大的重构,这在当时是不可能的。

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

1 个答案:

答案 0 :(得分:1)

您可以使用EJB将用户代码部署为独立的jar / war。 EJB实现Function。主模块可以通过JNDI查找和查找它们。此外,您必须使用Function和DTO等公共类可用于用户模块和主战争。最简单的方法是从主战争分享类。您可以将META-INF / jboss-deployment-structure.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