Añadir parámetros a servicios web

Puede añadir parámetros a servicios web que establezcan propiedades opcionales en una base de datos soportada en la que un servicio web realiza operaciones y propiedades opcionales de las conexiones entre el servicio web y la base de datos. Puede añadir estos parámetros por omisión a los servicios web que se crean dentro de un proyecto de desarrollo de datos o puede añadirlos al desplegar servicios web individuales.

Acerca de esta tarea

Puede pasar información de control o auditoría adicional a servicios web especificando parámetros de servicio web adicionales y, a continuación, pasando valores para dichos parámetros. Los parámetros se especifican en la tabla Parámetros en la página Servicios Web de la ventana Propiedades para el proyecto o en el asistente Desplegar servicio web.

Puede pasar valores a los parámetros adicionales utilizando tres métodos diferentes:
  • Especificar los valores directamente en la tabla Parámetros
  • Especificar los valores en las cabeceras de mensaje SOAP, si las aplicaciones cliente enviarán mensajes SOAP/HTTP a los servicios web
  • Especificar los valores en los parámetros de control HTTP, si las aplicaciones cliente enviarán mensajes tipo REST a los servicios web

Los valores pasados sólo se aplican a la operación que el mensaje solicita. No abarcan más de un mensaje u operación.

Procedimiento

Para añadir parámetros a los servicios web:

  1. Decida cuáles son los parámetros de control que desea añadir y los valores que desea establecer para ellos.
    Parámetros para pasar información de auditoría de cliente de base de datos DB2
    • connection.jcc.clientAccountingInformation
    • connection.jcc.clientUser
    • connection.jcc.clientProgramName
    • connection.jcc.clientWorkstation

    Para obtener descripciones de estos parámetros, vea los enlaces en la sección Información relacionada al final de este tema. Cuando siga un enlace, localice el parámetro buscando la tercera parte de su nombre. Por ejemplo, si el parámetro es connection.jcc.clientUser, localice el parámetro buscando clientUser.

    Parámetros para pasar información de conexión
    connection.stmt.maxRows
    Especifica el número máximo de filas que deben devolverse para un conjunto de resultados.
    connection.stmt.queryTimeout
    Especifica el número de segundos que el controlador JDBC espera a que la sentencia se ejecute en la base de datos. Si la sentencia no se ejecuta dentro de este período de tiempo, la conexión se cierra.
    Parámetro para especificar el formato de salida del mensaje
    outputFormat
    Para ver una descripción de este parámetro de control, consulte Formatos de salida de mensajes.
  2. Si utiliza un servidor Web de Apache Tomcat, la definición de recurso establece el parámetro accessToUnderlyingConnectionAllowed en true. Por ejemplo, si utiliza la base de datos de ejemplo que se proporciona con DB2 para Linux, UNIX y Windows, la definición de recurso sería similar a la siguiente. El parámetro accessToUnderlyingConnectionAllowed aparece resaltado en negrita.
    <Resource driverClassName="com.ibm.db2.jcc.DB2Driver" 
    maxActive="4" 
    maxIdle="2" 
    maxWait="5000" 
    name="jdbc/sample" 
    password="password" 
    type="javax.sql.DataSource" 
    url="jdbc:db2://localhost:50000/sample" 
    username="userID" 
    validationQuery="select * from employee" 
    accessToUnderlyingConnectionAllowed="true"/>
  3. Abra la ventana Propiedades para un proyecto de desarrollo de datos o el asistente Desplegar servicio web.
    Opción Descripción
    Para añadir los parámetros a cada servicio web de un proyecto de desarrollo de datos
    1. Pulse el botón derecho del ratón en el nodo del proyecto y seleccione Propiedades.
    2. En la ventana Propiedades, seleccione Servicios Web.
    Para añadir los parámetros únicamente a un servicio web que desea desplegar
    • En el proyecto de desarrollo de datos, pulse con el botón derecho del ratón sobre el servicio web y seleccione Compilar y desplegar.
  4. Para cada parámetro, siga estos pasos:
    1. A la derecha de la tabla Parámetros, pulse Nuevo. Aparecerá una fila editable en la tabla.
    2. Escriba el nombre del parámetro en la columna Nombre de la fila editable.
    3. Para que se utilice el valor del parámetro cada vez que un servicio web realiza una operación en la base de datos, escriba el valor del parámetro en la columna Valor. Si el nombre de parámetro empieza con el prefijo service, debe especificar el valor.
    4. Para proporcionar el valor en la cabecera de los mensajes SOAP o en un parámetro de control HTTP de mensajes REST, deje la columna Valor en blanco.

