WSO2 версия 5.0.0 Диспетчер пользовательских хранилищ пользовательских данных Повышение NoClassDefFoundError
Я пытаюсь настроить настраиваемый основной пользовательский менеджер хранилища в WSO2IS версии 5.0.0.
Основываясь на документации для WSO2IS версии 5.0.0, я должен расширить UserStoreManager:
import org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager;
public class CustomUserStoreManager extends JDBCUserStoreManager {
...
В user-mgmt.xml я изменяю UserStoreManager для ссылки на этот класс:
<UserStoreManager class="com.abc.identity.CustomUserStoreManager">
...
В pom.xml я строю это как пакет:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.abc.asset</groupId>
<artifactId>asset-identity</artifactId>
<packaging>bundle</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>asset-identity</name>
<description>asset-identity</description>
<dependencies>
<dependency>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.identity.application.authentication.framework</artifactId>
<version>4.2.7</version>
</dependency>
<dependency>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.user.core</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.osgi.core</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.5.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Version>0.0.1</Bundle-Version>
<Private-Package>com.abc.ecommerce.identity</Private-Package>
<Import-Package>
*
</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
Но когда я запускаю WSO2IS, он дает следующее исключение:
[2015-09-29 14:55:07,805] ERROR {org.wso2.carbon.user.core.common.DefaultRealm} - Cannot create com.abc.identity.CustomUserStoreManager
java.lang.NoClassDefFoundError: org/wso2/carbon/user/core/jdbc/JDBCUserStoreManager
Документация для WSO2IS версии 5.0.0 не содержит подробностей о том, как настроить pom.xml.
2 ответа
Решение
Этот файл pom.xml может разрешить исключение NoClassDefFoundError. Ключ должен соответствовать версиям пакетов, поставляемых с WSO2IS 5.0.0.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.abc.asset</groupId>
<artifactId>asset-identity</artifactId>
<packaging>bundle</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>asset-identity</name>
<description>asset-identity</description>
<dependencies>
<dependency>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.identity.application.authentication.framework</artifactId>
<version>4.2.2</version>
</dependency>
<dependency>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.user.core</artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.osgi.core</artifactId>
<version>1.4.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.5.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Version>0.0.1</Bundle-Version>
<Export-Package>com.abc.asset.identity</Export-Package>
<Import-Package>
*
</Import-Package>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>wso2-nexus</id>
<name>WSO2 internal Repository</name>
<url>http://maven.wso2.org/nexus/content/groups/wso2-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</releases>
</repository>
</repositories>
</project>
Пожалуйста, попробуйте добавить раздел экспорта конфигурации плагина
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.5.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
<Bundle-Name>${project.artifactId}</Bundle-Name>
<Bundle-Version>0.0.1</Bundle-Version>
<Private-Package>com.peplink.ecommerce.identity</Private-Package>
<Import-Package>
*
</Import-Package>
<Export-Package>
org.wso2.carbon.user.core.*
</Export-Package>
</instructions>
</configuration>
</plugin>
</plugins>