Java.lang.ClassNotFoundException: com.soleil.XML.wss.XWSSecurityException


J'ai un service Web basé sur SOAP existant et j'essaie d'y implémenter la sécurité du service Web Spring en utilisant 'XwsSecurityInterceptor' et 'Springdigestpasswordvalidationcallbackhandler'on. Voici à quoi ressemble ma configuration de printemps. entrez la description de l'image ici

Je déploie cette application dans JBoss7.1 AS.Pendant le démarrage de l'application, l'exception suivante est thrown.It se plaint que le ' com.soleil.XML.wss.XWSSecurityException ' n'est pas trouvé.

Org.springframework.haricot.usine.BeanCreationException: Erreur la création de haricot avec nom 'org. springframework.ws.soap.addressing.server. AnnotationActionEndpointMapping#0': L'invocation de la méthode init a échoué; l'exception imbriquée est Java.lang.NoClassDefFoundError: com/sun/xml/wss/XWSSecurityException Causé par: java.lang.ClassNotFoundException: COM.soleil.XML.wss.XWSSecurityException

Maintenant, j'essaie de comprendre la cause profonde de ce problème. Je commence donc par le Fichier POM.

Les dépendances suivantes sont dans pom.

<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws-core</artifactId>
    <version>${org.springframework.ws.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws-security</artifactId>
    <version>${org.springframework.ws.version}</version>
</dependency>

<dependency>
    <groupId>com.sun.xml.wss</groupId>
    <artifactId>xws-security</artifactId>
    <version>3.0</version>
</dependency>

<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

<dependency>
    <groupId>javax.xml</groupId>
    <artifactId>xmldsig</artifactId>
    <version>1.0</version>
</dependency>

Dans le cadre de ma R&D, je suis descendu aux versions plus anciennes(2.1.2) de 'spring-ws-core' et 'spring-ws-security' avec la version '1.0.2' de 'sjsxp'. L'application a démarré et j'ai eu une erreur d'authentification lorsque j'ai donné un mot de passe invalide. L'application répond bien si je donne les informations d'identification correctes. C'est ce que je veux réaliser avec la dernière version de ces pots.

Maintenant, je veux savoir pourquoi il y a un manque à 2.3.0/2.4.0.

J'ai donc essayé la 'dépendance mvn:tree-Dverbose' et j'ai constaté que la version 2.1.2 apporte la 'xws-security' avec elle.

entrez la description de l'image ici

J'ai donc pensé à ajouter cette dépendance.

    <dependency>
        <groupId>com.sun.xml.wss</groupId>
        <artifactId>xws-security</artifactId>
        <version>3.0</version>
    </dependency>

Maintenant, cela me force à ajouter deux dépendances supplémentaires. Je les ai ajoutés aussi.

    <dependency>
        <groupId>javax.activation</groupId>
        <artifactId>activation</artifactId>
        <version>1.1.1</version>
    </dependency>

    <dependency>
        <groupId>javax.xml</groupId>
        <artifactId>xmldsig</artifactId>
        <version>1.0</version>
    </dependency>

Mais le second 'xmldsig' est manquant dans le référentiel maven. Je peux le télécharger et l'ajouter manuellement à mon dépôt m2 local. Mais je voudrais le réparer dans un bon façon. En cherchant, je suis tombé sur ce fil. http://maven.40175.n5.nabble.com/where-to-get-xmldsig-1-0-jar-td92435.html

Il y a quelqu'un qui parle d'une alternative.

entrez la description de l'image ici

Et je pouvais voir que cela est disponible dans la version 2.3.0 de 'spring-ws-security:jar'.

entrez la description de l'image ici

Maintenant, ma question est, ce qui doit être évité/ajouté pour que l'application démarre avec la dernière version de jars?? doigt traverser.....

Author: Renjith, 2016-10-23

2 answers

Parfois, vous devez être un archéologue logiciel afin de déboguer ces choses.

En regardant le pom pour spring-ws-security:2.4.0.RELEASE vous pouvez voir que la dépendance xws-security:3.0 est facultative (entre autres). Vous devez lire la documentation spring-ws-security pour déterminer quelles dépendances optional vous devez inclure.

En supposant que vous avez décidé que vous avez besoin du module xws-security, vous devez jeter un oeil à c'est pom, qui est où le l'archéologie entre en jeu. Ce module date de 2008, une période où Java 5 était encore pris en charge. Java 6 (et / ou Java EE) et plus récent prend en charge toutes les API de la liste des dépendances de cet artefact. Inclure l'un d'entre eux dans vos artefacts de construction ou de déploiement est une recette pour la douleur.

Par conséquent, vous devez les exclure:

<dependency>
    <groupId>com.sun.xml.wss</groupId>
    <artifactId>xws-security</artifactId>
    <version>3.0</version>
    <exclusions>
        <exclusion>
            <!-- Part of JDK -->
            <groupId>javax.xml.soap</groupId>
            <artifactId>saaj-api</artifactId>
        </exclusion>
        <exclusion>
            <!-- Part of Java EE -->
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
        </exclusion>
        <exclusion>
            <!-- Part of JDK -->
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
        </exclusion>
        <exclusion>
            <!-- Part of JDK -->
            <groupId>javax.xml.stream</groupId>
            <artifactId>stax-api</artifactId>
        </exclusion>
        <exclusion>
            <!-- Part of JDK -->
            <groupId>javax.xml.crypto</groupId>
            <artifactId>xmldsig</artifactId>
        </exclusion>
        <exclusion>
            <!-- Part of JDK -->
            <groupId>javax.xml.ws</groupId>
            <artifactId>jaxws-api</artifactId>
        </exclusion>
    </exclusions>
</dependency>
 8
Author: Steve C, 2016-11-01 11:55:35

Essayer avec spring-ws-security:2.4.0.RELEASE et spring version 4.3.3.RELEASE

 0
Author: Issam El-atif, 2016-10-24 10:00:19