IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JOnAS Java Discussion :

Pb avec Metro Web Services sous JOnAS


Sujet :

JOnAS Java

  1. #1
    Membre averti

    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 42
    Points : 318
    Points
    318
    Par défaut Pb avec Metro Web Services sous JOnAS
    Bonjour à tous ,

    Nous avons développé des applications, dont certaines sont des web services. Maintenant nous sommes en phase de test et nous essayons de faire marcher nos applications sur divers serveurs d'application.

    En l'état actuel, ça passe pour tomcat et JBoss. Mais nous avons un problème avec JOnAS pour les web services. Nous utilisons l'API Metro Web Services. Au démarrage, nous avons l'exception suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    2009-12-14 16:36:30,665 : INFO : Thread-11 : WARDeployer.doDeploy :    Deploying DWL-WebServiceAdapter.web.war
    2009-12-14 16:36:35,392 : INFO : Thread-11 : WSServletContextListener.contextInitialized :    WSSERVLET12: JAX-WS context listener initializing
    2009-12-14 16:36:35,399 : SEVERE : Thread-11 : WSServletContextListener.contextInitialized :    WSSERVLET11: failed to parse runtime descriptor: java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceFeature
    java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceFeature
    	at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:103)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
    	at org.ow2.jonas.web.tomcat6.JOnASStandardContext.start(JOnASStandardContext.java:281)
    	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    	at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:123)
    	at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:145)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:769)
    	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
    	at org.ow2.jonas.web.tomcat6.Tomcat6Service.__doRegisterWar(Tomcat6Service.java:699)
    	at org.ow2.jonas.web.tomcat6.Tomcat6Service.doRegisterWar(Tomcat6Service.java)
    	at org.ow2.jonas.web.base.BaseWebContainerService.registerWar(BaseWebContainerService.java:918)
    	at org.ow2.jonas.web.base.BaseWebContainerService.registerWar(BaseWebContainerService.java:1074)
    	at org.ow2.jonas.web.tomcat6.Tomcat6Service.__registerWar(Tomcat6Service.java:1354)
    	at org.ow2.jonas.web.tomcat6.Tomcat6Service.registerWar(Tomcat6Service.java)
    	at org.ow2.jonas.web.base.proxy.HttpOnDemandProxy.addWar(HttpOnDemandProxy.java:358)
    	at org.ow2.jonas.web.base.WARDeployer.doDeploy(WARDeployer.java:70)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:96)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:95)
    	at org.ow2.util.execution.helper.RunnableHelper.execute(RunnableHelper.java:77)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.deploy(AbsDeployer.java:94)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.deploy(DeployerManager.java:129)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.detectNewArchives(DeployableMonitor.java:443)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.checkNewArchives(DeployableMonitor.java:265)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.run(DeployableMonitor.java:175)
    Caused by: java.lang.ClassNotFoundException: javax.xml.ws.WebServiceFeature
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:627)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.access$100(ModuleImpl.java:61)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1469)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.getClassByDelegation(ModuleImpl.java:490)
    	at org.apache.felix.framework.searchpolicy.R4Wire.getClass(R4Wire.java:108)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.searchImports(ModuleImpl.java:1206)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:566)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.access$100(ModuleImpl.java:61)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1469)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    	... 26 more
    2009-12-14 16:36:35,402 : SEVERE : Thread-11 : StandardContext.listenerStart :    Exception sending context initialized event to listener instance of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
    com.sun.xml.ws.transport.http.servlet.WSServletException: WSSERVLET11: failed to parse runtime descriptor: java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceFeature
    	at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:118)
    	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
    	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
    	at org.ow2.jonas.web.tomcat6.JOnASStandardContext.start(JOnASStandardContext.java:281)
    	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
    	at org.apache.catalina.core.ContainerBase.access$000(ContainerBase.java:123)
    	at org.apache.catalina.core.ContainerBase$PrivilegedAddChild.run(ContainerBase.java:145)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:769)
    	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
    	at org.ow2.jonas.web.tomcat6.Tomcat6Service.__doRegisterWar(Tomcat6Service.java:699)
    	at org.ow2.jonas.web.tomcat6.Tomcat6Service.doRegisterWar(Tomcat6Service.java)
    	at org.ow2.jonas.web.base.BaseWebContainerService.registerWar(BaseWebContainerService.java:918)
    	at org.ow2.jonas.web.base.BaseWebContainerService.registerWar(BaseWebContainerService.java:1074)
    	at org.ow2.jonas.web.tomcat6.Tomcat6Service.__registerWar(Tomcat6Service.java:1354)
    	at org.ow2.jonas.web.tomcat6.Tomcat6Service.registerWar(Tomcat6Service.java)
    	at org.ow2.jonas.web.base.proxy.HttpOnDemandProxy.addWar(HttpOnDemandProxy.java:358)
    	at org.ow2.jonas.web.base.WARDeployer.doDeploy(WARDeployer.java:70)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:96)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer$1.execute(AbsDeployer.java:95)
    	at org.ow2.util.execution.helper.RunnableHelper.execute(RunnableHelper.java:77)
    	at org.ow2.util.ee.deploy.impl.deployer.AbsDeployer.deploy(AbsDeployer.java:94)
    	at org.ow2.util.ee.deploy.impl.deployer.DeployerManager.deploy(DeployerManager.java:129)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.detectNewArchives(DeployableMonitor.java:443)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.checkNewArchives(DeployableMonitor.java:265)
    	at org.ow2.jonas.deployablemonitor.DeployableMonitor.run(DeployableMonitor.java:175)
    Caused by: java.lang.NoClassDefFoundError: javax/xml/ws/WebServiceFeature
    	at com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized(WSServletContextListener.java:103)
    	... 25 more
    Caused by: java.lang.ClassNotFoundException: javax.xml.ws.WebServiceFeature
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:627)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.access$100(ModuleImpl.java:61)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1469)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.getClassByDelegation(ModuleImpl.java:490)
    	at org.apache.felix.framework.searchpolicy.R4Wire.getClass(R4Wire.java:108)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.searchImports(ModuleImpl.java:1206)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:566)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl.access$100(ModuleImpl.java:61)
    	at org.apache.felix.framework.searchpolicy.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1469)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    	... 26 more
    2009-12-14 16:36:35,417 : SEVERE : Thread-11 : StandardContext.start :    Error listenerStart
    2009-12-14 16:36:35,418 : SEVERE : Thread-11 : StandardContext.start :    Context [/DWL-WebServiceAdapter.web] startup failed due to previous errors
    2009-12-14 16:36:35,445 : INFO : Thread-11 : WSServletContextListener.contextDestroyed :    WSSERVLET13: JAX-WS context listener destroyed
    2009-12-14 16:36:35,454 : INFO : Thread-11 : BaseWebContainerService.registerWar :    War DWL-WebServiceAdapter.web.war available at the context /DWL-WebServiceAdapter.web.
    En faite, il est arrivé à charger webservices-rt.jar mais pas webservices-api.jar (WebServiceFeature est dans ce JAR) !

    Or nous avons placés les JAR suivants dans $JONAS_BASE/lib/ext:
    - webservices-extra.jar
    - webservices-extra-api.jar
    - webservices-rt.jar
    - webservices-tools.jar

    Et webservices-api.jar dans:
    $JONAS_BASE/lib
    $JONAS_BASE/lib/common
    $JONAS_BASE/lib/endorsed
    $JONAS_BASE/lib/ext
    $JONAS_ROOT/lib
    $JONAS_ROOT/lib/common
    $JONAS_ROOT/lib/endorsed
    $JONAS_ROOT/lib/ext

    Visiblement il y a quelque chose qui m'échappe au niveau du classloader de JOnAS ! D'après la doc, il suffit de placer webservices-api.jar dans $JONAS_BASE/lib/ext. J'ai l'impression qu'il tente de chercher le JAR dans le repository Maven (Apache Felix) !

    Bref, ça fait quelques jours que je suis dessus et je n'ai toujours pas trouvé de solution .

    A titre d'info, sous Tomcat, nous avons les JAR de Metro:
    $CATALINA_HOME/shared/lib/webservices-api.jar
    $CATALINA_HOME/shared/lib/webservices-extra.jar
    $CATALINA_HOME/shared/lib/webservices-extra-api.jar
    $CATALINA_HOME/shared/lib/webservices-rt.jar
    $CATALINA_HOME/shared/lib/webservices-tools.jar
    $CATALINA_HOME/common/endorsed/webservices-api.jar

    Sous JBoss, nous avons:
    $JBOSS_HOME/server/default/lib/webservices-api.jar
    $JBOSS_HOME/server/default/lib/webservices-extra.jar
    $JBOSS_HOME/server/default/lib/webservices-extra-api.jar
    $JBOSS_HOME/server/default/lib/webservices-rt.jar
    $JBOSS_HOME/server/default/lib/webservices-tools.jar

    Ma configuration:
    - JOnAS 5.1.1
    - JDK 1.6.0_12
    - Système Linux Fedora 10 (noyau 2.6.27.21-170.2.56)

    Merci d'avance pour votre aide.

    Jean-Philippe MINETTI

  2. #2
    Membre VIP Avatar de kalysto
    Profil pro
    Développeur
    Inscrit en
    Mars 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mars 2003
    Messages : 442
    Points : 568
    Points
    568
    Par défaut
    Salut
    Tout d'abord je voudrais te remercier de la qualité de ta question, j'y trouve tout ce qu'il me faut pour te faire une réponse argumentée.
    Pas mal pour un 1er mesage

    Quelques remarques pour commencer:
    * Avec JOnAS 5.x, seul le répertoire lib/ext est pris en compte
    * Pour faire des webservices, JOnAS offre le support natif de JAXWS 2.0

    D'ou une question: si tu prends un serveur d'application J2EE (comme JOnAS), pourquoi te lies tu as une implementation particuliere de JAXWS (comme Metro) ?
    Y'a-t-il une raison particuliere ? jaxws 2.1, peut etre performance ou bien encore WS-* (ws-security, ...) ?

    Ce n'est pas une question anodine car si tu décides de te lier à l'API jaxws plutot qu'à Metro, tu gagnes la portabilité (entre serveurs JEE, j'exclu donc tomcat ici). Et en misant sur la portabilité, tu n'auras plus le probleme que tu as actuellement car tu t'appuieras sur l'implem jaxws fournie par le serveur d'application (en bref, plus besoin d'inclure les jars de metro, donc plus de soucis).

    Bon maintenant attaquons les solutions concretes
    Tout d'abord, JOnAS est cablé pour faire du JaxWs 2.0, et ton probleme est que l'implementation de Metro utilise JaxWs 2.1 (ce sont les classes XXXFeature qui manquent entre autres). En clair, ca veut dire que JOnAS ne montre que les classes de la version 2.0.
    Il va donc falloir que tu t'arranges pour que JOnAS te cache ces packages.

    Plusieurs choses à faire:
    1. toutes tes librairies concernant metro doivent se trouver dans ta webapp (WEB-INF/lib)
    2. ne PAS mettre le service jaxws dans les services démarrés par JOnAS (jonas.properties)
    3. editer le fichier filtering-classloaders.xml et filtrer les packages javax.xml.ws.* (s'inspirer des exemples qu'on trouve dans le fichier) (c'est un regexp)
    4. croiser les doigts pour que je n'ai rien oublié

  3. #3
    Membre averti

    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 42
    Points : 318
    Points
    318
    Par défaut
    Bonjour à tous et
    merci pour ta réponse kalysto ,

    Citation Envoyé par kalysto Voir le message
    D'ou une question: si tu prends un serveur d'application J2EE (comme JOnAS), pourquoi te lies tu as une implementation particuliere de JAXWS (comme Metro) ?
    Y'a-t-il une raison particuliere ? jaxws 2.1, peut etre performance ou bien encore WS-* (ws-security, ...) ?

    Ce n'est pas une question anodine car si tu décides de te lier à l'API jaxws plutot qu'à Metro, tu gagnes la portabilité (entre serveurs JEE, j'exclu donc tomcat ici). Et en misant sur la portabilité, tu n'auras plus le probleme que tu as actuellement car tu t'appuieras sur l'implem jaxws fournie par le serveur d'application (en bref, plus besoin d'inclure les jars de metro, donc plus de soucis).
    Ah, je n'ai pas fait attention à ce problème de portabilité. Effectivement, j'ai eu des problèmes avec JBoss et actuellement avec Geronimo. Pour tout dire, ce sont mes premières applications Web Services et j'ai suivi les recommandation d'un collègue qui, lui, connaissait Metro (mais j'aurais dû faire un minimum de recherche et me lancer dans l'inconnu ). Bon, je vais essayer de voir comment rendre mes applis compatible pour n'importe quelle API web services.

    Citation Envoyé par kalysto Voir le message
    Plusieurs choses à faire:
    1. toutes tes librairies concernant metro doivent se trouver dans ta webapp (WEB-INF/lib)
    2. ne PAS mettre le service jaxws dans les services démarrés par JOnAS (jonas.properties)
    3. editer le fichier filtering-classloaders.xml et filtrer les packages javax.xml.ws.* (s'inspirer des exemples qu'on trouve dans le fichier) (c'est un regexp)
    4. croiser les doigts pour que je n'ai rien oublié
    Ca marche, mais il ne faut surtout pas oublier de retirer les JAR de Metro que j'ai semés un peu partout .

    Merci à toi kalysto .

    Par contre, JBoss digère mal le fait d'intégrer les JAR de Metro dans le WAR .

    De tout de façon, je pense que vais suivre ton conseil et rendre mes applis indépendantes de l'implémentation web services, car si je dois désactiver le web services sur le serveur d'un client, ça va pas trop le faire (surtout s'il y a des applis qui utilisent ce service).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Web service sous netbeans avec AXIS2 et SOAP
    Par 2beornot2be dans le forum NetBeans
    Réponses: 1
    Dernier message: 31/07/2009, 15h55
  2. web service sous glassfish avec ALF et tomcat
    Par leod38 dans le forum Glassfish et Payara
    Réponses: 9
    Dernier message: 30/10/2008, 16h08
  3. securisation de Web Services dans Jonas avec Axis
    Par emeras dans le forum Services Web
    Réponses: 1
    Dernier message: 08/02/2007, 15h54
  4. Créer un client Web Service sous Eclipse et Windows
    Par Lebas dans le forum Services Web
    Réponses: 2
    Dernier message: 28/08/2006, 10h53
  5. [vb.net]Gestion des exceptions avec les web services
    Par mvr dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/12/2005, 22h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo