2017-02-09 14 views
2

红帽的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; 
+0

注入似乎在类com.hsntech.hif.application.HIFManagement中失败。请显示该代码。 – Gimby

回答

0

我的钱去上课问题。让Eclipse构建和打包应用程序并不是完全不受错误的影响。 IDE将保留其自己的构建说明,以及如何将您的应用程序组装成可部署的.ear工件。您可以使用项目设置/ Web组合中的设置。我想,如果你将构建的Eclipse与Eclipse构建的耳朵比较,模块或库中包含的类将会有所不同。
如果您使用的是maven ejb插件,要从ejb-client模块中过滤掉实现类,那么我认为没有办法在Eclipse中获得相同的工作。这就是说,我不认为你实际上需要一个单独的ejb-client模块。耳内的战争模块将有权访问父耳模块的罐子超模块中包含的所有类。因此,只需将您的ejb-jar作为依赖添加到范围为provided的战争模块。

0

我会去给你治愈了所有可能出现的问题: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

  • 在服务器上运行

  • 0

    一般的建议:不要在Eclipse反正做到这一点,这是容易出现由于类加载等随机误差...

    但这里有一些可能的提示:

    • 检查您是否使用相同从控制台和Eclipse Maven运行时。有些发行版的Eclipse附带一个奇怪的内置的版本

    • 检查,如果Eclipse中设置为忽略某些Maven插件

    • 检查,如果JBoss的部署通过控制台的工作。有一个插件。如果您可以开始工作,那么您可以使用Eclipse中的工具,而不是内置功能。