Returning multiple values from a web service
By: Emiley J in WebServices Tutorials on 2013-08-15
Although this is quite a common requirement, it could be quite a daunting task for a beginner learning web service. I have seen so many questions in various forums regarding this. For example, one popular question is how to return a HashMap from a web service. In this tutorial, I will keep it very simple. I will just return two values from the webservice instead of one.
The trick is to use javax.xml.ws.Holder and define @WebParam as an output parameter in your definition. An example is below.
import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.xml.ws.Holder; /** * * @author Emiley */ @WebService(serviceName = "TestMultiple") public class TestMultiple { @WebMethod(operationName = "Calculate") public void Calculate(@WebParam(name = "sum", mode = WebParam.Mode.OUT) Holdersum, @WebParam(name = "multiply", mode = WebParam.Mode.OUT) Holder multiply) { sum.value = 4+5; multiply.value = 4*5; } }
When you call this web service, you will get the following output.
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:operationResponse xmlns:ns2="http://java-samples.com/"> <sum>9</sum> <multiply>20</multiply> </ns2:operationResponse> </S:Body> </S:Envelope>
Of course, you can make your web service more useful by adding two parameters to get the values and add them as below
import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.xml.ws.Holder; /** * * @author Emiley */ @WebService(serviceName = "TestMultiple") public class TestMultiple { @WebMethod(operationName = "Calculate") public void Calculate(int x, int y, @WebParam(name = "sum", mode = WebParam.Mode.OUT) Holdersum, @WebParam(name = "multiply", mode = WebParam.Mode.OUT) Holder multiply) { sum.value = x+y; multiply.value = x*y; } }
Add Comment
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
- Your name, rating, website address, town, country, state and comment will be publicly displayed if entered.
- Aside from the data entered into these form fields, other stored data about your comment will include:
- Your IP address (not displayed)
- The time/date of your submission (displayed)
- Your email address will not be shared. It is collected for only two reasons:
- Administrative purposes, should a need to contact you arise.
- To inform you of new comments, should you subscribe to receive notifications.
- A cookie may be set on your computer. This is used to remember your inputs. It will expire by itself.
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
- Although the administrator will attempt to moderate comments, it is impossible for every comment to have been moderated at any given time.
- You acknowledge that all comments express the views and opinions of the original author and not those of the administrator.
- You agree not to post any material which is knowingly false, obscene, hateful, threatening, harassing or invasive of a person's privacy.
- The administrator has the right to edit, move or remove any comment for any reason and without notice.
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
- Data Science
- Android
- React Native
- AJAX
- ASP.net
- C
- C++
- C#
- Cocoa
- Cloud Computing
- HTML5
- Java
- Javascript
- JSF
- JSP
- J2ME
- Java Beans
- EJB
- JDBC
- Linux
- Mac OS X
- iPhone
- MySQL
- Office 365
- Perl
- PHP
- Python
- Ruby
- VB.net
- Hibernate
- Struts
- SAP
- Trends
- Tech Reviews
- WebServices
- XML
- Certification
- Interview
categories
Related Tutorials
Content-Security-Policy: object-src, script-src, base-uri and report-uri
Preventing your PDF files to be displayed inside other website IFrames
Prevent other websites from displaying content from your website in an iframe
Returning multiple values from a web service
Java Webservices using Netbeans and Tomcat
How to Deploy a Java Web Service
Java WebService connected to Database
package javax.jws does not exist
Comments