我已经制作了一个jboss模块来提供一些基本代码。我想在将此模块部署到jboss时注销一些数据。我可以通过创建一个简单的类来实现这一点,如下所示:
@Singleton
@Startup
public MyClass {
@PostConstruct
public void init() {
System.out.println("I am in here");
}
}
上述initi方法有效,并且正确启动。注意,上面的模块是一个罐子。
但是,当我将上面的代码提取到自己的项目中,并将编译后的jar作为依赖项添加到同一个模块时,代码永远不会被执行。相反,如果我将它添加到war deployable,它可以按预期工作。即Maven依赖
<dependency>
<groupId>com.myModuleCommon</groupId>
<artifactId>moduleCommon</artifactId>
<version>1.0.0</version>
</dependency>
我查看了文档here并检查了这个stackoverflow question我不确定这是否是我不能让jar模块依赖于另一个jar的原因。
我的问题是,为什么我的提取代码在启动时不会被调用(即上面的类)当用作模块的依赖项时,但它既可以作为内部类,也可以作为可部署的war中的依赖项? / p>
即在我的示例war文件中,我可以在WEB-INF / lib下看到提取的依赖项。但是,在我的jar模块中,Manifest文件中没有任何内容表示正在使用此依赖项。也许这是问题的一部分,可能有一些替代方法来指定模块中的依赖关系。
答案 0 :(得分:0)
根据问题中的文档,我认为正确的答案是需要在MANIFEST或jboss-deplyment-structure.xml文件中显式添加模块依赖项。 Here is an article that shows how this can be done
即使用maven:
<configuration>
<archive>
<manifestEntries>
<Dependencies>com.something.dependency</Dependencies>
</manifestEntries>
</archive>
</configuration>
即使用jboss xml文件
<jboss-deployment-structure>
<deployment>
<dependencies>
<module name="com.something.dependency" />
</dependencies>
</deployment>
</jboss-deployment-structure>