2015-05-14 19 views
7

我们使用Wildfly 8.2.0.Final,Maven 2.2.1,Seam 2.2.0.GA和Weld 2.2.6.Final。在一个单独的旧版WAR中使用Seam或者Weld-enabled EAR

我们有一个带有遗留WAR,新WAR和一堆其他模块的EAR文件。传统的WAR依赖于Seam,但新的WAR和EAR中的其他模块依赖于Weld。

目前,只有遗留的WAR正在工作,因为我们在jboss-deployment-structure.xml中排除了焊接子系统,直到我们能够以某种方式将Seam隔离到旧版WAR。我们试图从EAR中删除Seam,并将其作为旧版WAR的依赖项移动,但这并不奏效。要使用EJB,它似乎需要成为EAR的依赖关系,并且在maven-ear-plugin配置中定义为ejbModule

有关我们如何设置的任何想法?

回答

1

你可以试试这个(全部发生在jboss-deployment-structure.xml):

1)使焊接子系统。基本上,删除它排除:这是一个implicit dependency,所以没有必要明确依赖它在任何模块。

2)war S的关系始终被视为孤立的,而是要真正相信你可以补充一点:

<subsystem xmlns="urn:jboss:domain:ee:1.0" >    
    <ear-subdeployments-isolated>true</ear-subdeployments-isolated> 
</subsystem> 

3)对于传统war子的部署提供了一个焊接明确排除。

4)对于其他所有模块提供用于Seam明确排除*

我想你已经检查了,但:Class Loading in WildFly


*更新的模块排除:

如果它仍然作为AS的模块提供,您应该找到它,检查其'module.xml的模块名称,然后使用排除如:

<exclusions> 
    <module name="module_name" /> 
</exclusions> 

如果你在你的传统战争WEB-INF/lib/提供它,那么我认为没有什么应该做的。或者您可以手动注册为模块,然后排除:)

+0

如何添加接缝的排除到jboss-deployment-structure.xml中的子部署? – mattalxndr

+0

我更新了有关它的答案 – arghtype

1

为什么不分成单独的耳朵?毕竟你在战争中使用不兼容的组件。所以除了战争档案之外,一只耳朵的定义与另一只耳朵的定义完全相同。不需要公布任何代码。

+1

他们需要共享会话状态和身份验证数据。 – mattalxndr

相关问题