在WildFly项目中,我有一个很大的WAR-File(大约100 MB),它包含JAR-Files中的整个应用程序(EJB,GUI,Web服务等)
在这个WAR中,有一些函数实现了自定义Function
接口(还有其他类,如AbstractFunction
等)。现在我想用用户提供的函数扩展应用程序(它们应该在类路径上,然后应用程序可以访问它。
问题是我无法在主WAR之前部署函数,因为Function
,AbstractFunction
等是尚未部署的WAR。
添加具有这些功能的WildFly模块失败的原因相同。
一种可能性是重构WAR文件,以便Function
,AbstractionFunction
位于一个单独部署的jar中。不幸的是,这将是一次重大的重构,这在当时是不可能的。
将JAR中的用户定义函数放入WAR文件的唯一(简单)可能性是什么?
答案 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中,我的代码如下:
Plugin srv = (Plugin) new InitialContext().lookup(jndi);
我的插件看起来像:
@Stateless
public class UserPlugin implements Plugin
JNDI看起来像java:global/user-plugin/UserPlugin