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 Thilina Gunarathne <cs...@gmail.com> on 2006/10/29 07:58:55 UTC

Re: MTOM: sending binary data from WebService

Hi Moiz,

I can see three issues...

1. You do not have MTOM enabled for your service.. You can do that
either by switching it "on in the axis2.xml or in the service.xml for
a per service/operation based enabling..

2. It is not mandatory to have MTOM enabled. Response needs to decoded
well even if it is base654Encoded... But for that you need to add the
following line to your code.

>    OMText binaryNode = (OMText) imageEle.getFirstOMChild ();

      binaryNode.setBinary(true);

> //   Extracting the data and saving
>          DataHandler actualDH;
>          actualDH = (DataHandler) binaryNode.getDataHandler(); //here
> RuntimeException is throwing

3. I don't understand why ADB generate OMElements for the image
elements.. It should data bound that too... Are you using the latest
nightly builds...


Thanks
Thilina


On 10/23/06, moiz ghori <mo...@gmail.com> wrote:
> Hi, I am developing a small BookWebService. In this service I have an
> operation which returns Array Of Book(i.e Book[]) type. It is working fine
> but I want to return an Image of each book with ISBN,Title, Published Date
> etc.
> Please help me out, I have already spent lot of time to figure it out but it
> didnt work.
>
>
>
> Console Output:
>
> Title Ultimate Axis2
> Price 19.0
> Published Sun Oct 22 00:00:00 EDT 2006
> ISBN ISBN-123
> java.lang.RuntimeException: ContentID is null
>  at
> org.apache.axiom.om.impl.llom.OMTextImpl.getDataHandler(OMTextImpl.java
> :339)
>  at
> ClientRunner.BookServiceADBClient.main(BookServiceADBClient.java:79)
>
>
>
>
> Here is the code of schema which I am using to generate code (I am using
> ADB)
>
>  <xsd:complexType name="Book">
>         <xsd:sequence>
>           <xsd:element minOccurs="1" maxOccurs="1"
>                        name="publishedDate" type="xsd:date" />
>           <xsd:element minOccurs="1" maxOccurs="1"
>                        name="isbn" type="xsd:string" />
>           <xsd:element minOccurs="1" maxOccurs="1"
>                        name="title" type="xsd:string" />
>           <xsd:element minOccurs="1" maxOccurs="1"
>                        name="price" type="xsd:float" />
>     <xsd:element minOccurs="0" maxOccurs="1"
>                        name="bookImage" type="xsd:imageEle" />
>
>         </xsd:sequence>
>       </xsd:complexType>
>
>
>             <xsd:element name="imageEle">
>     <xsd:complexType>
>      <xsd:sequence>
>       <xsd:element name="meta-info" type="xsd:string"/>
>        <xsd:element name="image-attachment" type="xsd:base64Binary"/>
>      </xsd:sequence>
>     </xsd:complexType>
>    </xsd:element>
>
>
>
>
>
> Skeleton Code(here i am sending only one book right now just to make image
> sending work):
>  FindBooksResponse response = new FindBooksResponse();
>
>          Book book1 =new Book();
>          book1.setIsbn("ISBN-123");
>          book1.setPrice(19);
>          book1.setPublishedDate (new Date());
>          book1.setTitle("Ultimate Axis2");
>
>         OMFactory fac = OMAbstractFactory.getOMFactory();
>         OMNamespace omNs = fac.createOMNamespace("
> http://www.example.com/OnlineBooksADBImage/xsd",
> "bookImage");
>         OMElement imageEle = fac.createOMElement("bookImage", omNs);
>         Image image;
>         String inputImageFileName = "C:\\axis.jpg";
>         image = new ImageIO().loadImage(new
> FileInputStream(inputImageFileName));
>
>         ImageDataSource dataSource = new
> ImageDataSource("axisImage.jpg",image);
>         DataHandler dataHandler = new DataHandler(dataSource);
>
>
>         //create an OMText node with the above DataHandler and set optimized
> to true
>         OMText textData = fac.createOMText(dataHandler, true);
>
>         imageEle.addChild(textData);
>
>          book1.setBookImage(imageEle);
>
> //         Book book2 =new Book();
> //         book2.setIsbn("ISBN-9089");
> //         book2.setPrice(40);
> //         book2.setPublishedDate(new Date());
>
> //         book2.setTitle("Professional Axis2");
>
>              response.addBook(book1);
>            // response.addBook(book2);
>             return response;
>
>
>
>
>
>
> Client Code :
>
> OnlineBooksADBImageServiceStub stub = new
> OnlineBooksADBImageServiceStub();
>
>   Options options =stub._getServiceClient().getOptions();
>
> options.setProperty(org.apache.axis2.Constants.Configuration.ENABLE_MTOM
> ,
>      Boolean.TRUE);
>
>   FindBooksRequest request = new FindBooksRequest();
>   request.setIsbn("123");
>     FindBooksResponse response= stub.FindBooks(request);
>   //System.out.println("RESPONSE "+ response.);
>   Book[] books = response.getBook();
>
>   for (int i = 0; i < books.length; i++) {
>    System.out.println("Title "+books[i].getTitle() );
>    System.out.println("Price "+books[i].getPrice() );
>    System.out.println ("Published "+books[i].getPublishedDate() );
>    System.out.println("ISBN "+books[i].getIsbn() );
>    OMElement imageEle = books[i].getBookImage();
>    OMText binaryNode = (OMText) imageEle.getFirstOMChild ();
>
> //   Extracting the data and saving
>          DataHandler actualDH;
>          actualDH = (DataHandler) binaryNode.getDataHandler(); //here
> RuntimeException is throwing
>          Image actualObject = new ImageIO().loadImage(
> actualDH.getDataSource().getInputStream());
>          FileOutputStream imageOutStream = new
> FileOutputStream("C:\\axisReturns.jpg");
>          new ImageIO().saveImage("image/jpeg",
> actualObject, imageOutStream);
>
>
>
>
> SOAP RESPONSE:
>
>
> --MIMEBoundaryurn_uuid_3A1C4DDA46DD411ACD11615456368283
> content-type:application/xop+xml; charset=UTF-8;
> type="text/xml";
> content-transfer-encoding:binary
> content-id:<
> 0.urn:uuid:3A1C4DDA46DD411ACD11615456368284@apache.org>
>
> <?xml version='1.0' encoding='UTF-8'?>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
> <soapenv:Header />
> <soapenv:Body>
> <ns1:FindBooksResponse
> xmlns:ns1="http://www.example.com/OnlineBooksADBImage/xsd">
> <ns1:book>
> <ns1:publishedDate>2006-10-22</ns1:publishedDate>
> <ns1:isbn>ISBN-123</ns1:isbn>
> <ns1:title>Ultimate Axis2</ns1:title>
> <ns1:price>19.0</ns1:price>
> <ns1:bookImage>
> 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
> </ns1:bookImage>
> </ns1:book>
> </ns1:FindBooksResponse>
> </soapenv:Body>
> </soapenv:Envelope>
> --MIMEBoundaryurn_uuid_3A1C4DDA46DD411ACD11615456368283--
>
>
>
>


-- 
http://webservices.apache.org/~thilina/
http://thilinag.blogspot.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-user-help@ws.apache.org