Ejemplo

Supongamos que desea establecer la propiedad de conexión de base de datos clientUser para todos los servicios web del proyecto de desarrollo de datos. Pulsa el botón derecho del ratón sobre el nodo del proyecto y selecciona Propiedades. En la ventana Propiedades, selecciona Servicios Web. En la tabla Parámetros, pulsa Nuevo para añadir una fila a la tabla. En la columna Nombre de la nueva fila, escriba connection.jcc.clientUser.

Tabla Parámetros en la página de propiedades de servicios web del proyecto y en el asistente Desplegar servicio web.
Existen tres formas de proporcionar el valor para este parámetro:
  • Especifique el valor en la columna Valor de la nueva fila. Los servicios web aplican el parámetro y su valor a todas las conexiones de base de datos, sin excepción. Los valores que se especifiquen para este parámetro en una aplicación cliente se ignorarán.
    Especificación del valor del parámetro en la columna Valor de la tabla Parámetros.
  • Especifique el valor en la cabecera de los mensajes SOAP/HTTP que las aplicaciones cliente envían a los servicios web.

    Ejemplo para código generado por Apache Axis2 utilizando cabecera SOAP

    package myClientTest;
    
    import example.WebService2Stub;
     
    public class getEmployee {
    
       public static void main(String args[]) {
          try {
             // crear el apéndice
             WebService2Stub stub = new WebService2Stub("http://localhost:8000/WebService2/services/WebService2");
             // crear el elemento de solicitud para el cuerpo SOAP
             WebService2Stub.GetEmployee empRequest = new  WebService2Stub.GetEmployee();
             // llenar la solicitud con el número de empleado
             empRequest.setEmpno("000130");
    
             // crear la Cabecera para el elemento de solicitud
             WebService2Stub.ConnectionProperties properties = new WebService2Stub.ConnectionProperties();
             WebService2Stub.ConnectionPropertiesType propertiesType = new WebService2Stub.ConnectionPropertiesType();
             properties.setConnectionProperties(propertiesType);
    
             // llenar la cabecera con propiedades
             WebService2Stub.Property_type0 property1 = new WebService2Stub.Property_type0();
             property1.setName("connection.jcc.clientUser");
             property1.setValue("heathr");
             propertiesType.addProperty(property1);
    
    
             WebService2Stub.GetEmployeeResponse response =  stub.getEmployee(empRequest, properties);
    
             //...
    
          } catch (Exception e) {
             System.err.println(e.toString());
          }
       }
    }

    Es la solicitud SOAP generada por el código:

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
       <soapenv:Header>
          <ns1:connectionProperties xmlns:ns1="urn:example">
             <property name="connection.jcc.clientUser" value="heathr"/>
          </ns1:connectionProperties>
       </soapenv:Header>
       <soapenv:Body>
          <ns1:getEmployee xmlns:ns1="urn:example">
             <empno>000130</empno>
          </ns1:getEmployee>
       </soapenv:Body>
    </soapenv:Envelope>
  • Especifique el valor en un parámetro de control HTTP de los mensajes tipo REST que las aplicaciones cliente envían a los servicios web. En el URL de un mensaje REST, un parámetro de control HTTP se denota mediante un prefijo de subrayado.

    El siguiente mensaje de entrada utiliza HTTP GET de tipo REST (codificado para url):

    GET /Project1WebService2/rest/WebService2/getEmployee?empno=000130&_connection.jcc.clientUser=heathr HTTP/1.1
    User-Agent: Java/1.5.0
    Host: localhost:8070 
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 
    Connection: keep-alive
    Content-type: application/x-www-form-urlencoded

    El URL resultante para la solicitud es el siguiente. Este URL puede utilizarse en todos los enlaces HTTP.

    http://localhost:8080/Project1WebService2/rest/WebService2/getEmployee?empno=000130&_connection.jcc.clientUser=heathr


Comentarios