ClassCastException: MyFilter ne peut pas être lancé à javax.servlet.Filtre
Je suis de la migration d'une application JBoss 7, où toutes les dépendances ont été dans "JBOSS_HOME/server/default/lib"
(JBoss 4). J'ai inclus la lib "servlet.jar"
(javax.servlet. *), cependant, après la définition d'une Module Global pour JBoss 7 (modules.xml, standalone.xml, jboss-deployment-structure.xml dans la guerre des fichiers), les bibliothèques sont chargées normalement par JBoss.
Quand JBoss 7 essaie de démarrer les filtres, je reçois de l'exception suivante:
15:09:15,222 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/RegistrarValorDolar]] (MSC service thread 1-2) Exception starting filter cripto: java.lang.ClassCastException: cenpra.com.sigtec.business.utilities.SessionFilter cannot be cast to javax.servlet.Filter
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:441) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3269) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3865) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_15]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_15]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_15]
Essayer de supprimer de la bibliothèque "servlet.jar" à partir de Modules Globaux, dans un essai que le serveur charge ses propres classes à l'aide d'un interne de pot, j'ai eu un ClassNotFoundException
de javax.servlet.Filter
classe.
- Je veux utiliser les modules globaux, car j'ai besoin de réutiliser beaucoup de bibliothèques.
OriginalL'auteur Rafael Orágio | 2013-02-27
Vous devez vous connecter pour publier un commentaire.
Votre classpath est pollué par de multiples versionnées
javax.servlet.Filter
classes. Une classe qui est chargé par le chargeur de classe X (par exemple, le responsable du conteneur de classes internes) n'est pas la même classe quand il est chargé par le chargeur de classe Y (par exemple, l'un responsable de la webapp de classes).Ce n'est au moins pas de son droit. C'est censé être déjà fournis par la cible servletcontainer (qui est de JBoss dans votre cas). Vous devez absolument ne pas fournir servletcontainer des bibliothèques spécifiques avec la webapp dans son
/WEB-INF/lib
dossier. Ce serait en fin de compte n'en exécution chemin de classe catastrophe parce qu'ils obtiennent de classloading préséance sur celles fournies par le servletcontainer lui-même et donc en conflit avec la servletcontainer interne de classes qui sont à leur tour à l'aide de servletcontainer propres classes.Se débarrasser de servletcontainer des bibliothèques spécifiques dans
/WEB-INF/lib
dossier.Ce est une commune du starter erreur dans une mauvaise tentative de correction/contourner les erreurs de compilation sur
javax.servlet
API auxquelles ils sont confrontés dans leur IDE. Il doit avoir été résolu différemment. Pour le moment, vous devez dire à l'IDE d'associer le projet web avec le conteneur cible. L'IDE sera alors automatiquement faire le nécessaire de construire le chemin de la magie.Voir aussi:
Ma réponse est basée sur l'exception+stacktrace de laquelle vous avez été. Les Exceptions ne mentent pas. Votre runtime classe est définitivement polluée avec de multiples copies de la Servlet API. J'essayais juste de signaler une possible cause sur la base de votre question, qui semble être quelque peu ambiguë. Je fais au moins de ne pas voir toutes les autres causes possibles sur la base des informations fournies à ce jour. Tout ce que je peux dire c'est de prendre un balayage à travers l'ensemble de l'exécution du classpath.
/WEB-INF/lib
,JRE/lib
,JRE/lib/ext
,JBoss/lib
, etc..etc..OriginalL'auteur BalusC