ode-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matthieu Riou" <matthieu.r...@gmail.com>
Subject Re: NullPointerException with Apache ODE 1.0, HelloWorld example and Tomcat 5.0.28
Date Thu, 21 Jun 2007 16:36:21 GMT
Thanks for the feedback, I'll add that as a note in the installation
instructions.

Matthieu

On 6/21/07, Manolo Gomez Lopez <performante@gmail.com> wrote:
>
>
>
> 2007/6/21, Matthieu Riou <matthieu.riou@gmail.com>:
> >
> > JEE and run anywhere...
>
>
> I'm usually a Debian guy, but since mac came to my life I'm still
> searching for good reasons not to use it as my first OS, this is not one of
> those, as Tomcat is the originator of the problem:
>
> I was using Tomcat 5.0.28, I checked that it has endorsed Xerces-J 2.6.2,
> I've downloaded Tomcat 6.0.13 and all goes well, and I can see my new
> process deployed, this happens in Tomcat 6.0 because it doesn't use the
> endorsed mechanism anymore for XML apis and Apache ODE finds it Xerces
> 2.8.0 version in it's context alone.
>
> Now you can blacklist Tomcat 5.0.28 for Apache ODE (at least if using it
> with the endorsed Xerces that comes with the vanilla distribution package
> from Apache)
>
> If you delete xercesImpl.jar and xml.apis.jar from commons/endorsed
> directory of Tomcat 5.0.28 and copy there the xercesImpl-2.8.0.jarincluded in Apache
ODE it all goes OK (at least with the hello world
> example).
>
> Thanks
>
>
>
>
> I don't run OS/X (u3untu rulez) so I can't help you with its JDK but
> > normally Xerces is bundled under different packages so it shouldn't be a
> > problem. Which version of Tomcat are you using? Can you do a search for
> > xerces-* and see what it gives you?
> >
> > The correct version to use with ODE is xercesImpl 2.8.0 so if you find
> > another one you can try to replace it, upgrading usually doesn't break other
> > stuff.
> >
> > On 6/21/07, Manolo Gomez Lopez <performante@gmail.com> wrote:
> > >
> > >
> > >
> > > 2007/6/21, Matthieu Riou <matthieu.riou@gmail.com>:
> > > >
> > > > Hi Manolo,
> > > >
> > > > Starting with the hello world is always a good idea :) You have two
> > > > problems
> > > > I believe.
> > >
> > >
> > >
> > > I know, I know ;-)
> > >
> > >
> > >
> > > 1. Your process doesn't seem to be deployed. Did you copy the whole
> > > > HelloWorld directory (the directory itself, not its content) to the
> > > > WEB-INF/processes directory of the ODE's deployed web app? If so you
> > > > can
> > > > check by going to http://localhost:8080/ode that it's in the list of
> > > > deployed services ?
> > >
> > >
> > > Sure, the directory is correctly copied.
> > >
> > > But with your hint, I realized that in fact the processes are not
> > > deployed.
> > >
> > > I redeployed the processes and got this:
> > >
> > > ERROR - GeronimoLog.error(108) | Deploy failed; BPEL compilation
> > > errors.
> > > org.apache.ode.bpel.compiler.api.CompilationException:
> > > file:/Users/argaldo/java/apps/tomcat/webapps/ode/WEB-INF/processes/DynPartner/DynPartnerMain.bpel:0:
> > > error: [BpelParseErr] Error parsing BPEL process: the BPEL is either
> > > malformed or is invalid.
> > >         at org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:313)
> > >         at org.apache.ode.store.DeploymentUnitDir.compile(
> > > DeploymentUnitDir.java:152)
> > >         at org.apache.ode.store.DeploymentUnitDir.compile (
> > > DeploymentUnitDir.java:123)
> > >         at org.apache.ode.store.ProcessStoreImpl.deploy(
> > > ProcessStoreImpl.java:165)
> > >         at org.apache.ode.axis2.deploy.DeploymentPoller.check(
> > > DeploymentPoller.java:144)
> > >         at org.apache.ode.axis2.deploy.DeploymentPoller.access$300(
> > > DeploymentPoller.java:55)
> > >         at
> > > org.apache.ode.axis2.deploy.DeploymentPoller$PollingThread.run(
> > > DeploymentPoller.java:188)
> > > Caused by: java.lang.RuntimeException : Internal compiler error
> > >         at
> > > org.apache.ode.bpel.compiler.bom.BpelObjectFactory.createBpelObject(
> > > BpelObjectFactory.java:277)
> > >         at org.apache.ode.bpel.compiler.bom.BpelObjectFactory.parse(
> > > BpelObjectFactory.java :307)
> > >         at org.apache.ode.bpel.compiler.BpelC.compile(BpelC.java:309)
> > >         ... 6 more
> > > Caused by: java.lang.reflect.InvocationTargetException
> > >         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> > >         at sun.reflect.NativeConstructorAccessorImpl.newInstance(
> > > NativeConstructorAccessorImpl.java:39)
> > >         at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(
> > > DelegatingConstructorAccessorImpl.java :27)
> > >         at java.lang.reflect.Constructor.newInstance(Constructor.java
> > > :494)
> > >         at
> > > org.apache.ode.bpel.compiler.bom.BpelObjectFactory.createBpelObject(
> > > BpelObjectFactory.java:273)
> > >         ... 8 more
> > > Caused by: java.lang.NoSuchMethodError:
> > > org.w3c.dom.Attr.getTextContent()Ljava/lang/String;
> > >         at org.apache.ode.bpel.compiler.bom.BpelObject.initNSContext(
> > > BpelObject.java:251)
> > >         at org.apache.ode.bpel.compiler.bom.BpelObject .<init>(
> > > BpelObject.java:65)
> > >         at org.apache.ode.bpel.compiler.bom.JoinFailureSuppressor
> > > .<init>(JoinFailureSuppressor.java:33)
> > >         at org.apache.ode.bpel.compiler.bom.Scope.<init>(Scope.java:38)
> > >         at org.apache.ode.bpel.compiler.bom.Process.<init>(
> > > Process.java:38)
> > >         ... 13 more
> > >
> > > (I lost this information on the previous deploy because of a restart
> > > of Tomcat before the tests)
> > >
> > > Seems to be complaining about the lack of a method in
> > > org.w3c.dom.Attr.getTextContent() wich is implemented in all DOM 3
> > > implementations...
> > >
> > >
> > > I'm running Apache ODE in Mac OS X and using Java 1.5.0_07
> > >
> > > Does this means the problem probably is in Xerces, the one included in
> > > my Tomcat or the embedded version in the jdk? Maybe Mac OS has one hidden
> > > somewhere?
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > 2. We're having difficulties with Axis2 1.1.1 throwing NPEs anytime we
> > > > give
> > > > it a fault. If the problem persists, we have a patched version of
> > > > axis2-kernel that you can use to fix these exceptions.
> > > >
> > > > Cheers,
> > > > Matthieu
> > > >
> > > > On 6/21/07, Manolo Gomez Lopez <performante@gmail.com> wrote:
> > > > >
> > > > > Hi,
> > > > >
> > > > >    I'm going to dive into BPEL the next weeks, and we want to give
> > > > Apache
> > > > > Ode a try for our processes.
> > > > >
> > > > >    I've downloaded the war package from Apache's ODE web and
> > > > deployed it
> > > > > in
> > > > > a Tomcat 5.0.28 and as a well-mannered boy prepared for a Hello
> > > > World!
> > > > > test
> > > > > (given the instructions on the web site). And then after executing
> > > > :
> > > > >
> > > > > bin/sendsoap http://localhost:8080/ode/processes/helloWorld
> > > > > examples/HelloWorld2/testRequest.soap
> > > > >
> > > > > I got this:
> > > > >
> > > > > at the server:
> > > > > DEBUG - GeronimoLog.debug(66) | Checking for Service using target
> > > > endpoint
> > > > > address : http://localhost:8080/ode/processes/helloWorld
> > > > > 15:35:33,484 DEBUG [ODEAxisDispatcher] Checking for Service using
> > > > target
> > > > > endpoint address : http://localhost:8080/ode/processes/helloWorld
> > > > > DEBUG - GeronimoLog.debug(66) | Found service in registry from
> > > > name
> > > > > helloWorld: null
> > > > > 15:35:33,485 DEBUG [ODEAxisDispatcher] Found service in registry
> > > > from name
> > > > > helloWorld: null
> > > > >
> > > > >
> > > > > at the client:
> > > > >
> > > > >
> > > > >
> > > > > <p><b>type</b> Exception report</p><p><b>message</b>
> > > > > <u></u></p><p><b>description</b>
<u>The server encountered an
> > > > internal
> > > > > error () that prevented it from fulfilling this
> > > > > request.</u></p><p><b>exception</b>
> > > > > <pre>java.lang.NullPointerException
> > > > >
> > > > >
> > > > org.apache.axis2.engine.AxisEngine.extractFaultInformationFromMessageContext
> > > > > (AxisEngine.java:353)
> > > > >
> > > > org.apache.axis2.engine.AxisEngine.createFaultMessageContext(
> > > > > AxisEngine.java:249)
> > > > >         org.apache.axis2.transport.http.AxisServlet.handleFault(
> > > > > AxisServlet.java :317)
> > > > >         org.apache.axis2.transport.http.AxisServlet.doPost(
> > > > > AxisServlet.java:277)
> > > > >         javax.servlet.http.HttpServlet.service(HttpServlet.java
> > > > :709)
> > > > >         javax.servlet.http.HttpServlet.service (HttpServlet.java
> > > > :802)
> > > > >
> > > > >
> > > > > This is the full stacktrace:
> > > > >
> > > > > 2007-06-21 17:02:08 StandardWrapperValve[AxisServlet]:
> > > > > Servlet.service() for servlet AxisServlet threw exception
> > > > > java.lang.NullPointerException
> > > > >         at
> > > > >
> > > > org.apache.axis2.engine.AxisEngine.extractFaultInformationFromMessageContext
> > > > > (AxisEngine.java:353)
> > > > >         at
> > > > org.apache.axis2.engine.AxisEngine.createFaultMessageContext (
> > > > > AxisEngine.java:249)
> > > > >         at org.apache.axis2.transport.http.AxisServlet.handleFault
> > > > (
> > > > > AxisServlet.java:317)
> > > > >         at org.apache.axis2.transport.http.AxisServlet.doPost(
> > > > > AxisServlet.java :277)
> > > > >         at javax.servlet.http.HttpServlet.service(HttpServlet.java
> > > > :709)
> > > > >         at javax.servlet.http.HttpServlet.service(HttpServlet.java
> > > > :802)
> > > > >         at
> > > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(
> > > > > ApplicationFilterChain.java:237)
> > > > >         at
> > > > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> > > > > ApplicationFilterChain.java:157)
> > > > >         at org.apache.catalina.core.StandardWrapperValve.invoke (
> > > > > StandardWrapperValve.java:214)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:104)
> > > > >         at org.apache.catalina.core.StandardPipeline.invoke (
> > > > > StandardPipeline.java:520)
> > > > >         at
> > > > org.apache.catalina.core.StandardContextValve.invokeInternal(
> > > > > StandardContextValve.java:198)
> > > > >         at org.apache.catalina.core.StandardContextValve.invoke (
> > > > > StandardContextValve.java:152)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:104)
> > > > >         at org.apache.catalina.core.StandardPipeline.invoke (
> > > > > StandardPipeline.java:520)
> > > > >         at org.apache.catalina.core.StandardHostValve.invoke(
> > > > > StandardHostValve.java:137)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:104)
> > > > >         at org.apache.catalina.valves.ErrorReportValve.invoke(
> > > > > ErrorReportValve.java:118)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:102)
> > > > >         at org.apache.catalina.core.StandardPipeline.invoke(
> > > > > StandardPipeline.java:520)
> > > > >         at org.apache.catalina.core.StandardEngineValve.invoke(
> > > > > StandardEngineValve.java :109)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:104)
> > > > >         at org.apache.catalina.core.StandardPipeline.invoke(
> > > > > StandardPipeline.java :520)
> > > > >         at org.apache.catalina.core.ContainerBase.invoke(
> > > > > ContainerBase.java:929)
> > > > >         at org.apache.coyote.tomcat5.CoyoteAdapter.service(
> > > > > CoyoteAdapter.java:160)
> > > > >         at org.apache.coyote.http11.Http11Processor.process (
> > > > > Http11Processor.java:799)
> > > > >         at
> > > > >
> > > > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
> > > > > (Http11Protocol.java:705)
> > > > >         at org.apache.tomcat.util.net.TcpWorkerThread.runIt (
> > > > > PoolTcpEndpoint.java:577)
> > > > >         at
> > > > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> > > > > ThreadPool.java:683)
> > > > >         at java.lang.Thread.run(Thread.java:613)
> > > > >
> > > > > 2007-06-21 17:02:08
> > > > org.apache.catalina.core.StandardHostValve@f924e1:
> > > > > Exception Processing ErrorPage[errorCode=500,
> > > > > location=/axis2-web/Error/error500.jsp]
> > > > > java.lang.IllegalStateException: getOutputStream() has already
> > > > been
> > > > > called for this response
> > > > >         at org.apache.coyote.tomcat5.CoyoteResponse.getWriter(
> > > > > CoyoteResponse.java:599)
> > > > >         at
> > > > org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(
> > > > > CoyoteResponseFacade.java:163)
> > > > >         at org.apache.jasper.runtime.JspWriterImpl.initOut(
> > > > > JspWriterImpl.java:122)
> > > > >         at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(
> > > > > JspWriterImpl.java :115)
> > > > >         at org.apache.jasper.runtime.PageContextImpl.release(
> > > > > PageContextImpl.java:190)
> > > > >         at
> > > > >
> > > > org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(
> > > > > JspFactoryImpl.java :115)
> > > > >         at
> > > > org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(
> > > > > JspFactoryImpl.java:75)
> > > > >         at
> > > > org.apache.jsp.axis2_002dweb.Error.error500_jsp._jspService
> > > > > (error500_jsp.java:97)
> > > > >         at org.apache.jasper.runtime.HttpJspBase.service(
> > > > HttpJspBase.java
> > > > > :94)
> > > > >         at javax.servlet.http.HttpServlet.service(HttpServlet.java
> > > > :802)
> > > > >         at org.apache.jasper.servlet.JspServletWrapper.service (
> > > > > JspServletWrapper.java:324)
> > > > >         at org.apache.jasper.servlet.JspServlet.serviceJspFile(
> > > > > JspServlet.java:292)
> > > > >         at org.apache.jasper.servlet.JspServlet.service(
> > > > JspServlet.java
> > > > > :236)
> > > > >         at javax.servlet.http.HttpServlet.service(HttpServlet.java
> > > > :802)
> > > > >         at
> > > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> > > > > ApplicationFilterChain.java:237)
> > > > >         at
> > > > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> > > > > ApplicationFilterChain.java:157)
> > > > >         at org.apache.catalina.core.ApplicationDispatcher.invoke(
> > > > > ApplicationDispatcher.java :704)
> > > > >         at
> > > > org.apache.catalina.core.ApplicationDispatcher.processRequest(
> > > > > ApplicationDispatcher.java:476)
> > > > >         at
> > > > org.apache.catalina.core.ApplicationDispatcher.doForward(
> > > > > ApplicationDispatcher.java :409)
> > > > >         at org.apache.catalina.core.ApplicationDispatcher.forward(
> > > > > ApplicationDispatcher.java:312)
> > > > >         at org.apache.catalina.core.StandardHostValve.custom(
> > > > > StandardHostValve.java :396)
> > > > >         at org.apache.catalina.core.StandardHostValve.status(
> > > > > StandardHostValve.java:301)
> > > > >         at org.apache.catalina.core.StandardHostValve.throwable(
> > > > > StandardHostValve.java:244)
> > > > >         at org.apache.catalina.core.StandardHostValve.invoke(
> > > > > StandardHostValve.java:145)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:104)
> > > > >         at org.apache.catalina.valves.ErrorReportValve.invoke(
> > > > > ErrorReportValve.java:118)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:102)
> > > > >         at org.apache.catalina.core.StandardPipeline.invoke(
> > > > > StandardPipeline.java:520)
> > > > >         at org.apache.catalina.core.StandardEngineValve.invoke(
> > > > > StandardEngineValve.java:109)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:104)
> > > > >         at org.apache.catalina.core.StandardPipeline.invoke(
> > > > > StandardPipeline.java:520)
> > > > >         at org.apache.catalina.core.ContainerBase.invoke (
> > > > > ContainerBase.java:929)
> > > > >         at org.apache.coyote.tomcat5.CoyoteAdapter.service(
> > > > > CoyoteAdapter.java:160)
> > > > >         at org.apache.coyote.http11.Http11Processor.process(
> > > > > Http11Processor.java :799)
> > > > >         at
> > > > >
> > > > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
> > > > > (Http11Protocol.java:705)
> > > > >         at org.apache.tomcat.util.net.TcpWorkerThread.runIt(
> > > > > PoolTcpEndpoint.java:577)
> > > > >         at
> > > > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> > > > > ThreadPool.java:683)
> > > > >         at java.lang.Thread.run(Thread.java:613)
> > > > >
> > > > > 2007-06-21 17:02:08
> > > > org.apache.catalina.core.StandardHostValve@f924e1:
> > > > > Exception Processing ErrorPage[errorCode=500,
> > > > > location=/axis2-web/Error/error500.jsp]
> > > > > java.lang.IllegalStateException: getOutputStream() has already
> > > > been
> > > > > called for this response
> > > > >         at org.apache.coyote.tomcat5.CoyoteResponse.getWriter(
> > > > > CoyoteResponse.java:599)
> > > > >         at
> > > > org.apache.coyote.tomcat5.CoyoteResponseFacade.getWriter(
> > > > > CoyoteResponseFacade.java:163)
> > > > >         at org.apache.jasper.runtime.JspWriterImpl.initOut(
> > > > > JspWriterImpl.java:122)
> > > > >         at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(
> > > > > JspWriterImpl.java :115)
> > > > >         at org.apache.jasper.runtime.PageContextImpl.release(
> > > > > PageContextImpl.java:190)
> > > > >         at
> > > > >
> > > > org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(
> > > > > JspFactoryImpl.java :115)
> > > > >         at
> > > > org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(
> > > > > JspFactoryImpl.java:75)
> > > > >         at
> > > > org.apache.jsp.axis2_002dweb.Error.error500_jsp._jspService
> > > > > (error500_jsp.java:97)
> > > > >         at org.apache.jasper.runtime.HttpJspBase.service(
> > > > HttpJspBase.java
> > > > > :94)
> > > > >         at javax.servlet.http.HttpServlet.service(HttpServlet.java
> > > > :802)
> > > > >         at org.apache.jasper.servlet.JspServletWrapper.service (
> > > > > JspServletWrapper.java:324)
> > > > >         at org.apache.jasper.servlet.JspServlet.serviceJspFile(
> > > > > JspServlet.java:292)
> > > > >         at org.apache.jasper.servlet.JspServlet.service(
> > > > JspServlet.java
> > > > > :236)
> > > > >         at javax.servlet.http.HttpServlet.service(HttpServlet.java
> > > > :802)
> > > > >         at
> > > > > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> > > > > ApplicationFilterChain.java:237)
> > > > >         at
> > > > org.apache.catalina.core.ApplicationFilterChain.doFilter(
> > > > > ApplicationFilterChain.java:157)
> > > > >         at org.apache.catalina.core.ApplicationDispatcher.invoke(
> > > > > ApplicationDispatcher.java :704)
> > > > >         at
> > > > org.apache.catalina.core.ApplicationDispatcher.processRequest(
> > > > > ApplicationDispatcher.java:476)
> > > > >         at
> > > > org.apache.catalina.core.ApplicationDispatcher.doForward(
> > > > > ApplicationDispatcher.java :409)
> > > > >         at org.apache.catalina.core.ApplicationDispatcher.forward(
> > > > > ApplicationDispatcher.java:312)
> > > > >         at org.apache.catalina.core.StandardHostValve.custom(
> > > > > StandardHostValve.java :396)
> > > > >         at org.apache.catalina.core.StandardHostValve.status(
> > > > > StandardHostValve.java:301)
> > > > >         at org.apache.catalina.core.StandardHostValve.throwable(
> > > > > StandardHostValve.java:244)
> > > > >         at org.apache.catalina.core.StandardHostValve.invoke(
> > > > > StandardHostValve.java:145)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:104)
> > > > >         at org.apache.catalina.valves.ErrorReportValve.invoke(
> > > > > ErrorReportValve.java:118)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:102)
> > > > >         at org.apache.catalina.core.StandardPipeline.invoke(
> > > > > StandardPipeline.java:520)
> > > > >         at org.apache.catalina.core.StandardEngineValve.invoke(
> > > > > StandardEngineValve.java:109)
> > > > >         at
> > > > org.apache.catalina.core.StandardValveContext.invokeNext(
> > > > > StandardValveContext.java:104)
> > > > >         at org.apache.catalina.core.StandardPipeline.invoke(
> > > > > StandardPipeline.java:520)
> > > > >         at org.apache.catalina.core.ContainerBase.invoke (
> > > > > ContainerBase.java:929)
> > > > >         at org.apache.coyote.tomcat5.CoyoteAdapter.service(
> > > > > CoyoteAdapter.java:160)
> > > > >         at org.apache.coyote.http11.Http11Processor.process(
> > > > > Http11Processor.java :799)
> > > > >         at
> > > > >
> > > > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection
> > > > > (Http11Protocol.java:705)
> > > > >         at org.apache.tomcat.util.net.TcpWorkerThread.runIt(
> > > > > PoolTcpEndpoint.java:577)
> > > > >         at
> > > > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(
> > > > > ThreadPool.java:683)
> > > > >         at java.lang.Thread.run(Thread.java:613)
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Any hint on what's happenning?
> > > > >
> > > >
> > >
> > >
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message