Проблема не с выходом. Со временем, затраченным на код.

есть данные в формате XML, и существует несколько форматирующих стилей XSL. До сих пор в IE все работало нормально.

Затем нам нужно было отобразить тот же контент, что и HTML в Chrome. Итак, мы нашли API на стороне сервера (Java) для преобразования XML + XSL в HTML.

public static String convertXMLXSL(String xml, String xsl) throws SQLException {
        System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.processor.TransformerFactoryImpl");
        TransformerFactory tFactory = TransformerFactory.newInstance();

        String html = "";

        try {
            try {
                StreamResult result = new StreamResult(new StringWriter());
                **Transformer trans = tFactory.newTransformer(new StreamSource(new ByteArrayInputStream(xsl.getBytes("utf-8"))));
                trans.transform(new StreamSource(new ByteArrayInputStream(xml.getBytes("utf-8"))), result);**
                html = result.getWriter().toString();
            } catch (TransformerException te) {
                te.printStackTrace();
            }
        } catch (Exception e) {
            AppendExceptionToLog(e);
        }
        return html;
    } 

Но теперь, через некоторое время, мы видим некоторые дампы потоков, которые заблокированы вtrasform методjavax.xml.transform.Transformer

    Sep 12, 2017 12:07:49 PM org.apache.catalina.valves.StuckThreadDetectionValve notifyStuckThreadDetected
WARNING: Thread "http-8080-12" (id=15800) has been active for 6,516 milliseconds (since 9/12/17 12:07 PM) to serve the same request for
 and may be stuck (configured threshold for this StuckThreadDetectionValve is 5 seconds). 
 There is/are 3 thread(s) in total that are monitored by this Valve and may be stuck.
java.lang.Throwable
    at org.apache.xpath.axes.AxesWalker.getNextNode(AxesWalker.java:333)
    at org.apache.xpath.axes.AxesWalker.nextNode(AxesWalker.java:361)
    at org.apache.xpath.axes.WalkingIterator.nextNode(WalkingIterator.java:192)
    at org.apache.xpath.axes.NodeSequence.nextNode(NodeSequence.java:281)
    at org.apache.xpath.axes.NodeSequence.runTo(NodeSequence.java:435)
    at org.apache.xpath.axes.NodeSequence.setRoot(NodeSequence.java:218)
    at org.apache.xpath.axes.LocPathIterator.execute(LocPathIterator.java:210)
    at org.apache.xpath.XPath.execute(XPath.java:335)
    at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:278)
    at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:246)
    at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2411)
    at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:1374)
    at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2411)
    at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2281)
    at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1367)
    at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:709)
    at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1284)
    at org.apac,he.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1262)
    at Util.processXMLXSL(Util.java:3364)

Здесь я хотел знать ..

1) Есть ли у нас другие известные реализации, которые делают то же самое на стороне сервера?

2) Стоит ли использовать клиентский подход, используяXSLTProcessor Мозилла?

Ответы на вопрос(0)

Ваш ответ на вопрос