too long strings to transform?

Here should go questions about transforming XML with XSLT and FOP.
kabil
Posts: 3
Joined: Fri Sep 23, 2011 11:03 am

too long strings to transform?

Post by kabil »

Hello everyone, my question is not about oxygen, but i assume that you'll still help me about my problem. As i see oxygen has been written with java, and i have a xsl transformer class that i wrote. But it cannot transform too long strings. Could you help me about it?

my transformer method;

//transormers, sources and result
javax.xml.transform.Source xmlSource =
new javax.xml.transform.stream.StreamSource(_reader);

javax.xml.transform.Source xsltSource =
new javax.xml.transform.stream.StreamSource(_readerXslt);

javax.xml.transform.Result result =
new javax.xml.transform.stream.StreamResult(_writer);


// create an instance of TransformerFactory
javax.xml.transform.TransformerFactory transFact =
javax.xml.transform.TransformerFactory.newInstance();

javax.xml.transform.Transformer trans = transFact.newTransformer(xsltSource);

// transform document
trans.transform(xmlSource, result);
Radu
Posts: 9439
Joined: Fri Jul 09, 2004 5:18 pm

Re: too long strings to transform?

Post by Radu »

Hi,

What is the error that you obtain? If it is an Out Of Memory Exception you can increase the memory used by the Java process setting flags in the command line like:

java -Xmx256m .....

By default Java uses a maximum of only 64 Megabytes.

Regards,
Radu
Radu Coravu
<oXygen/> XML Editor
http://www.oxygenxml.com
kabil
Posts: 3
Joined: Fri Sep 23, 2011 11:03 am

Re: too long strings to transform?

Post by kabil »

Error details ;

SEVERE: java.io.UTFDataFormatException: encoded string too long: 134333 bytes
at java.io.DataOutputStream.writeUTF(DataOutputStream.java:347)
at java.io.DataOutputStream.writeUTF(DataOutputStream.java:306)
at com.sun.org.apache.bcel.internal.classfile.ConstantUtf8.dump(ConstantUtf8.java:125)
at com.sun.org.apache.bcel.internal.classfile.ConstantPool.dump(ConstantPool.java:230)
at com.sun.org.apache.bcel.internal.classfile.JavaClass.dump(JavaClass.java:322)
at com.sun.org.apache.bcel.internal.classfile.JavaClass.dump(JavaClass.java:307)
at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.dumpClass(XSLTC.java:766)
at com.sun.org.apache.xalan.internal.xsltc.compiler.Stylesheet.translate(Stylesheet.java:735)
at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:354)
at com.sun.org.apache.xalan.internal.xsltc.compiler.XSLTC.compile(XSLTC.java:429)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:795)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:617)
at com.prosesim.pw.transformer.XmlTransformer.performTransformation(XmlTransformer.java:159)
at com.prosesim.pw.transformer.XmlTransformer.transformXml(XmlTransformer.java:48)
at com.prosesim.pw.services.WSXmlTransformer.transformXMLDocument(WSXmlTransformer.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.glassfish.webservices.InstanceResolverImpl$1.invoke(InstanceResolverImpl.java:143)
at com.sun.xml.ws.server.InvokerTube$2.invoke(InvokerTube.java:150)
at com.sun.xml.ws.server.sei.EndpointMethodHandler.invoke(EndpointMethodHandler.java:261)
at com.sun.xml.ws.server.sei.SEIInvokerTube.processRequest(SEIInvokerTube.java:100)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:116)
at org.glassfish.webservices.MonitoringPipe.process(MonitoringPipe.java:142)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:116)
at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.processRequest(CommonServerSecurityPipe.java:212)
at com.sun.enterprise.security.webservices.CommonServerSecurityPipe.process(CommonServerSecurityPipe.java:144)
at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:119)
at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:641)
at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:600)
at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:585)
at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:482)
at com.sun.xml.ws.server.WSEndpointImpl$2.process(WSEndpointImpl.java:314)
at com.sun.xml.ws.transport.http.HttpAdapter$HttpToolkit.handle(HttpAdapter.java:608)
at com.sun.xml.ws.transport.http.HttpAdapter.handle(HttpAdapter.java:259)
at com.sun.xml.ws.transport.http.servlet.ServletAdapter.handle(ServletAdapter.java:162)
at org.glassfish.webservices.JAXWSServlet.doPost(JAXWSServlet.java:145)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:680)
kabil
Posts: 3
Joined: Fri Sep 23, 2011 11:03 am

Re: too long strings to transform?

Post by kabil »

Thanks for the quick reply. I may detail it more. I'm calling that method from a webservice, and there s an issue i cant understand that i just tried. I can give the method as much as long xml as source, it can transform, but i can not tell the same thing for the transformer. Hope you can help me.
Radu
Posts: 9439
Joined: Fri Jul 09, 2004 5:18 pm

Re: too long strings to transform?

Post by Radu »

Hi,

The problem is explained on the Web in a couple of places like:
http://www.drillio.com/en/software-deve ... 4kb-limit/

From what it seems the code with the "com.prosesim" calls Xalan which tries to somehow serialize its stylesheet to a byte array.

If possible you should avoid using Xalan and use the Saxon 6 XSLT libraries instead, Xalan is not quite so maintained.

Regards,
Radu
Radu Coravu
<oXygen/> XML Editor
http://www.oxygenxml.com
Post Reply