perf issue when converting from java to edi

34 views
Skip to first unread message

Serena Angelucci

unread,
Feb 13, 2025, 6:58:06 AMFeb 13
to Smooks Users

 

Hi Claude,

I have a perf issue when calling the smooks.filterSource() method.

This is my code:

 

StringSink sink = new StringSink();

ExecutionContext executionContext = smooks.createExecutionContext();

ByteArrayOutputStream  byteArrayOutputStream = new ByteArrayOutputStream();

XStream xstream = new XStream(new DomDriver());

xstream.autodetectAnnotations(true);

xstream.toXML(ediResponse1G, byteArrayOutputStream);

Source source = new ByteSource(byteArrayOutputStream.toByteArray());

smooks.filterSource(executionContext, source, sink);

 

If I run only a request, the conversion from java object (ediResponse1G) to edifact works fine…but if I run 10 parallel threads I got this error:

 

        at com.travelport.car.at.cdcp.model.edifact.EdifactDataTranformer.edifactToString(EdifactDataTranformer.java:135)

        at com.travelport.car.at.cdcp.availrule.service.avail.oneg.impl.CarCdcpAdapterCPLProviderAvailService1GImpl.process(CarCdcpAdapterCPLProviderAvailService1GImpl.java:188)

        at com.travelport.car.at.cdcp.availrule.service.resource.oneg.avail.CarCPLAdapterAvailResource1GImpl.onCall(CarCPLAdapterAvailResource1GImpl.java:86)

        at jdk.internal.reflect.GeneratedMethodAccessor155.invoke(Unknown Source)

        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

        at java.base/java.lang.reflect.Method.invoke(Method.java:568)

        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)

        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)

        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926)

        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)

        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)

        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)

        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)

        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)

        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)

        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)

        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)

        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)

        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)

        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)

        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)

        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)

        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)

        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)

        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)

        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)

        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)

        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)

        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)

        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)

        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:384)

        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)

        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)

        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1741)

        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)

        at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)

        at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)

        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)

        at java.base/java.lang.Thread.run(Thread.java:833)

Caused by: org.smooks.api.SmooksException: Failing edifact xml (with DomDriver over ByteSource and conversion time millis: 2): null

        at com.travelport.car.at.cdcp.model.edifact.availrule.oneg.marshaller.CarCdcpEdifactMarshaller1G.toEDI(CarCdcpEdifactMarshaller1G.java:167)

        at com.travelport.car.at.cdcp.model.edifact.EdifactDataTranformer.edifactToString(EdifactDataTranformer.java:132)

        ... 51 more

Caused by: org.smooks.api.SmooksException: Failed to filter source

        at org.smooks.engine.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:123)

        at org.smooks.engine.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:97)

        at org.smooks.Smooks._filter(Smooks.java:570)

        at org.smooks.Smooks.filterSource(Smooks.java:512)

        at com.travelport.car.at.cdcp.model.edifact.availrule.oneg.marshaller.CarCdcpEdifactMarshaller1G.toEDI(CarCdcpEdifactMarshaller1G.java:154)

        ... 52 more

Caused by: org.smooks.api.SmooksException: Error while processing start event

 

Error Context

---------------------------------------------------------------------------------------------------------------------------------------

Event => /EDIFACTCarAvailRuleResponse1G/group3/pli/geographicalDetails

Selector => pli/geographicalDetails

Content handler => org.smooks.cartridges.javabean.BeanInstanceCreator

---------------------------------------------------------------------------------------------------------------------------------------

 

        at org.smooks.engine.delivery.interceptor.ExceptionInterceptor.processVisitorException(ExceptionInterceptor.java:148)

        at org.smooks.engine.delivery.interceptor.ExceptionInterceptor.intercept(ExceptionInterceptor.java:127)

        at org.smooks.engine.delivery.interceptor.ExceptionInterceptor.visitBefore(ExceptionInterceptor.java:101)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:178)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:175)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:122)

        at org.smooks.engine.delivery.interceptor.StaticProxyInterceptor.visitBefore(StaticProxyInterceptor.java:125)

        at org.smooks.engine.delivery.sax.ng.SaxNgContentHandler.visitBefore(SaxNgContentHandler.java:284)

        at org.smooks.engine.delivery.sax.ng.SaxNgContentHandler.startElement(SaxNgContentHandler.java:186)

        at org.smooks.engine.delivery.SmooksContentHandler.startElement(SmooksContentHandler.java:110)

        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)

        at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)

        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)

        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)

        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)

        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)

        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)

        at org.smooks.engine.delivery.sax.ng.SaxNgParser.parse(SaxNgParser.java:87)

        at org.smooks.engine.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:111)

        ... 56 more

