L'une de nos applications Web, qui fonctionne depuis longtemps dans notre environnement de production, a récemment rencontré une erreur étrange lorsqu'il y a un volume élevé de transactions. Nous n'avons pas pu déterminer quelle était exactement la cause du problème, mais nous avons trouvé des problèmes similaires dans la version précédente, WebSphere 6, liés à un bogue dans la version de Xalan utilisée par le serveur de l'application. En fait, notre serveur d'application est WebSphere 7, qui est supposé l'avoir corrigé, sans compter qu'il n'utilise plus Xalan sous le capot. Notre application n'a pas de pot Xalan intégré aussi. Pour le faire réparer, il suffit de redémarrer l'application elle-même. Une remarque importante est que le document est mis en cache (docs.get (tableName)) et réutilisé pour exécuter l'évaluation XPath. Nous l'avons fait pour éviter le coût d'analyse du document à chaque fois.Erreur inconnue dans XPath
Le code de l'application est
Document doc = null;
try {
doc = docs.get(tableName);
if (doc == null)
return null;
XPathFactory xFactory = XPathFactory.newInstance();
XPath xpath = xFactory.newXPath();
XPathExpression expr = xpath.compile(toUpper(xPathQuery));
Object result = expr.evaluate(doc, XPathConstants.NODESET);
return (NodeList) result;
} catch (XPathExpressionException e) {
logger.error("Error executing XPath", e);
}
Et la pile d'erreur est ici
javax.xml.transform.TransformerException: Unknown error in XPath.
at java.lang.Throwable.<init>(Throwable.java:67)
at javax.xml.transform.TransformerException.<init>(Unknown Source)
at org.apache.xpath.XPath.execute(Unknown Source)
at org.apache.xpath.jaxp.XPathExpressionImpl.evaluate(Unknown Source)
Caused by: java.lang.NullPointerException
at org.apache.xerces.dom.ElementNSImpl.getPrefix(Unknown Source)
at org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.processNamespacesAndAttributes(Unknown Source)
at org.apache.xml.dtm.ref.dom2dtm.DOM2DTM.nextNode(Unknown Source)
at org.apache.xml.dtm.ref.DTMDefaultBase._nextsib(Unknown Source)
at org.apache.xml.dtm.ref.DTMDefaultBase.getNextSibling(Unknown Source)
at org.apache.xml.dtm.ref.DTMDefaultBaseTraversers$ChildTraverser.next(Unknown Source)
at org.apache.xpath.axes.AxesWalker.getNextNode(Unknown Source)
at org.apache.xpath.axes.AxesWalker.nextNode(Unknown Source)
at org.apache.xpath.axes.WalkingIterator.nextNode(Unknown Source)
at org.apache.xpath.axes.NodeSequence.nextNode(Unknown Source)
at org.apache.xpath.axes.NodeSequence.runTo(Unknown Source)
at org.apache.xpath.axes.NodeSequence.setRoot(Unknown Source)
at org.apache.xpath.axes.LocPathIterator.execute(Unknown Source)
... 16 more
C'est la question similaire ce que je l'ai mentionné. http://www-01.ibm.com/support/docview.wss?uid=swg1PK42574
Thakns.
Quelle est la valeur de 'xPathQuery'? –