Vous pouvez ajouter aux services Web des paramètres qui définissent des propriétés facultatives dans une base de données prise en charge dans laquelle un service Web effectue des opérations ainsi que des propriétés facultatives pour les connexions entre le service Web et la base de données. Vous pouvez les ajouter par défaut aux services Web que vous créez dans un projet de développement de données ou les ajouter lors du déploiement de services Web individuels.
Pourquoi et quand exécuter cette tâche
Vous pouvez transmettre des informations de contrôle ou d'audit supplémentaires aux services Web en spécifiant des paramètres de service Web supplémentaires puis en transmettant leurs valeurs. Spécifiez les paramètres dans le tableau Paramètres de la page des services Web de la fenêtre Propriétés de votre projet ou dans l'assistant Déploiement du service Web.
Vous pouvez transmettre des valeurs
aux paramètres supplémentaires de trois façons :
- en spécifiant les valeurs directement dans le tableau Paramètres,
- en spécifiant les valeurs dans les en-têtes de message SOAP, si les applications client envoient des messages SOAP/HTTP aux services Web.
- en spécifiant les valeurs dans les paramètres de contrôle HTTP, lorsque les applications client
envoient des messages de type REST aux services Web
Les valeurs transmises s'appliquent uniquement à l'opération demandée par le message. Elles ne concernent pas plus d'un message ou une opération.
Procédure
Pour ajouter
des paramètres aux services Web :
- Sélectionnez les paramètres de contrôle à ajouter et les valeurs à définir.
- Paramètres pour la transmission des informations d'audit de client de base de données DB2
- connection.jcc.clientAccountingInformation
- connection.jcc.clientUser
- connection.jcc.clientProgramName
- connection.jcc.clientWorkstation
Cliquez sur les liens figurant dans la section Informations connexes pour afficher une description de ces paramètres. Lorsque vous ouvrez un lien,
recherchez le paramètre en indiquant la troisième partie de son nom.
Par exemple, si le paramètre est connection.jcc.clientUser,
recherchez-le en entrant clientUser.
- Paramètres pour la transmission d'informations de connexion
- connection.stmt.maxRows
- Spécifie le nombre maximal de lignes à renvoyer pour un ensemble de résultats.
- connection.stmt.queryTimeout
- Nombre de secondes pendant lequel un pilote JDBC attend que l'instruction s'exécute
dans la base de données. Si l'instruction ne s'exécute pas dans ce laps de temps, la connexion se ferme.
- Paramètre pour la définition du format de sortie des messages
- outputFormat
- Pour une description de ce paramètre de contrôle, voir Formats de sortie des messages.
- Si vous utilisez un serveur Web Apache Tomcat, votre définition de ressource a associé le paramètre accessToUnderlyingConnectionAllowed à la valeur true. Par exemple, si vous utilisiez la base de données sample fourni avec DB2 for Linux, UNIX and Windows, votre définition de ressource ressemble à l'extrait ci-dessous. Le paramètre accessToUnderlyingConnectionAllowed apparaît en gras.
<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"/>
- Ouvrez la fenêtre Propriétés d'un projet de développement de données
ou l'assistant Déploiement du service Web.
Option |
Description |
Pour ajouter les paramètres à tous les services Web
d'un projet de développement de données |
- Cliquez avec le bouton droit de la souris sur le noeud du projet, puis sélectionnez Propriétés.
- Dans la fenêtre Propriétés, sélectionnez Services Web.
|
Pour ajouter les paramètres uniquement au service Web que vous souhaitez
déployer |
- Dans un projet de développement de données, cliquez avec le bouton droit de la souris sur le service Web,
puis sélectionnez Générer et déployer.
|
- Pour chaque paramètre :
- A droite du tableau Paramètres, cliquez sur Nouveau. Une ligne que vous pouvez modifier apparaît dans le tableau.
- Entrez le nom du paramètre dans la colonne Nom de la ligne.
- Pour que la valeur du paramètre soit utilisée à chaque fois qu'un service Web effectue une opération dans la base de données, entrez la valeur du paramètre dans la colonne Valeur. Si le nom du paramètre commence par le préfixe
service,
vous devez spécifier sa valeur.
- Pour indiquer la valeur dans l'en-tête des messages SOAP
ou dans un paramètre de contrôle HTTP des messages REST, laissez la colonne Valeur
vide.
Exemple
Imaginez que vous voulez définir la propriété de connexion de base de données
clientUser pour tous les services Web de votre projet de développement de données. Cliquez avec le bouton droit de la souris sur le noeud du projet, puis sélectionnez Propriétés. Dans la fenêtre Propriétés, sélectionnez Services Web. Sur la page Services Web, en regard du tableau Paramètres,
cliquez sur Nouveau pour ajouter une ligne dans le tableau. Dans la colonne Nom de la nouvelle ligne, entrez connection.jcc.clientUser.

Vous pouvez indiquer la valeur du paramètre de trois façons :
- Spécifiez la valeur dans la colonne Valeur de la nouvelle ligne. Les services Web appliquent le paramètre
et sa valeur à toutes les connexions de base de données, sans exception. Toute valeur spécifiée pour ce paramètre
dans une application client est ignorée.
- Spécifiez la valeur dans l'en-tête des messages SOAP/HTTP que les applications client envoient aux services Web.
Exemple de code généré Apache Axis2 avec l'en-tête SOAP
package myClientTest;
import example.WebService2Stub;
public class getEmployee {
public static void main(String args[]) {
try {
// créer le module de remplacement
WebService2Stub stub = new WebService2Stub("http://localhost:8000/WebService2/services/WebService2");
// créer l'élément de demande pour le corps SOAP
WebService2Stub.GetEmployee empRequest = new WebService2Stub.GetEmployee();
// renseigner la requête avec le matricule
empRequest.setEmpno("000130");
// créer l'en-tête de l'élément de requête
WebService2Stub.ConnectionProperties properties = new WebService2Stub.ConnectionProperties();
WebService2Stub.ConnectionPropertiesType propertiesType = new WebService2Stub.ConnectionPropertiesType();
properties.setConnectionProperties(propertiesType);
// renseigner l'en-tête avec les propriétés
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());
}
}
}
Requête SOAP générée par le code :
<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>
- Spécifiez la valeur dans le paramètre de contrôle HTTP des messages de type REST
que l'application client envoie aux services Web. Dans l'adresse URL d'un message
REST, un paramètre de contrôle HTTP est indiqué par un préfixe
correspondant à un trait de soulignement.
Exemple de message d'entrée utilisant le protocole HTTP GET de type REST (codé dans l'adresse 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
L'adresse URL résultante de la requête
se présente comme suit. Cette adresse peut être utilisée
dans toutes les liaisons HTTP.
http://localhost:8080/Project1WebService2/rest/WebService2/getEmployee?empno=000130&_connection.jcc.clientUser=heathr