29.3. The Web Services Client

An EJB or a servlet that wants to use Web Services (as a client) must declare a dependency on the Web Service with a service-ref element (same principle as for all *-ref elements).

29.3.1. The service-ref Element

The service-ref element declares a reference to a Web Service used by a J2EE component in the web, EJB, and client Deployment Descriptor.

The component uses a logical name called a service-ref-name to look up the service instance. Thus, any component that performs a lookup on a Web Service must declare a dependency (the service-ref element) in the standard deployment descriptor (web.xml application-client.xml, or ejb-jar.xml).

Example of service-ref:

<service-ref>
  <!-- (Optional) A Web Services description that can be used 
    in administration tool. -->
  <description>Sample WebService Client</description>

  <!-- (Optional) The WebService reference name 
    (used in Administration tools) -->
  <display-name>WebService Client 1</display-name>

  <!-- (Optional) An icon for this WebService. -->
    <icon> <!-- ... --> </icon>

  <!-- The logical name for the reference that is used 
    in the client source code. It is recommended, but not required,
    that the name begin with 'services/' -->
  <service-ref-name>services/myService</service-ref-name>

  <!-- Defines the class name of the JAX-RPC Service interface 
    that the client depends on. In most cases, the value 
    will be javax.xml.rpc.Service, but a generated specific Service
    Interface class may be specified (requires WSDL knowledge and 
    so on for the wsdl-file element). -->
  <service-interface>javax.xml.rpc.Service</service-interface>

  <!-- (Optional) Contains the location (relative to the root of 
    the module) of the Web Service WSDL description.
      -needs to be in the wsdl directory
      -required if generated interface and sei are declared. -->
  <wsdl-file>WEB-INF/wsdl/stockQuote.wsdl</wsdl-file>

  <!-- (Optional) A file specifying the correlation of the WSDL 
    definition to the interfaces (Service Endpoint Interface, 
    Service Interface). 
      -required if generated interface and sei (Service Endpoint 
       Interface) are declared.-->
  <jaxrpc-mapping-file>WEB-INF/myMapping.xml</jaxrpc-mapping-file>
  
  <!-- (Optional) Declares the specific WSDL service element 
    that is being referred to. It is not specified if no wsdl-file
    is declared or if WSDL contains only 1 service element.
    A service-qname is composed by a namespaceURI and a localpart.
    You must define it if more than 1 service is declared 
    in the WSDL. -->
  <service-qname>
    <namespaceURI>http://beans.ws.objectweb.org</namespaceURI>
    <localpart>MyWSDLService</localpart>
  </service-qname>

  <!-- Declares a client dependency on the container to resolving 
    a Service Endpoint Interface to a WSDL port. It optionally
    associates the Service Endpoint Interface with a particular
    port-component. -->
  <port-component-ref>
    <service-endpoint-interface>
       org.objectweb.ws.beans.ssbendpoint.MyService
    </service-endpoint-interface>
    <!-- Define a link to a port component declared in another unit 
    of the application -->
    <port-component-link>
      ejb_module.jar#PortComponentName
    </port-component-link>
  </port-component-ref>
  
  
  <!--A list of Handler to use for this service-ref  -->
  <handler>
    
    <!-- Must be unique within the module. -->
    <handler-name>MyHandler</handler-name>
    
    <handler-class>org.objectweb.ws.handlers.myHandler</handler-class>
    
    <!-- A list of init-param (couple name/value) for Handler 
      initialization -->
    <init-param>
      
      <param-name>param_1</param-name>
      <param-value>value_1</param-value>
    </init-param>
    
    <!-- A list of QName specifying the SOAP Headers the handler 
      will work on. 
      -namespace and locapart values must be found inside the WSDL. -->
    <soap-header>
      <namespaceURI>http://ws.objectweb.org</namespaceURI>
      <localpart>MyWSDLHeader</localpart>
    </soap-header>
    
    <!-- A list of SOAP actor definition that the Handler will play 
      as a role. A soap-role is a namespace URI. -->
    <soap-role>http://actor.soap.objectweb.org</soap-role>
    
    <!-- A list of port-name element defines the WSDL port-name
      that a handler should be associated with. If no port-name is
      specified, the handler is assumed to be associated with all ports 
      of the service-ref. -->
    <port-name>myWSDLPort</port-name>
  </handler>
</service-ref>

29.3.2. The jonas-service-ref Element

A jonas-service-ref must be specified for each service-ref declared in the standard Deployment Descriptor. The jonas-service-ref adds JOnAS-specific (and Web Service engine-specific) information to service-ref elements.

Example of jonas-service-ref:

  
<jonas-service-ref>
   <!-- Define the service-ref contained in the component 
     deployment descriptor (web.xml, ejb-jar.xml, or
     application-client.xml) used as a key to associate a 
     service-ref to its corresponding jonas-service-ref-->
   <service-ref-name>services/myService</service-ref-name>
      
   <!-- Define the physical name of the resource. -->
   <jndi-name>webservice_1</jndi-name>
      
   <!-- A list of init-param used for specific configuration of
      the service -->
   <jonas-init-param>
      <param-name>param</param-name>
      <param-value>name</param-value>
   </jonas-init-param>
</jonas-service-ref>