1

Mise à jour: Le ClassNotFoundException se produit uniquement si j'essaie d'utiliser le service Web immédiatement après le démarrage de l'application. Si j'attends (pour un événement/durée inconnu) l'application fonctionnera. J'aimerais savoir ce que je dois attendre.WebSphere ClassNotFoundException lors de l'appel de WebService après le démarrage (mais pas ultérieurement)


Problème: Mon application échoue car une classe qui n'existe ne se trouve pas par un classloader.

Plus d'info:

La classe qui ne peut être trouvée est com.sun.xml.stream.ZephyrParserFactory.

Dans mon EAR, j'ai le sjsxr.jar. Ce fichier contient la classe com.sun.xml.stream.ZephyrParserFactory

Le fichier EAR contient également MyApp.jar, qui contient les points d'entrée EJB pour l'application. Les références MyApp.jar manifeste tous les bocaux nécessaires, y compris sjsxr.jar

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.8.1 
Created-By: 1.5.0_18 (Sun Microsystems Inc.) 
Built-By: GMM Development Team 
Class-Path: aopalliance-1.0.jar commons-codec-1.4.jar commons-collecti 
ons-3.1.jar commons-lang-2.1.jar commons-logging-1.1.1.jar ehcache-co 
re-2.1.0.jar ehcache-spring-annotations-1.1.2.jar joda-time-1.6.1.jar 
    log4j-1.2.16.jar org.springframework.context.support-3.0.4.RELEASE.j 
ar sjsxr.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar spring-aop 
-3.0.4.RELEASE.jar spring-asm-3.0.4.RELEASE.jar spring-beans-3.0.4.RE 
LEASE.jar spring-context-3.0.4.RELEASE.jar spring-core-3.0.4.RELEASE. 
jar spring-expression-3.0.4.RELEASE.jar spring-jdbc-3.0.4.RELEASE.jar 
    spring-tx-3.0.4.RELEASE.jar swiftVal.jar velocity-1.5.jar vm-startup 
.jar xbean.jar 

L'application contient des services Web code client généré par l'outil de WebSphere wsimport. Lorsque l'application tente d'invoquer ce code, l'exception suivante est levée:

EJB threw an unexpected (non-declared) exception during invocation of method 
    "messageIn" on bean "BeanId(MyApp#ejb.jar#NodeEJB, null)". 
Exception data: javax.xml.stream.FactoryConfigurationError: Provider 
    com.sun.xml.stream.ZephyrParserFactory not found 
    at javax.xml.stream.XMLInputFactory.newInstance(Unknown Source) 
    at org.apache.axiom.om.util.StAXUtils$7.run(StAXUtils.java:327) 
    at java.security.AccessController.doPrivileged(AccessController.java:202) 
    at org.apache.axiom.om.util.StAXUtils.getXMLInputFactory_perClassLoader(StAXUtils.java:323) 
    at org.apache.axiom.om.util.StAXUtils.getXMLInputFactory(StAXUtils.java:78) 
    at org.apache.axiom.om.util.StAXUtils.createXMLStreamReader(StAXUtils.java:133) 
    at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:596) 
    at org.apache.axis2.util.XMLUtils.toOM(XMLUtils.java:581) 
    at org.apache.axis2.deployment.DescriptionBuilder.buildOM(DescriptionBuilder.java:97) 
    at org.apache.axis2.deployment.AxisConfigBuilder.populateConfig(AxisConfigBuilder.java:90) 
    at org.apache.axis2.deployment.DeploymentEngine.populateAxisConfiguration(DeploymentEngine.java:641) 
    at com.ibm.ws.websvcs.deployment.WASAxis2ConfigurationBuilder.loadAxisCfg(WASAxis2ConfigurationBuilder.java:492) 
    at com.ibm.ws.websvcs.deployment.WASAxis2ConfigurationBuilder.loadAxisClientConfiguration(WASAxis2ConfigurationBuilder.java:191) 
    at com.ibm.ws.websvcs.client.WSClientConfigurationFactory.getConfigContext(WSClientConfigurationFactory.java:271) 
    at com.ibm.ws.websvcs.client.WSClientConfigurationFactory.getClientConfigurationContext(WSClientConfigurationFactory.java:236) 
    at org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:92) 
    at org.apache.axis2.jaxws.description.impl.DescriptionFactoryImpl.createServiceDescription(DescriptionFactoryImpl.java:79) 
    at org.apache.axis2.jaxws.description.DescriptionFactory.createServiceDescription(DescriptionFactory.java:76) 
    at org.apache.axis2.jaxws.spi.ServiceDelegate.<init>(ServiceDelegate.java:212) 
    at org.apache.axis2.jaxws.spi.Provider.createServiceDelegate(Provider.java:59) 
    at javax.xml.ws.Service.<init>(Service.java:67) 
    at my.generated.Web_Service.<init>(Web_Service.java:44) 
... 
Caused by: java.lang.ClassNotFoundException: com.sun.xml.stream.ZephyrParserFactory 
    at java.lang.Class.forNameImpl(Native Method) 
    at java.lang.Class.forName(Class.java:136) 
    at javax.xml.stream.FactoryFinder.newInstance(Unknown Source) 
    at javax.xml.stream.FactoryFinder.find(Unknown Source) 
    at javax.xml.stream.FactoryFinder.find(Unknown Source) 
    ... 101 more 

Je confirme une demi-douzaine de fois que la classe, pot et manifeste sont corrects avant et après le déploiement.

J'ai également essayé de renommer le sjsxr.jar pour éviter toute éclipse potentielle mais le problème ne disparaît pas.

J'utilise WebSphere 7.0.0.11 ND

Quelqu'un peut-il aider?

+0

Pouvez-vous publier l'entrée du manifeste de MyApp.jar pour sjsxr.jar? – crnlx

+0

Edité la question avec manifeste ajouté. – Synesso

Répondre

2

Cela fait longtemps que j'ai utilisé java, et seulement brièvement touché WebSphere, mais peut-être this aidera? Si vous rencontrez des problèmes pour localiser le fichier JAR à l'aide du manifeste, essayez de l'empaqueter dans le dossier WEB-INF/lib du fichier JAR. Il devrait être trouvé implicitement sans avoir à le référencer dans le manifeste, en supposant que j'ai lu correctement les informations sur la page liée.

Vous pouvez également jeter un oeil à this WebSphere link, environ à mi-chemin dans la page sous la rubrique "Classes de référence dans le fichier EAR".

+0

Merci Will. L'approche WEB-INF/lib n'est utilisée que par les fichiers WAR. Cependant, ce lien m'a incité à essayer de déplacer les informations de classpath du manifeste du fichier JAR interne vers le fichier EAR lui-même. Note, cette application est construite en utilisant un système de construction qui a fonctionné pendant 4 ou 5 ans, donc je pense que l'EAR est déjà valide. Mais nous verrons ... – Synesso

+0

Bonne chance. Comme je l'ai dit, il y a longtemps que je n'ai pas fait de développement java important (comme, EJB 1.0 timeframe), donc mes connaissances sur ce sujet sont limitées. Google a montré un certain nombre d'autres liens décents si ce qui précède ne le résout pas. – Will

+0

Merci. Oui, le problème persiste. – Synesso