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.
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 que aparece en la
página Servicios Web de la ventana Propiedades para el
proyecto y en el asistente para Desplegar servicio Web.
Puede pasar valores a los parámetros adicionales utilizando dos 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
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:
- Decida cuáles son los parámetros 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 en la parte inferior de este tema. Cuando
siga un enlace, busque el parámetro en la tercera parte de su nombre. Por ejemplo, si el parámetro es connection.jcc.clientUser,
busque el parámetro en 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 esperará para 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.
- 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 el proyecto de
desarrollo de datos o el asistente para Desplegar servicio Web.
- Si desea añadir los nuevos parámetros a cada servicio Web del proyecto
de desarrollo de datos, pulse el botón derecho del ratón en la carpeta de
proyecto y seleccione Propiedades. En la ventana Propiedades, seleccione
Servicios Web.
- Si desea añadir los nuevos parámetros únicamente a un servicio Web
que está desplegando, realice los pasos siguientes en el asistente para
Desplegar.
- En la tabla Parámetros, pulse en
Nuevo para cada parámetro que desee añadir. Aparecerá una nueva línea editable en la tabla cada vez que realice esta
acción.
- Escriba el nombre del parámetro den la columna
Nombre de la nueva línea editable.
- Para cada parámetro, siga estos pasos:
- En la tabla Parámetros, pulse en
Nuevo. Aparecerá una nueva línea editable en la tabla.
- Escriba el nombre del parámetro en la columna Nombre de la línea editable.
- Si desea que el valor del parámetro se utilice 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 parámetro empieza con el
prefijo service, debe especificar el valor.
- Si desea proporcionar el valor en la cabecera de los mensajes SOAP,
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. Pulse el botón derecho del ratón en la
carpeta Servicios Web y seleccione Propiedades. En
la tabla Parámetros, pulse en
Nuevo para añadir una fila a la tabla. En la columna
Nombre de la nueva fila, escriba connection.jcc.clientUser.

Existen dos formas
de proporcionar el valor para este parámetro:
- Especifique el valor en la columna Valor de la nueva
fila. Los servicios Web aplicarán el parámetro y su valor a todas las
conexiones de base de datos, sin excepción.
- Especifique el valor en la cabecera de los mensajes SOAP/HTTP que las
aplicaciones cliente envían a los servicios Web. En este caso, el valor es
opcional. No se producen errores si un mensaje no proporciona el valor en una
cabecera SOAP.
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.Property_type0 property2 = new WebService2Stub.Property_type0();
property2.setName("connection.jcc.clientWorkstation");
property2.setValue("myWorkstation");
propertiesType.addProperty(property2);
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"/>
<property name="connection.jcc.clientWorkstation" value="myWorkstation"/>
</ns1:connectionProperties>
</soapenv:Header>
<soapenv:Body>
<ns1:getEmployee xmlns:ns1="urn:example">
<empno>000130</empno>
</ns1:getEmployee>
</soapenv:Body>
</soapenv:Envelope>