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 <[EMAIL PROTECTED]> 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:[EMAIL PROTECTED]>
<?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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]