Websphere wasJmsClient-2.0与ejbLite-3.1不兼容

Websphere wasJmsClient-2.0与ejbLite-3.1不兼容,websphere,websphere-liberty,websphere-8,Websphere,Websphere Liberty,Websphere 8,我想将现有代码从JMS1.1迁移到JMS2.0。我正在使用Java8通过WebSphereLiberty概要文件16.0部署应用程序。当我在server.xml中启用wasJmsClient-2.0功能时,出现以下错误: ['wasJmsClient-2.0' --> 'com.ibm.websphere.appserver.internal.jms-2.0' --> 'com.ibm.websphere.appserver.javax.connector.internal-1.7'

我想将现有代码从JMS1.1迁移到JMS2.0。我正在使用Java8通过WebSphereLiberty概要文件16.0部署应用程序。当我在server.xml中启用
wasJmsClient-2.0
功能时,出现以下错误:

['wasJmsClient-2.0' --> 'com.ibm.websphere.appserver.internal.jms-2.0' --> 'com.ibm.websphere.appserver.javax.connector.internal-1.7'] and ['ejbLite-3.1' --> 'com.ibm.websphere.appserver.transaction-1.1' --> 
 'com.ibm.websphere.appserver.javax.connector.internal-1.6'] features are in conflict. Select a compatible set of features.

我如何知道哪些功能兼容,哪些不兼容?

JMS 2.0和EJB 3.1处于不同的Java EE规范级别。尝试从ejbLite-3.1切换到ejbLite-3.2(并更新服务器配置中的任何其他功能,使其与EE 7规范级别相匹配)。

JMS 2.0和EJB 3.1处于不同的Java EE规范级别。尝试从ejbLite-3.1切换到ejbLite-3.2(并更新服务器配置中的任何其他功能,使其与EE 7规范级别相匹配)。

一般来说,WebSphere Liberty中的大多数功能不兼容问题都是在将Java EE 6技术的功能与Java EE 7的功能混合时出现的。您的示例就是这种情况—wasJmsClient-2.0是EE7功能集的一部分,而ejbLite-3.1是EE6功能集的一部分。您可以通过将特性ejbLite-3.1更改为ejbLite-3.2来解决特性不兼容问题

如果您想确定多个功能的兼容性,我知道有两种方法(两者都有点复杂…): 1) 检查wlp/lib/features目录中的功能清单文件,并查找子系统内容头,特别是类型为“osgi.Subsystem.feature”的条目。这些是功能的依赖项-其中一些会声明它们可以与特定功能的不同版本一起工作。其他则更为严格。 2) 运行“wlp/bin/featureManager featureList myFeatureList.xml”。这将生成一个XML文件,该文件将提供与功能清单相同的信息,但XML格式可能更易于阅读。它将显示如下所示的依赖项:

   <feature name="wasJmsClient-2.0"> 
    <symbolicName>com.ibm.websphere.appserver.wasJmsClient-2.0</symbolicName> 
    <singleton>true</singleton> 
    <displayName>JMS 2.0 Client for Message Server</displayName>
    <!-- ... -->
    <include symbolicName="com.ibm.websphere.appserver.channelfw-1.0"></include> 
    <include symbolicName="com.ibm.websphere.appserver.transaction-1.2"></include> 
    <include symbolicName="com.ibm.websphere.appserver.internal.jms-2.0"></include> 
</feature> 

com.ibm.websphere.appserver.wasJmsClient-2.0
真的
消息服务器的JMS 2.0客户端

从这里,您可以沿着依赖关系链看到wasJmsClient-2.0依赖于transaction-1.2,但ejbLite-3.1依赖于transaction-1.1,并且这两种功能都不支持其他版本。

一般来说,WebSphereLiberty中的大多数功能不兼容问题都是在将JavaEE6技术的功能与JavaEE7的功能混合使用时出现的。您的示例就是这种情况—wasJmsClient-2.0是EE7功能集的一部分,而ejbLite-3.1是EE6功能集的一部分。您可以通过将特性ejbLite-3.1更改为ejbLite-3.2来解决特性不兼容问题

如果您想确定多个功能的兼容性,我知道有两种方法(两者都有点复杂…): 1) 检查wlp/lib/features目录中的功能清单文件,并查找子系统内容头,特别是类型为“osgi.Subsystem.feature”的条目。这些是功能的依赖项-其中一些会声明它们可以与特定功能的不同版本一起工作。其他则更为严格。 2) 运行“wlp/bin/featureManager featureList myFeatureList.xml”。这将生成一个XML文件,该文件将提供与功能清单相同的信息,但XML格式可能更易于阅读。它将显示如下所示的依赖项:

   <feature name="wasJmsClient-2.0"> 
    <symbolicName>com.ibm.websphere.appserver.wasJmsClient-2.0</symbolicName> 
    <singleton>true</singleton> 
    <displayName>JMS 2.0 Client for Message Server</displayName>
    <!-- ... -->
    <include symbolicName="com.ibm.websphere.appserver.channelfw-1.0"></include> 
    <include symbolicName="com.ibm.websphere.appserver.transaction-1.2"></include> 
    <include symbolicName="com.ibm.websphere.appserver.internal.jms-2.0"></include> 
</feature> 

com.ibm.websphere.appserver.wasJmsClient-2.0
真的
消息服务器的JMS 2.0客户端

从这里,您可以沿着依赖关系链看到wasJmsClient-2.0依赖于transaction-1.2,但ejbLite-3.1依赖于transaction-1.1,并且这两个功能都不允许使用其他版本。

也可以从知识中心的主题推断出来,其中显示了“ejbLite-3.1”和“jms-2.0”(不完全是OP要求的,但它在错误消息中)是不兼容的。也可以从知识中心的主题中推断出来,该主题显示“ejbLite-3.1”和“jms-2.0”(不完全是OP要求的,但它在错误消息中)是不兼容的。