耳从IDE部署失败,但是从Maven构建安装工程
红帽的JBoss Developer Studio中 版本:10.2.0.GA 版本ID:GA-v20161125-1418-B55 构建日期:20161125-1418耳从IDE部署失败,但是从Maven构建安装工程
我有一个单独项目的行家EAR项目:
战争 EJB-JAR EJB客户端(本地接口)
如果我运行命令行父项目mvn clean install
,我可以部署生成的耳朵文件到jboss eap7没有问题。但是,如果我执行干净/从IDE建立所有,然后选择运行的服务器上,我得到以下错误:
Caused by: java.lang.IllegalStateException: WFLYEE0042: Failed to
construct component instance
Caused by: java.lang.IllegalArgumentException: Can not set
com.hsntech.hif.eao.OperationsCache field
com.hsntech.hif.application.HIFManagement.opCache to
com.hsntech.hif.eao.OperationsCache$$$view8"}}
的EJB客户端JAR项目包含接口:
@Local
public interface OperationsCache {
Map<String, OperationMapping> getOperationsMaps() throws HIFEJBException;
void resetCache();
}
和ejb.jar impelemtation包含:
@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.CONTAINER)
public class OperationsCacheImpl implements OperationsCache, Observer {
的EJB是在战争中的项目被创建在这个类:
@Singleton
@Startup
public class HIFManagement implements HIFManagementMBean {
@EJB
private OperationsCache opCache;
我的钱去上课问题。让Eclipse构建和打包应用程序并不是完全不受错误的影响。 IDE将保留其自己的构建说明,以及如何将您的应用程序组装成可部署的.ear工件。您可以使用项目设置/ Web组合中的设置。我想,如果你将构建的Eclipse与Eclipse构建的耳朵比较,模块或库中包含的类将会有所不同。
如果您使用的是maven ejb插件,要从ejb-client模块中过滤掉实现类,那么我认为没有办法在Eclipse中获得相同的工作。这就是说,我不认为你实际上需要一个单独的ejb-client模块。耳内的战争模块将有权访问父耳模块的罐子超模块中包含的所有类。因此,只需将您的ejb-jar作为依赖添加到范围为provided
的战争模块。
我会去给你治愈了所有可能出现的问题:1。 在父POM排列模块的顺序:
<modules>
<module>core-module</module>
<module>depends-on-core</module>
<module>depends-on-core2</module>
<module>depends-on-depends-on-core</module>
</modules>
-
mvn eclipse:clean
不用担心开发商Studio是基于Eclipse的,所以它不会有问题。 mvn eclipse:eclipse
在服务器上运行
一般的建议:不要在Eclipse反正做到这一点,这是容易出现由于类加载等随机误差...
但这里有一些可能的提示:
检查您是否使用相同从控制台和Eclipse Maven运行时。有些发行版的Eclipse附带一个奇怪的内置的版本
检查,如果Eclipse中设置为忽略某些Maven插件
检查,如果JBoss的部署通过控制台的工作。有一个插件。如果您可以开始工作,那么您可以使用Eclipse中的工具,而不是内置功能。
注入似乎在类com.hsntech.hif.application.HIFManagement中失败。请显示该代码。 – Gimby