0

我使用 JBoss 开发应用程序。

我创建了一个新模块CAMUNDA_HOME\server\jboss-as-7.2.0.Final\modules\org\camunda\bpm\identity\camunda-identity-dbldap\main

该文件夹包括 2 个文件:camunda-identity-dbldap-7.2.0.jar & module.xml:

<module xmlns="urn:jboss:module:1.0" name="org.camunda.bpm.identity.camunda-identity-dbldap">
  <resources>
    <resource-root path="camunda-identity-dbldap-7.2.0.jar" />
  </resources>

  <dependencies>

    <module name="sun.jdk" />

    <module name="javax.api" />
    <module name="org.camunda.bpm.camunda-engine" />
    <module name="org.camunda.bpm.identity.camunda-identity-ldap" />

  </dependencies>
</module>

我在 pom.xml 中包含了“camunda-identity-dbldap”。

    <dependency>
        <groupId>org.camunda.bpm.identity</groupId>
        <artifactId>camunda-identity-dbldap</artifactId>
        <version>${camunda-version}</version>
    </dependency>

DbAndLdapIdentityProviderFactory 存在于“camunda-identity-dbldap.jar”中,也可以在 pom.xml 中加载。

我试图在我的项目中投射课程。

    ProcessEngineConfigurationImpl processEngineConfiguration = (ProcessEngineConfigurationImpl)ProcessEngines.getDefaultProcessEngine().getProcessEngineConfiguration();
    DbAndLdapIdentityProviderFactory factory = (DbAndLdapIdentityProviderFactory)processEngineConfiguration.getIdentityProviderSessionFactory();
    LdapConfiguration configuration = factory.getLdapConfiguration();

不幸的是,它报告 ClassCastException,它无法将 DbAndLdapIdentityProviderFactory 转换为 DbAndLdapIdentityProviderFactory。似乎两个类被加载到不同的类加载器中。如何解决?

4

1 回答 1

2

您可能会获得 CCE,因为您已经在 J​​Boss 和您自己的项目中添加了库。
引擎使用来自 JBoss 的版本,您尝试使用项目中的库将其投射到项目中。

解决方案是通过在 META-INF/MANIFEST.MF (org.camunda.bpm.identity.camunda-identity-dbldap) 中将其声明为依赖项,将 JBoss 使用的库添加到您的项目中,以便 JBoss 为您加载它. 然后,您必须在 pom.xml 中将库设置为“提供”范围。

于 2015-03-23T11:05:24.607 回答