users@jersey.java.net

Re: [Jersey] MIMEParsingException: Missing start boundary?

From: Paul Sandoz <Paul.Sandoz_at_Sun.COM>
Date: Thu, 25 Jun 2009 11:56:47 +0200

Hi Ari,

The log you have presented is i presume generated from the Jersey
client API, correct?

I am guessing that JMeter is not correctly preserving the request.
What exactly is JMeter sending for the request entity ? (i presume not
the exact content of what the client log produces with the "9 >" lines
in it?)

The error is indicative there being no boundary in the request entity
to demarcate a MIME part.

Can you add logging to the server side so we can see what JMeter is
sending?

   https://jersey.dev.java.net/nonav/apidocs/1.1.0-ea/jersey/com/sun/jersey/api/container/filter/LoggingFilter.html

Paul.

On Jun 25, 2009, at 11:20 AM, Ari Heino wrote:

>
> Hi!
>
> I'm trying to test Jersey (1.0.3) Multipart/Mixed binary transport
> with
> JMeter (2.3.2)
>
> My test request log when tried to send xml text file in a stream in
> a JMeter
> test:
>
> 9 * In-bound request received
> 9 > POST
> http://localhost:8080/webservices/projects/new_project/contents/code_style.xml
> 9 > Authorization: Basic TWlrZTphc2Q=
> 9 > Content-Length: 3844
> 9 > Connection: keep-alive
> 9 > Host: localhost:8080
> 9 > User-Agent: Jakarta Commons-HttpClient/3.1
> 9 > Content-Type: multipart/
> mixed;boundary=Boundary_2_16447937_1245843893346
> 9 > Accept: multipart/mixed
> 9 > MIME-Version: 1.0
> 9 >
>
> --Boundary_2_16447937_1245843893346
> Content-Type: application/xml
>
> <?xml version="1.0" encoding="UTF-8"
> standalone="yes"?><versionContentDto><name>code_style.xml</
> name><versionDate>2009-06-24T14:44:53.268+03:00</
> versionDate><author>Mike</author><resourceId>907</resourceId></
> versionContentDto>
> --Boundary_2_16447937_1245843893346
> Content-Type: application/octet-stream
>
> <?xml version="1.0" encoding="UTF-8"?>
> <profiles version="2">
> <profile kind="CleanUpProfile" name="code_style" version="2">
> <setting
> id="cleanup.qualify_static_member_accesses_with_declaring_class"
> value="true"/>
> <setting id="cleanup.always_use_blocks" value="true"/>
> <setting id="cleanup.make_variable_declarations_final" value="true"/>
> <setting id="cleanup.add_serial_version_id" value="true"/>
> <setting
> id
> =
> "cleanup
> .qualify_static_member_accesses_through_subtypes_with_declaring_class"
> value="true"/>
> <setting
> id
> =
> "cleanup
> .qualify_static_member_accesses_through_instances_with_declaring_class
> "
> value="true"/>
> <setting id="cleanup.use_this_for_non_static_method_access"
> value="false"/>
> <setting
> id="cleanup.use_this_for_non_static_method_access_only_if_necessary"
> value="true"/>
> <setting id="cleanup.add_default_serial_version_id" value="false"/>
> <setting
> id="cleanup.qualify_static_field_accesses_with_declaring_class"
> value="true"/>
> <setting
> id="cleanup.use_this_for_non_static_field_access_only_if_necessary"
> value="true"/>
> <setting id="cleanup.always_use_this_for_non_static_field_access"
> value="false"/>
> <setting id="cleanup.remove_trailing_whitespaces_all" value="false"/>
> <setting id="cleanup.use_parentheses_in_expressions" value="true"/>
> <setting id="cleanup.always_use_this_for_non_static_method_access"
> value="false"/>
> <setting id="cleanup.add_missing_annotations" value="true"/>
> <setting id="cleanup.use_blocks" value="true"/>
> <setting id="cleanup.remove_private_constructors" value="false"/>
> <setting id="cleanup.use_this_for_non_static_field_access"
> value="false"/>
> <setting id="cleanup.use_blocks_only_for_return_and_throw"
> value="false"/>
> <setting id="cleanup.make_parameters_final" value="true"/>
> <setting id="cleanup.remove_unnecessary_casts" value="true"/>
> <setting id="cleanup.sort_members_all" value="true"/>
> <setting id="cleanup.never_use_parentheses_in_expressions"
> value="false"/>
> <setting id="cleanup.remove_trailing_whitespaces" value="true"/>
> <setting id="cleanup.remove_unused_private_members" value="false"/>
> <setting id="cleanup.organize_imports" value="true"/>
> <setting id="cleanup.remove_unused_local_variables" value="true"/>
> <setting id="cleanup.add_generated_serial_version_id" value="true"/>
> <setting id="cleanup.sort_members" value="true"/>
> <setting id="cleanup.make_private_fields_final" value="true"/>
> <setting id="cleanup.remove_trailing_whitespaces_ignore_empty"
> value="true"/>
> <setting id="cleanup.remove_unused_imports" value="true"/>
> <setting id="cleanup.remove_unnecessary_nls_tags" value="false"/>
> <setting id="cleanup.convert_to_enhanced_for_loop" value="true"/>
> <setting id="cleanup.remove_unused_private_methods" value="false"/>
> <setting id="cleanup.add_missing_deprecated_annotations"
> value="true"/>
> <setting id="cleanup.make_local_variable_final" value="true"/>
> <setting id="cleanup.never_use_blocks" value="false"/>
> <setting id="cleanup.always_use_parentheses_in_expressions"
> value="true"/>
> <setting id="cleanup.remove_unused_private_fields" value="false"/>
> <setting id="cleanup.remove_unused_private_types" value="false"/>
> <setting
> id="cleanup.qualify_static_method_accesses_with_declaring_class"
> value="true"/>
> <setting id="cleanup.add_missing_override_annotations" value="true"/>
> <setting id="cleanup.format_source_code" value="true"/>
> <setting id="cleanup.add_missing_nls_tags" value="false"/>
> </profile>
> </profiles>
>
> --Boundary_2_16447937_1245843893346--
>
> This caused an exception:
>
> 25.6.2009 11:03:11
> server
> .communication
> .webservice.exceptions.handlers.global.WebApplicationExceptionHandler
> toResponse
> SEVERE: WebApplicationException Error:
> org.jvnet.mimepull.MIMEParsingException: Missing start boundary
> javax.ws.rs.WebApplicationException:
> org.jvnet.mimepull.MIMEParsingException: Missing start boundary
> at
> com
> .sun
> .jersey.multipart.impl.MultiPartReader.readFrom(MultiPartReader.java:
> 203)
> at
> com
> .sun
> .jersey.multipart.impl.MultiPartReader.readFrom(MultiPartReader.java:
> 74)
> at
> com
> .sun
> .jersey
> .spi.container.ContainerRequest.getEntity(ContainerRequest.java:393)
> at
> com
> .sun
> .jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider
> $EntityInjectable.getValue(EntityParamDispatchProvider.java:139)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .inject
> .InjectableValuesProvider
> .getInjectableValues(InjectableValuesProvider.java:43)
> at
> com
> .sun
> .jersey
> .server
> .impl.model.method.dispatch.AbstractResourceMethodDispatchProvider
> $
> EntityParamInInvoker
> .getParams(AbstractResourceMethodDispatchProvider.java:126)
> at
> com
> .sun
> .jersey
> .server
> .impl.model.method.dispatch.AbstractResourceMethodDispatchProvider
> $
> ResponseOutInvoker
> ._dispatch(AbstractResourceMethodDispatchProvider.java:173)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .model
> .method
> .dispatch
> .ResourceJavaMethodDispatcher
> .dispatch(ResourceJavaMethodDispatcher.java:67)
> at
> com
> .sun
> .jersey
> .server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163)
> at
> com
> .sun
> .jersey
> .server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:105)
> at
> com
> .sun
> .jersey
> .server
> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
> at
> com
> .sun
> .jersey
> .server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:105)
> at
> com
> .sun
> .jersey
> .server
> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
> at
> com
> .sun
> .jersey
> .server
> .impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71)
> at
> com
> .sun
> .jersey
> .server
> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .uri
> .rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl._handleRequest(WebApplicationImpl.java:654)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:612)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:603)
> at
> com
> .sun
> .jersey.spi.container.servlet.WebComponent.service(WebComponent.java:
> 309)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:425)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:590)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> org
> .eclipse
> .equinox
> .http
> .servlet
> .internal.ServletRegistration.handleRequest(ServletRegistration.java:
> 90)
> at
> org
> .eclipse
> .equinox
> .http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:
> 111)
> at
> org
> .eclipse
> .equinox
> .http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> org.eclipse.equinox.http.jetty.internal.HttpServerManager
> $InternalHttpServiceServlet.service(HttpServerManager.java:269)
> at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
> at
> org
> .mortbay.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:
> 677)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> 568)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
> at org.mortbay.http.HttpServer.service(HttpServer.java:909)
> at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
> at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:
> 986)
> at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
> at
> org.mortbay.http.SocketListener.handleConnection(SocketListener.java:
> 245)
> at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
> at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
> Caused by: org.jvnet.mimepull.MIMEParsingException: Missing start
> boundary
> at org.jvnet.mimepull.MIMEParser.skipPreamble(MIMEParser.java:303)
> at org.jvnet.mimepull.MIMEParser.access$300(MIMEParser.java:62)
> at
> org.jvnet.mimepull.MIMEParser$MIMEEventIterator.next(MIMEParser.java:
> 138)
> at
> org.jvnet.mimepull.MIMEParser$MIMEEventIterator.next(MIMEParser.java:
> 123)
> at org.jvnet.mimepull.MIMEMessage.makeProgress(MIMEMessage.java:193)
> at org.jvnet.mimepull.MIMEMessage.parseAll(MIMEMessage.java:176)
> at org.jvnet.mimepull.MIMEMessage.getAttachments(MIMEMessage.java:
> 101)
> at
> com
> .sun
> .jersey.multipart.impl.MultiPartReader.readFrom(MultiPartReader.java:
> 166)
> ... 39 more
> 25.6.2009 11:03:11
> com.sun.jersey.server.impl.application.WebApplicationImpl
> onException
> SEVERE: Internal server error
> javax.ws.rs.WebApplicationException:
> org.jvnet.mimepull.MIMEParsingException: Missing start boundary
> at
> com
> .sun
> .jersey.multipart.impl.MultiPartReader.readFrom(MultiPartReader.java:
> 203)
> at
> com
> .sun
> .jersey.multipart.impl.MultiPartReader.readFrom(MultiPartReader.java:
> 74)
> at
> com
> .sun
> .jersey
> .spi.container.ContainerRequest.getEntity(ContainerRequest.java:393)
> at
> com
> .sun
> .jersey.server.impl.model.method.dispatch.EntityParamDispatchProvider
> $EntityInjectable.getValue(EntityParamDispatchProvider.java:139)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .inject
> .InjectableValuesProvider
> .getInjectableValues(InjectableValuesProvider.java:43)
> at
> com
> .sun
> .jersey
> .server
> .impl.model.method.dispatch.AbstractResourceMethodDispatchProvider
> $
> EntityParamInInvoker
> .getParams(AbstractResourceMethodDispatchProvider.java:126)
> at
> com
> .sun
> .jersey
> .server
> .impl.model.method.dispatch.AbstractResourceMethodDispatchProvider
> $
> ResponseOutInvoker
> ._dispatch(AbstractResourceMethodDispatchProvider.java:173)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .model
> .method
> .dispatch
> .ResourceJavaMethodDispatcher
> .dispatch(ResourceJavaMethodDispatcher.java:67)
> at
> com
> .sun
> .jersey
> .server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:163)
> at
> com
> .sun
> .jersey
> .server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:105)
> at
> com
> .sun
> .jersey
> .server
> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
> at
> com
> .sun
> .jersey
> .server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:105)
> at
> com
> .sun
> .jersey
> .server
> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
> at
> com
> .sun
> .jersey
> .server
> .impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:71)
> at
> com
> .sun
> .jersey
> .server
> .impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:111)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .uri
> .rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:63)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl._handleRequest(WebApplicationImpl.java:654)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:612)
> at
> com
> .sun
> .jersey
> .server
> .impl
> .application
> .WebApplicationImpl.handleRequest(WebApplicationImpl.java:603)
> at
> com
> .sun
> .jersey.spi.container.servlet.WebComponent.service(WebComponent.java:
> 309)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:425)
> at
> com
> .sun
> .jersey
> .spi
> .container.servlet.ServletContainer.service(ServletContainer.java:590)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> org
> .eclipse
> .equinox
> .http
> .servlet
> .internal.ServletRegistration.handleRequest(ServletRegistration.java:
> 90)
> at
> org
> .eclipse
> .equinox
> .http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:
> 111)
> at
> org
> .eclipse
> .equinox
> .http.servlet.internal.ProxyServlet.service(ProxyServlet.java:67)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
> at
> org.eclipse.equinox.http.jetty.internal.HttpServerManager
> $InternalHttpServiceServlet.service(HttpServerManager.java:269)
> at
> org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
> at
> org
> .mortbay.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:
> 677)
> at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> 568)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)
> at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)
> at org.mortbay.http.HttpServer.service(HttpServer.java:909)
> at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)
> at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:
> 986)
> at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)
> at
> org.mortbay.http.SocketListener.handleConnection(SocketListener.java:
> 245)
> at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)
> at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)
> Caused by: org.jvnet.mimepull.MIMEParsingException: Missing start
> boundary
> at org.jvnet.mimepull.MIMEParser.skipPreamble(MIMEParser.java:303)
> at org.jvnet.mimepull.MIMEParser.access$300(MIMEParser.java:62)
> at
> org.jvnet.mimepull.MIMEParser$MIMEEventIterator.next(MIMEParser.java:
> 138)
> at
> org.jvnet.mimepull.MIMEParser$MIMEEventIterator.next(MIMEParser.java:
> 123)
> at org.jvnet.mimepull.MIMEMessage.makeProgress(MIMEMessage.java:193)
> at org.jvnet.mimepull.MIMEMessage.parseAll(MIMEMessage.java:176)
> at org.jvnet.mimepull.MIMEMessage.getAttachments(MIMEMessage.java:
> 101)
> at
> com
> .sun
> .jersey.multipart.impl.MultiPartReader.readFrom(MultiPartReader.java:
> 166)
> ... 39 more
>
> The request was recorded with JMeter from an actual client request
> that was
> successfully complited (xml file found itself into database). But
> when I run
> the JMeter version of the request Jersey complains about the missing
> start
> boundary.
>
> Any ideas?
> --
> View this message in context: http://n2.nabble.com/MIMEParsingException%3A-Missing-start-boundary--tp3153969p3153969.html
> Sent from the Jersey mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>