Caused by: java.lang.NoClassDefFoundError: org/mvel2/compiler/Accessor

        at java.base/java.lang.ClassLoader.defineClass1(Native Method)

        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)

        at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:874)

        at org.mvel2.optimizers.impl.asm.ASMAccessorOptimizer$ContextClassLoader.defineClass(ASMAccessorOptimizer.java:2321)

        at org.mvel2.optimizers.impl.asm.ASMAccessorOptimizer.loadClass(ASMAccessorOptimizer.java:2332)

        at org.mvel2.optimizers.impl.asm.ASMAccessorOptimizer._initializeAccessor(ASMAccessorOptimizer.java:814)

        at org.mvel2.optimizers.impl.asm.ASMAccessorOptimizer.optimizeSetAccessor(ASMAccessorOptimizer.java:729)

        at org.mvel2.optimizers.dynamic.DynamicSetAccessor.optimize(DynamicSetAccessor.java:83)

        at org.mvel2.optimizers.dynamic.DynamicSetAccessor.setValue(DynamicSetAccessor.java:60)

        at org.mvel2.compiler.CompiledAccExpression.setValue(CompiledAccExpression.java:59)

        at org.mvel2.ast.DeepAssignmentNode.getReducedValueAccelerated(DeepAssignmentNode.java:90)

        at org.mvel2.MVELRuntime.execute(MVELRuntime.java:85)

        at org.mvel2.compiler.CompiledExpression.getDirectValue(CompiledExpression.java:115)

        at org.mvel2.compiler.CompiledExpression.getValue(CompiledExpression.java:111)

        at org.mvel2.MVEL.executeExpression(MVEL.java:946)

        at org.smooks.engine.expression.MVELExpressionEvaluator.exec(MVELExpressionEvaluator.java:130)

        at org.smooks.engine.expression.MVELExpressionEvaluator.exec(MVELExpressionEvaluator.java:146)

        at org.smooks.cartridges.javabean.BeanInstanceCreator.createAndSetBean(BeanInstanceCreator.java:305)

        at org.smooks.cartridges.javabean.BeanInstanceCreator.visitBefore(BeanInstanceCreator.java:261)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:178)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:175)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:122)

        at org.smooks.engine.delivery.interceptor.ExecutionEventInterceptor.visitBefore(ExecutionEventInterceptor.java:68)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:178)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:175)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:122)

        at org.smooks.engine.delivery.interceptor.TextConsumerInterceptor.visitBefore(TextConsumerInterceptor.java:90)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:178)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:175)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:122)

        at org.smooks.engine.delivery.interceptor.StreamSinkWriterInterceptor.visitBefore(StreamSinkWriterInterceptor.java:87)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:178)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor$VisitBeforeInvocation.invoke(AbstractInterceptorVisitor.java:175)

        at org.smooks.engine.delivery.interceptor.AbstractInterceptorVisitor.intercept(AbstractInterceptorVisitor.java:122)

        at org.smooks.engine.delivery.interceptor.ExceptionInterceptor.intercept(ExceptionInterceptor.java:125)

        ... 74 more

Caused by: java.lang.ClassNotFoundException: org.mvel2.compiler.Accessor

        at java.base/java.lang.ClassLoader.findClass(ClassLoader.java:718)

        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)

        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)

        ... 109 more

 

 

As I said, the javaObject contains all the required fields, because the conversion has been made successfully with one single request.

Could you please help me to understand what the error cause is and why I got :

Caused by: java.lang.ClassNotFoundException: org.mvel2.compiler.Accessor

 Considering that :

<artifactId>mvel2</artifactId>

  <name>mvel</name>

  <version>2.5.2.Final</version>

 

is included in my application because the dependency has been resolved by smooks-core: 2.2.0 that is inside smooks-javabean-cartridge: 2.0.2?

Thanks in advance, 

Serena

Claude

unread,
Feb 14, 2025, 2:59:52 AMFeb 14
to Smooks Users
Hi Serena,

Posts need to be directed to the community since, while it's true I'm a core committer, I'm just one of many contributors.

About the error, looks like it's related to https://github.com/mvel/mvel/issues/194 . Can you create an issue in the relevant cartridge? One workaround to solving this could be synchronising the first execution.

Claude

Serena Angelucci

unread,
Feb 14, 2025, 4:32:14 AMFeb 14
to smook...@googlegroups.com
Hi Claude, 
sure, I'm going to open the issue.
Thanks,
Serena


--
You received this message because you are subscribed to the Google Groups "Smooks Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to smooks-user...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/smooks-user/0764d7a3-d4c8-40b4-a5fd-5fc05254c558n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages