You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by john smith <gr...@yahoo.com> on 2004/12/12 03:53:08 UTC

Re: returning multiple parameters - including datahandler

Thanks Vy,
 
I tried this and it worked on my win enviroment. Delpoying on linux I get the following error.
 
$ java batchEx.ClientWSDD3 -lhttp://localhost:8082/axis/services/BatchService test
Calling Service
- Exception:
java.lang.RuntimeException: javax.mail.MessagingException: Error in input stream;
  nested exception is:
        java.io.IOException: End of stream encountered before final boundary marker.AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: javax.mail.MessagingException: Error in input stream;
  nested exception is:
        java.io.IOException: End of stream encountered before final boundary marker.
 faultActor: 
 faultNode: 
 faultDetail: 
        {http://xml.apache.org/axis/}stackTrace: javax.mail.MessagingException: Error in input stream;
  nested exception is:
        java.io.IOException: End of stream encountered before final boundary marker.
        at javax.mail.internet.InternetHeaders.load(InternetHeaders.java:143)
        at javax.mail.internet.InternetHeaders.&lt;init&gt;(InternetHeaders.java:93)
        at org.apache.axis.attachments.MultiPartRelatedInputStream.readTillFound(MultiPartRelatedInputStream.java:545)
        at org.apache.axis.attachments.MultiPartRelatedInputStream.readAll(MultiPartRelatedInputStream.java:472)
        at org.apache.axis.attachments.MultiPartRelatedInputStream.getAttachments(MultiPartRelatedInputStream.java:485)
        at org.apache.axis.attachments.AttachmentsImpl.mergeinAttachments(AttachmentsImpl.java:190)
        at org.apache.axis.attachments.AttachmentsImpl.getAttachmentByReference(AttachmentsImpl.java:349)
        at org.apache.axis.encoding.DeserializationContextImpl.getObjectByRef(DeserializationContextImpl.java:555)
        at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:386)
        at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:976)
        at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
        at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:722)
        at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:404)
        at org.apache.axis.encoding.ser.BeanDeserializer.startElement(BeanDeserializer.java:165)
        at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:976)
        at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
        at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:722)
        at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)
        at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
        at org.apache.axis.client.Call.invoke(Call.java:2272)
        at org.apache.axis.client.Call.invoke(Call.java:2171)
        at org.apache.axis.client.Call.invoke(Call.java:1691)
        at batchEx.ClientWSDD3.main(ClientWSDD3.java:111)
 
 
javax.mail.MessagingException: Error in input stream;
  nested exception is:
        java.io.IOException: End of stream encountered before final boundary marker.
        at org.apache.axis.AxisFault.makeFault(AxisFault.java:129)
        at org.apache.axis.attachments.MultiPartRelatedInputStream.readTillFound(MultiPartRelatedInputStream.java:655)
        at org.apache.axis.attachments.MultiPartRelatedInputStream.readAll(MultiPartRelatedInputStream.java:472)
        at org.apache.axis.attachments.MultiPartRelatedInputStream.getAttachments(MultiPartRelatedInputStream.java:485)
        at org.apache.axis.attachments.AttachmentsImpl.mergeinAttachments(AttachmentsImpl.java:190)
        at org.apache.axis.attachments.AttachmentsImpl.getAttachmentByReference(AttachmentsImpl.java:349)
        at org.apache.axis.encoding.DeserializationContextImpl.getObjectByRef(DeserializationContextImpl.java:555)
        at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:386)
        at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:976)
        at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
        at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:722)
        at org.apache.axis.encoding.DeserializerImpl.startElement(DeserializerImpl.java:404)
        at org.apache.axis.encoding.ser.BeanDeserializer.startElement(BeanDeserializer.java:165)
        at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:976)
        at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:198)
        at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:722)
        at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:233)
        at org.apache.axis.message.RPCElement.getParams(RPCElement.java:347)
        at org.apache.axis.client.Call.invoke(Call.java:2272)
        at org.apache.axis.client.Call.invoke(Call.java:2171)
        at org.apache.axis.client.Call.invoke(Call.java:1691)
        at batchEx.ClientWSDD3.main(ClientWSDD3.java:111)
Caused by: javax.mail.MessagingException: Error in input stream;
  nested exception is:
        java.io.IOException: End of stream encountered before final boundary marker.
        at javax.mail.internet.InternetHeaders.load(InternetHeaders.java:143)
        at javax.mail.internet.InternetHeaders.<init>(InternetHeaders.java:93)
        at org.apache.axis.attachments.MultiPartRelatedInputStream.readTillFound(MultiPartRelatedInputStream.java:545)
        ... 20 more
 
My service looks like:
public String serviceMethod(String arg)
public DataHandler batchMethod(String arg)
                        URL url = new URL("file:///file.txt");
                        System.out.println("setting dh");
                        DataHandler dh = new DataHandler(url);
                        return dh;
public MyReturnedStuffs obMethod(String arg)
                       MyReturnedStuffs mrs = new MyReturnedStuffs();
                        mrs.setFilename("file.txt");
                        URL url = new URL("file:///file.txt");
                        System.out.println("setting file");
                        mrs.setFile(new DataHandler(url));
                        System.out.println("returning mrs");
                        return mrs;
 
When I call obMethod or batchMethod I get the error. ServiceMethod works.
 
Client for obMethod
QName qnameAttachment = new QName("urn:BatchService", "MyReturnedStuffs");
call.registerTypeMapping(MyReturnedStuffs.class,
                                    qnameAttachment,
                                    new BeanSerializerFactory(MyReturnedStuffs.class, qnameAttachment),
                                    new BeanDeserializerFactory(MyReturnedStuffs.class, qnameAttachment));
call.setReturnType(qnameAttachment);
try {
     MyReturnedStuffs ret =  (MyReturnedStuffs) call.invoke( new Object [] { textToSend } );

 
I have the 
same Mail.jar and Acrivation.jar , 
Axis 1.1, 
Tomcat ( 4 on linux 5 on win)  
Is this due to some classpath/env error or is it something else that anyone can identify?
 
Any help would be appreciated. Thanks in Advance.


Vy Ho <st...@drexel.edu> wrote:
Can you wrap all things that you want to return in a class, then call 
that instead:

class MyReturnedStuffs{
int status;
String whatever;
DataHandler data;
}

public MyReturnedStuffs doit(...){

}

		
---------------------------------
Do you Yahoo!?
 Jazz up your holiday email with celebrity designs. Learn more.

Re: returning multiple parameters - including datahandler

Posted by V D <st...@drexel.edu>.
I wonder if this has something to some buffered flag.  Did you try to 
send some small text file attachment?  If it works, then it could be the 
size of the file you send (Tomcat could limit the size that you can post 
to it, I think you can change this limit somewhere in the 
configuration).  Don't jump into conclusion yet.  Use TcpMon, and send a 
small text attachment, and see what's going through the wire.  I am not 
sure if this has anything to do with it or not, but try change the URL 
parameter into a FileDataSource and pass that into the DataHandler instead.