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:
- 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.
- 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"/>
- 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 |
- Pulse el botón derecho del ratón en el nodo del proyecto y seleccione
Propiedades.
- 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.
|
- Para cada parámetro, siga estos pasos:
- A la derecha de la tabla Parámetros, pulse
Nuevo. Aparecerá una fila editable en la tabla.
- Escriba el nombre del parámetro en la columna Nombre de la
fila editable.
- 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.
- 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.

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.
- 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