JAX-WS Binary Data Passing: using base64binary
Instead of passing binary data as an attachment to web services using either SOAP with Attachment or MTOM, in this blog, I use base64binary to pass in the SOAP body. For the MTOM (preferred way of sending binary data) see the next blog JAX-WS Binary Data passing: using MTOM.
Web service as follows:
package org.ojitha.wsex4; import java.awt.Image; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.jws.WebMethod; import javax.jws.WebService; import javax.xml.ws.Endpoint; @WebService(serviceName="ImageService") public class ImageService { @WebMethod public Image getImage(String imgName) throws IOException{ return ImageIO.read(new File(imgName)); } public static void main(String[] args){ Endpoint.publish("http://127.0.0.1:9876/image", new ImageService()); } }
The client program is,
package org.ojitha.wsex4.client; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; import javax.imageio.ImageIO; public class ImageClient { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { ImageService_Service service = new ImageService_Service(); ImageService image = service.getImageServicePort(); try { byte[] bytes =image.getImage("rainbow.jpg"); InputStream in = new ByteArrayInputStream(bytes); BufferedImage buffferedImage = ImageIO.read(in); ImageIO.write(buffferedImage, "jpg", new File("test.jpg")); } catch (IOException_Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
if you trace the SOAP response, the image was sent in the body instead an attachment. Source code available to download.
Comments
Post a Comment
commented your blog