É possível incluir parâmetros em serviços da Web que configuram propriedades opcionais
dentro de um banco de dados suportado, no qual um serviço da Web desempenha operação contrárias
e em propriedades opcionais das conexões entre o serviço da Web e o
banco de dados. Você pode incluir esses parâmetros por padrão nos serviço da Web
criados dentro de um projeto de desenvolvimento de dados ou pode incluí-los ao implementar
serviços da Web individuais.
É possível transmitir informações de controle ou de auditoria adicionais para serviços da Web,
especificando parâmetros de serviços da Web adicionais e, em seguida, transmitindo valores para esses
parâmetros. Especifique os parâmetros na tabela Parâmetros,
a qual aparece na página Serviços da Web da janela Propriedades
de seu projeto e no assistente Implementar Serviços da Web.
Você
pode transmitir valores para os parâmetros adicionais por três métodos diferentes:
- Especificando os valores diretamente na tabela Parâmetros
- Especificando os valores nos cabeçalhos da mensagem SOAP, se os aplicativos cliente
enviarem mensagens SOAP/HTTP para os serviços da Web
Os valores transmitidos aplicam-se apenas à operação que a mensagem solicita.
Eles não ultrapassam mais de uma mensagem ou operação.
Procedimento:
- Decida quais parâmetros que você deseja incluir e os valores que deseja
configurar para eles.
- Parâmetros para Transmitir Informações do Banco de Dados DB2
- connection.jcc.clientAccountingInformation
- connection.jcc.clientUser
- connection.jcc.clientProgramName
- connection.jcc.clientWorkstation
Para obter descrições desses parâmetros, consulte os links na seção Informações
Relacionadas na parte inferior desse tópico. Quando você seguir um link,
pesquise o parâmetro procurando na terceira parte de seu nome. Por exemplo,
se o parâmetro for connection.jcc.clientUser, pesquise-o
procurando em clientUser.
- Parâmetros para Transmitir Informações de Conexão
- connection.stmt.maxRows
- Especifica o número máximo de linhas para retornar para um conjunto de resultados.
- connection.stmt.queryTimeout
- Especifica o número de segundos que o driver JDBC aguardará a execução
da instrução no banco de dados. Se a instrução não for executada nesse
tempo, a conexão é fechada.
- Se você estiver utilizando o servidor da Web Apache Tomcat, sua definição de Recurso
configura o parâmetro accessToUnderlyingConnectionAllowed como true. Por exemplo, se você estiver utilizando o banco de dados de amostra fornecido com o DB2 para Linux, UNIX
e Windows,
sua definição de recurso seria semelhante a esta. O parâmetro accessToUnderlyingConnectionAllowed
é ressaltado em negrito.
<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 a janela Propriedades para o
projeto de desenvolvimento de dados ou para o assistente Implementar Serviço da Web.
- Se você quiser incluir os novos parâmetros em cada serviço da Web dentro do
projeto de desenvolvimento de dados, clique com o botão direito do mouse na pasta Projeto e selecione
Propriedades. Na janela Propriedades, selecione Serviços da Web.
- Se você quiser incluir os novos parâmetros apenas em um serviço da Web
sendo implementado, execute as etapas a seguir no assistente Implementar.
- Na tabela Parâmetros, clique em Novo para
cada parâmetro que você deseja incluir. Uma nova linha editável aparece
na tabela sempre que você fizer isso.
- Digite o nome do parâmetro na coluna Nome
da nova linha editável.
- Para cada parâmetro, siga estas etapas:
- Na tabela Parâmetros, clique em Novo. Uma linha editável aparece na tabela.
- Digite o nome do parâmetro na coluna Nome
da linha editável.
- Se você quiser o valor do parâmetro a ser utilizado sempre que
um serviço da Web desempenhar uma operação no banco de dados, digite o valor do
parâmetro na coluna Valor. Se o parâmetro
começar com o serviço de prefixo, será necessário especificar o valor.
- Se você quiser fornecer o valor no cabeçalho de mensagens SOAP,
deixe a coluna Valor em branco.
Exemplo
Suponha que você deseja configurar a propriedade da conexão
do banco de dados clientUser para todos os serviços da Web dentro do projeto de desenvolvimento
de dados. Clique com o botão direito do mouse na pasta Serviços da Web e
selecione Propriedades. Na tabela Parâmetros,
clique em Novo para incluir uma linha na tabela. Na coluna Nome
da nova linha, digite connection.jcc.clientUser.

Há duas maneiras que você pode fornecer o valor
para este parâmetro:
- Especifique o valor na coluna Valor da nova
linha. Os serviços da Web se aplicarão ao parâmetro e seus valores a todas as conexões
com o banco de dados, sem exceção.
- Especifique o valor no cabeçalho de mensagens SOAP/HTTP que os aplicativos cliente
enviam para os serviços da Web. Nesse caso, o valor é opcional. Não ocorrerá nenhum erro,
se uma mensagem não fornecer o valor em um cabeçalho SOAP.
Amostra para código gerado
pelo Apache Axis2 utilizando o cabeçalho SOAP
package myClientTest;
import example.WebService2Stub;
public class getEmployee {
public static void main(String args[]) {
try {
// create the stub
WebService2Stub stub = new WebService2Stub("http://localhost:8000/WebService2/services/WebService2");
// create the request elment for SOAP body
WebService2Stub.GetEmployee empRequest = new WebService2Stub.GetEmployee();
// fill request with employee number
empRequest.setEmpno("000130");
// create the Header for the request element
WebService2Stub.ConnectionProperties properties = new WebService2Stub.ConnectionProperties();
WebService2Stub.ConnectionPropertiesType propertiesType = new WebService2Stub.ConnectionPropertiesType();
properties.setConnectionProperties(propertiesType);
// fill the header with properties
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());
}
}
}
Este é o pedido SOAP gerado pelo 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>