<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<title>Apache TomEE</title>
	<meta name="description"
		  content="Apache TomEE is a lightweight, yet powerful, JavaEE Application server with feature rich tooling." />
	<meta name="keywords" content="tomee,asf,apache,javaee,jee,shade,embedded,test,junit,applicationcomposer,maven,arquillian" />
	<meta name="author" content="Luka Cvetinovic for Codrops" />
	<link rel="icon" href="../favicon.ico">
	<link rel="icon"  type="image/png" href="../favicon.png">
	<meta name="msapplication-TileColor" content="#80287a">
	<meta name="theme-color" content="#80287a">
	<link rel="stylesheet" type="text/css" href="../css/normalize.css">
	<link rel="stylesheet" type="text/css" href="../css/bootstrap.css">
	<link rel="stylesheet" type="text/css" href="../css/owl.css">
	<link rel="stylesheet" type="text/css" href="../css/animate.css">
	<link rel="stylesheet" type="text/css" href="../fonts/font-awesome-4.1.0/css/font-awesome.min.css">
	<link rel="stylesheet" type="text/css" href="../fonts/eleganticons/et-icons.css">
	<link rel="stylesheet" type="text/css" href="../css/jqtree.css">
	<link rel="stylesheet" type="text/css" href="../css/idea.css">
	<link rel="stylesheet" type="text/css" href="../css/cardio.css">

	<script type="text/javascript">

      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-2717626-1']);
      _gaq.push(['_setDomainName', 'apache.org']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
</head>

<body>
    <div class="preloader">
		<img src="../img/loader.gif" alt="Preloader image">
	</div>
	    <nav class="navbar">
		<div class="container">
			<!-- Brand and toggle get grouped for better mobile display -->
			<div class="navbar-header">
				<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
					<span class="sr-only">Toggle navigation</span>
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
					<span class="icon-bar"></span>
				</button>
				<a class="navbar-brand" href="/">
				    <span>

				    
                        <img src="../img/logo-active.png">
                    

                    </span>
				    Apache TomEE
                </a>
			</div>
			<!-- Collect the nav links, forms, and other content for toggling -->
			<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
				<ul class="nav navbar-nav navbar-right main-nav">
					<li><a href="../docs.html">Documentation</a></li>
					<li><a href="../examples/index.html">Examples</a></li>
					<li><a href="../community/index.html">Community</a></li>
					<li><a href="../security/index.html">Security</a></li>
					<li><a href="../download-ng.html">Downloads</a></li>
				</ul>
			</div>
			<!-- /.navbar-collapse -->
		</div>
		<!-- /.container-fluid -->
	</nav>


    <div id="main-block" class="container section-padded">
        <div class="row title">
            <div class='page-header'>
              
              <div class='btn-toolbar pull-right' style="z-index: 2000;">
                <div class='btn-group'>
                    <a class="btn" href="../examples/webservice-holder.pdf"><i class="fa fa-file-pdf-o"></i> Download as PDF</a>
                </div>
              </div>
              
              <h2>@WebService OUT params via javax.xml.ws.Holder</h2>
            </div>
        </div>
        <div class="row">
            
            <div class="col-md-12">
                <div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Example webservice-holder can be browsed at <a href="https://github.com/apache/tomee/tree/master/examples/webservice-holder" class="bare">https://github.com/apache/tomee/tree/master/examples/webservice-holder</a></p>
</div>
<div class="paragraph">
<p>With SOAP it is possible to return multiple values in a single request.  This is impossible in Java as a method can only return one object.</p>
</div>
<div class="paragraph">
<p>JAX-WS solves this problem with the concept of Holders.  A <code>javax.xml.ws.Holder</code> is a simple wrapper object that can be passed into the <code>@WebService</code> method as a parameter.  The application sets the value of the holder during the request and the server will send the value back as an OUT parameter.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_using_webparam_and_javax_xml_ws_holder">Using @WebParam and javax.xml.ws.Holder</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The <code>@WebParam</code> annotation allows us to declare the <code>sum</code> and <code>multiply</code> Holders as <code>WebParam.Mode.OUT</code> parameters.  As mentioned, these holders are simply empty buckets the application can fill in with data to have sent to the client.  The server will pass them in uninitialized.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-java" data-lang="java">@Stateless
@WebService(
        portName = "CalculatorPort",
        serviceName = "CalculatorService",
        targetNamespace = "http://superbiz.org/wsdl",
        endpointInterface = "org.superbiz.ws.out.CalculatorWs")
public class Calculator implements CalculatorWs {

    public void sumAndMultiply(int a, int b,
                               @WebParam(name = "sum", mode = WebParam.Mode.OUT) Holder&lt;Integer&gt; sum,
                               @WebParam(name = "multiply", mode = WebParam.Mode.OUT) Holder&lt;Integer&gt; multiply) {
        sum.value = a + b;
        multiply.value = a * b;
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>If the Holders were specified as <code>WebParam.Mode.INOUT</code> params, then the client could use them to send data and the application as well.  The <code>Holder</code> instances would then be initialized with the data from the client request.  The application could check the data before eventually overriting it with the response values.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_the_wsdl">The WSDL</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The above JAX-WS <code>@WebService</code> component results in the folliwing WSDL that will be created automatically.  Note the <code>sumAndMultiplyResponse</code> complext type returns two elements.  These match the <code>@WebParam</code> declarations and our two <code>Holder&lt;Integer&gt;</code> params.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
                  name="CalculatorService"
                  targetNamespace="http://superbiz.org/wsdl"
                  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
                  xmlns:tns="http://superbiz.org/wsdl"
                  xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
  &lt;wsdl:types&gt;
    &lt;xsd:schema attributeFormDefault="unqualified" elementFormDefault="unqualified"
                targetNamespace="http://superbiz.org/wsdl"
                xmlns:tns="http://superbiz.org/wsdl"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
      &lt;xsd:element name="sumAndMultiply" type="tns:sumAndMultiply"/&gt;
      &lt;xsd:complexType name="sumAndMultiply"&gt;
        &lt;xsd:sequence&gt;
          &lt;xsd:element name="arg0" type="xsd:int"/&gt;
          &lt;xsd:element name="arg1" type="xsd:int"/&gt;
        &lt;/xsd:sequence&gt;
      &lt;/xsd:complexType&gt;
      &lt;xsd:element name="sumAndMultiplyResponse" type="tns:sumAndMultiplyResponse"/&gt;
      &lt;xsd:complexType name="sumAndMultiplyResponse"&gt;
        &lt;xsd:sequence&gt;
          &lt;xsd:element minOccurs="0" name="sum" type="xsd:int"/&gt;
          &lt;xsd:element minOccurs="0" name="multiply" type="xsd:int"/&gt;
        &lt;/xsd:sequence&gt;
      &lt;/xsd:complexType&gt;
    &lt;/xsd:schema&gt;
  &lt;/wsdl:types&gt;
  &lt;wsdl:message name="sumAndMultiplyResponse"&gt;
    &lt;wsdl:part element="tns:sumAndMultiplyResponse" name="parameters"/&gt;
  &lt;/wsdl:message&gt;
  &lt;wsdl:message name="sumAndMultiply"&gt;
    &lt;wsdl:part element="tns:sumAndMultiply" name="parameters"/&gt;
  &lt;/wsdl:message&gt;
  &lt;wsdl:portType name="CalculatorWs"&gt;
    &lt;wsdl:operation name="sumAndMultiply"&gt;
      &lt;wsdl:input message="tns:sumAndMultiply" name="sumAndMultiply"/&gt;
      &lt;wsdl:output message="tns:sumAndMultiplyResponse" name="sumAndMultiplyResponse"/&gt;
    &lt;/wsdl:operation&gt;
  &lt;/wsdl:portType&gt;
  &lt;wsdl:binding name="CalculatorServiceSoapBinding" type="tns:CalculatorWs"&gt;
    &lt;soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/&gt;
    &lt;wsdl:operation name="sumAndMultiply"&gt;
      &lt;soap:operation soapAction="" style="document"/&gt;
      &lt;wsdl:input name="sumAndMultiply"&gt;
        &lt;soap:body use="literal"/&gt;
      &lt;/wsdl:input&gt;
      &lt;wsdl:output name="sumAndMultiplyResponse"&gt;
        &lt;soap:body use="literal"/&gt;
      &lt;/wsdl:output&gt;
    &lt;/wsdl:operation&gt;
  &lt;/wsdl:binding&gt;
  &lt;wsdl:service name="CalculatorService"&gt;
    &lt;wsdl:port binding="tns:CalculatorServiceSoapBinding" name="CalculatorPort"&gt;
      &lt;soap:address location="http://127.0.0.1:4204/Calculator?wsdl"/&gt;
    &lt;/wsdl:port&gt;
  &lt;/wsdl:service&gt;
&lt;/wsdl:definitions&gt;</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_testing_the_out_params">Testing the OUT params</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Here we see a JAX-WS client executing the <code>sumAndMultiply</code> operation.  Two empty <code>Holder</code> instances are created and passed in as parameters.  The data from the <code>sumAndMultiplyResponse</code> is placed in the <code>Holder</code> instances and is then available to the client after the operation completes.</p>
</div>
<div class="paragraph">
<p>The holders themselves are not actually sent in the request unless they are configured as INOUT params via WebParam.Mode.INOUT on <code>@WebParam</code></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-java" data-lang="java">import org.junit.BeforeClass;
import org.junit.Test;

import javax.ejb.embeddable.EJBContainer;
import javax.xml.namespace.QName;
import javax.xml.ws.Holder;
import javax.xml.ws.Service;
import java.net.URL;
import java.util.Properties;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

public class CalculatorTest {

    @BeforeClass
    public static void setUp() throws Exception {
        Properties properties = new Properties();
        properties.setProperty("openejb.embedded.remotable", "true");
        //properties.setProperty("httpejbd.print", "true");
        //properties.setProperty("httpejbd.indent.xml", "true");
        EJBContainer.createEJBContainer(properties);
    }

    @Test
    public void outParams() throws Exception {
        final Service calculatorService = Service.create(
                new URL("http://127.0.0.1:4204/Calculator?wsdl"),
                new QName("http://superbiz.org/wsdl", "CalculatorService"));

        assertNotNull(calculatorService);

        final CalculatorWs calculator = calculatorService.getPort(CalculatorWs.class);

        final Holder&lt;Integer&gt; sum = new Holder&lt;Integer&gt;();
        final Holder&lt;Integer&gt; multiply = new Holder&lt;Integer&gt;();

        calculator.sumAndMultiply(4, 6, sum, multiply);

        assertEquals(10, (int) sum.value);
        assertEquals(24, (int) multiply.value);
    }
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_inspecting_the_messages">Inspecting the messages</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The above execution results in the following SOAP message.</p>
</div>
<div class="sect2">
<h3 id="_soap_sumandmultiply_small_client_request_small">SOAP sumAndMultiply &lt;small&gt;client request&lt;/small&gt;</h3>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;
  &lt;soap:Body&gt;
    &lt;ns1:sumAndMultiply xmlns:ns1="http://superbiz.org/wsdl"&gt;
      &lt;arg0&gt;4&lt;/arg0&gt;
      &lt;arg1&gt;6&lt;/arg1&gt;
    &lt;/ns1:sumAndMultiply&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_soap_sumandmultiplyresponse_small_server_response_small">SOAP sumAndMultiplyResponse &lt;small&gt;server response&lt;/small&gt;</h3>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code class="language-xml" data-lang="xml">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"&gt;
  &lt;soap:Body&gt;
    &lt;ns1:sumAndMultiplyResponse xmlns:ns1="http://superbiz.org/wsdl"&gt;
      &lt;sum&gt;10&lt;/sum&gt;
      &lt;multiply&gt;24&lt;/multiply&gt;
    &lt;/ns1:sumAndMultiplyResponse&gt;
  &lt;/soap:Body&gt;
&lt;/soap:Envelope&gt;</code></pre>
</div>
</div>
</div>
</div>
</div>
            </div>
            
        </div>
    </div>
<footer>
		<div class="container">
			<div class="row">
				<div class="col-sm-6 text-center-mobile">
					<h3 class="white">Apache TomEE the little great server.</h3>
					<h5 class="light regular light-white">"A good application in a good server"</h5>
					<ul class="social-footer">
						<li><a href="https://fr-fr.facebook.com/ApacheTomEE/"><i class="fa fa-facebook"></i></a></li>
						<li><a href="https://twitter.com/apachetomee"><i class="fa fa-twitter"></i></a></li>
						<li><a href="https://plus.google.com/communities/105208241852045684449"><i class="fa fa-google-plus"></i></a></li>
					</ul>
				</div>
				<div class="col-sm-6 text-center-mobile">
					<div class="row opening-hours">
						<div class="col-sm-3 text-center-mobile">
							<h5><a href="../documentation.html" class="white">Documentation</a></h5>
							<ul class="list-unstyled">
								<li><a href="../admin/configuration/index.html" class="regular light-white">How to configure</a></li>
								<li><a href="../admin/directory-structure.html" class="regular light-white">Dir. Structure</a></li>
								<li><a href="../developer/testing/index.html" class="regular light-white">Testing</a></li>
								<li><a href="../admin/cluster/index.html" class="regular light-white">Clustering</a></li>
							</ul>
						</div>
						<div class="col-sm-3 text-center-mobile">
							<h5><a href="../examples.html" class="white">Examples</a></h5>
							<ul class="list-unstyled">
								<li><a href="../examples/simple-cdi-interceptor.html" class="regular light-white">CDI Interceptor</a></li>
								<li><a href="../examples/rest-cdi.html" class="regular light-white">REST with CDI</a></li>
								<li><a href="../examples/ejb-examples.html" class="regular light-white">EJB</a></li>
								<li><a href="../examples/jsf-managedBean-and-ejb.html" class="regular light-white">JSF</a></li>
							</ul>
						</div>
						<div class="col-sm-3 text-center-mobile">
							<h5><a href="../community/index.html" class="white">Community</a></h5>
							<ul class="list-unstyled">
								<li><a href="../community/contributors.html" class="regular light-white">Contributors</a></li>
								<li><a href="../community/social.html" class="regular light-white">Social</a></li>
								<li><a href="../community/sources.html" class="regular light-white">Sources</a></li>
							</ul>
						</div>
						<div class="col-sm-3 text-center-mobile">
							<h5><a href="../security/index.html" class="white">Security</a></h5>
							<ul class="list-unstyled">
								<li><a href="http://apache.org/security" target="_blank" class="regular light-white">Apache Security</a></li>
								<li><a href="http://apache.org/security/projects.html" target="_blank" class="regular light-white">Security Projects</a></li>
								<li><a href="http://cve.mitre.org" target="_blank" class="regular light-white">CVE</a></li>
							</ul>
						</div>
					</div>
				</div>
			</div>
			<div class="row bottom-footer text-center-mobile">
				<div class="col-sm-12 light-white">
					<p>Copyright &copy; 1999-2016 The Apache Software Foundation, Licensed under the Apache License, Version 2.0. Apache TomEE, TomEE, Apache, the Apache feather logo, and the Apache TomEE project logo are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
				</div>
			</div>
		</div>
	</footer>
	<!-- Holder for mobile navigation -->
	<div class="mobile-nav">
        <ul>
          <li><a hef="../admin/index.html">Administrators</a>
          <li><a hef="../developer/index.html">Developers</a>
          <li><a hef="../advanced/index.html">Advanced</a>
          <li><a hef="../community/index.html">Community</a>
        </ul>
		<a href="#" class="close-link"><i class="arrow_up"></i></a>
	</div>
	<!-- Scripts -->
	<script src="../js/jquery-1.11.1.min.js"></script>
	<script src="../js/owl.carousel.min.js"></script>
	<script src="../js/bootstrap.min.js"></script>
	<script src="../js/wow.min.js"></script>
	<script src="../js/typewriter.js"></script>
	<script src="../js/jquery.onepagenav.js"></script>
	<script src="../js/tree.jquery.js"></script>
	<script src="../js/highlight.pack.js"></script>
    <script src="../js/main.js"></script>
		</body>

</html>

