我试图为仅包含MDB的ejb-jar部署创建一个wildfly swarm jar。
bean onMessage
方法正在使用项目依赖项中包含的第三方库。
生成的超级jar包含库但由于某种原因,当我尝试使用该库时,我得到ClassNotFound
异常。
如果我们改变包装类型的简单" jar"战争"战争"一切都按预期工作。
将第三方依赖项添加到wildfly swarm的简单ejb-jar部署的正确方法是什么?
答案 0 :(得分:0)
我不确定什么是“正确”的解决方案。对于我来说,荆棘软件包(以前是野生蜂群)总是需要作为WAR,并且即使没有使用,也总是需要包含undertow
和/或jaxrs
,这似乎让我感到有些奇怪。
正如上面的第一条评论所述,有可能在JAR程序包中包含第三方依赖项。
在我的Maven项目的src/main/resources
中,我已经添加了子目录modules/com/example/mymodule/main
,并且已经在module.xml
目录中添加了main
。
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.3" name="com.example.mymodule">
<resources>
<artifact name="org.apache.pdfbox:pdfbox:2.0.13" />
</resources>
<dependencies>
<module name="org.apache.commons.logging"></module>
<module name="org.apache.commons.io"></module>
<module name="org.apache.httpcomponents"></module>
</dependencies>
</module>
上面的xml引用了我已包含在POM中的Maven工件。您还可以引用其他模块。
然后我将jboss-deployment-structure.xml
添加到src/main/resources/META-INF
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="com.example.mymodule" />
</dependencies>
</deployment>
</jboss-deployment-structure>
您添加到POM的任何第三方依赖现在都需要添加到module.xml中。我知道这有点痛苦,如果maven插件可以执行一些操作来使它自动化,那将非常好。