users@saaj.java.net

Missing Start Boundary

From: dloy <david.loy_at_ucop.edu>
Date: Tue, 07 Oct 2008 17:03:00 -0700

I hope this is the right forum for this issue.

I am getting the Missing Start Boundary exception from both java 1.6 and
for the latest saaj release (run in both 1.5 and 1.6).

java.lang.Exception: Missing Start Boundary, or boundary does not start
on a new line
at
com.sun.xml.internal.messaging.saaj.packaging.mime.internet.BMMimeMultipart.getNextPart(BMMimeMultipart.java:238)
at
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:429)

The exception does not occur in java 1.5 using a 4 year old version of
the saaj jars. With both java 1.6 and the latest saaj the attachment on
the client side is dropped and the the server code fails because the
message separators don't exist. Using the old saaj on the client and the
new saaj on the server works (on java 1.5).

Below are dumps of the http headers, soap message, and exception. Note
that the 1.5/old saaj version transmits the attachment as
multipart/related with separators. 1.6 transmits with a
multipart/related header but does not transmit the SOAP message as
multi-part.

I hope someone has an idea what may have changed between early saaj and
the java 1.6 implementation that would prevent the transmission of an
attachment - and how to get this working on java 1.6.

I'm willing to send code snippets but they are fairly standard. The code
is the same for both the successful and failed versions.

Any help would be terrific. This has become a deal breaker for migrating
to java 1.6.

Thanks
David Loy
*********************************************************

Java 1.5 with old saaj:

Http headers:
***content-type=multipart/related; type="text/xml";
boundary=1440568.1223392493425.JavaMail.dloy.CDL-dloy-1
***content-length=12168
***soapaction=""
***cache-control=no-cache
***pragma=no-cache
***user-agent=Java/1.5.0_04
***host=localhost:8084
***accept=text/html
***accept=image/gif
***accept=image/jpeg
***accept=*; q=.2
***accept=*/*; q=.2
***connection=keep-alive

---------------------
SOAP Message:

--1440568.1223392493425.JavaMail.dloy.CDL-dloy-1
Content-Type: text/xml

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header>
<Content-ID
xmlns="http://schemas.cdlib.org/ingest-api">AddVersion</Content-ID></SOAP-ENV:Header>
<SOAP-ENV:Body><cdl:AddVersion
xmlns:cdl="http://schemas.cdlib.org"><requestType>AddVersion</requestType>
...
</SOAP-ENV:Body></SOAP-ENV:Envelope>
--1440568.1223392493425.JavaMail.dloy.CDL-dloy-1
Content-Type: text/xml
Content-Id: metadata
Content-Location: /dpr/

<?xml version="1.0" encoding="UTF-8"?>
<mets:mets LABEL="Disdéri Stereoscopic Camera,
....
</mets:div>
</mets:structMap>
</mets:mets>
--1440568.1223392493425.JavaMail.dloy.CDL-dloy-1--

*********************************************************

Java 1.6 or latest saaj jars on 1.5 and 1.6

Http headers:
***accept=text/xml
***accept=text/html
***accept=image/gif
***accept=image/jpeg
***accept=*; q=.2
***accept=*/*; q=.2
***content-type=multipart/related; type="text/xml";
boundary="----=_Part_0_12572266.1223416939416"
***content-length=1107
***cache-control=no-cache
***pragma=no-cache
***user-agent=Java/1.6.0
***host=localhost:8084
***connection=keep-alive
---------------------
SOAP Message (note: not multipart):

<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"><SOAP-ENV:Header>
<Content-ID
xmlns="http://schemas.cdlib.org/ingest-api">AddVersion</Content-ID></SOAP-ENV:Header>
<SOAP-ENV:Body><cdl:AddVersion
xmlns:cdl="http://schemas.cdlib.org"><requestType>AddVersion</requestType>
...
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

---------------------
EXCEPTION:
Tue Oct 07 15:02:19 PDT 2008 ** (00) [IngestService] IngestService:
Encountered error during handling of the request:
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to
internalize messageTrace:
com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl: Unable to
internalize message
at
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:475)
at
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.<init>(MessageImpl.java:278)
at
com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl.<init>(Message1_1Impl.java:68)
at
com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl.createMessage(SOAPMessageFactory1_1Impl.java:62)
at org.cdlib.framework.service.SOAPService.doPost(SOAPService.java:129)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.Exception: Missing Start Boundary, or boundary does
not start on a new line
at
com.sun.xml.internal.messaging.saaj.packaging.mime.internet.BMMimeMultipart.getNextPart(BMMimeMultipart.java:238)
at
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:429)
... 18 more

CAUSE:

java.lang.Exception: Missing Start Boundary, or boundary does not start
on a new line
at
com.sun.xml.internal.messaging.saaj.packaging.mime.internet.BMMimeMultipart.getNextPart(BMMimeMultipart.java:238)
at
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.init(MessageImpl.java:429)
at
com.sun.xml.internal.messaging.saaj.soap.MessageImpl.<init>(MessageImpl.java:278)
at
com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl.<init>(Message1_1Impl.java:68)
at
com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl.createMessage(SOAPMessageFactory1_1Impl.java:62)
at org.cdlib.framework.service.SOAPService.doPost(SOAPService.java:129)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)