Esta é a Parte 2 de um artigo de duas partes, que demonstra como desenvolvedores com qualificações limitadas em programação podem desenvolver um aplicativo da Web de telecomunicações com facilidade, usando APIs com estilo REST expostas pelo IBM® WebSphere® Telecom Web Services Server, Versão 7.1. Comparado com o método de serviços da Web descrito na Parte 1, a chamada no estilo REST é muito mais simples, e não há necessidade de gerar clientes de serviços da Web a partir de arquivos WSDL. A Parte 1 desta série trata do Cenário 1: criando um aplicativo de telecomunicações com serviços da Web (clique no link "Mais conteúdo desta série" sob o resumo deste artigo para ler a Parte 1).
Cenário 2. Criar um aplicativo da Web de telecomunicações com Ajax e JSON
Este cenário demonstra como desenvolver um aplicativo da Web de telecomunicações usando a abordagem de design do Ajax, o formato de dados JavaScript Object Notation (JSON) e APIs com estilo REST expostas pelo Telecom Web Services Server.
- Um varejista deseja enviar um anúncio a todos os seus clientes, informando-os sobre uma oferta sazonal. O varejista também deseja saber o status de entrega dessas mensagens SMS.
- O varejista terceiriza esse trabalho a um provedor de aplicativos de terceiros, que precisa enviar mensagens SMS em massa usando um aplicativo de telecomunicações da Web 2.0.
Nesta seção, demonstramos como desenvolver o aplicativo usando a tecnologia Ajax para a GUI, APIs com estilo REST para acessar os recursos de telecomunicações e o formato de dados JSON para conter a carga útil. A página HTML de amostra em anexo (consulte Downloads) demonstra como fazer uma chamada de Ajax para os recursos de REST, usando o objeto de dados JSON para o TWSS. A parte do JavaScript que faz a chamada é explicada aqui (consulte o código da Listagem 1).
Na função do JavaScript, é obtido um manipulador para o objeto XMLHttpRequest específico do navegador. A mensagem de JSON é formada usando o senderName, endereços e parâmetros de mensagem obtidos à página HTML (somente os endereços e a mensagem são parâmetros obrigatórios).
O método stringify usado aqui converte o objeto JSON em texto JSON. Pode-se encontrar um link para esse método na seção Recursos deste artigo.
O XMLHttpRequest é inicializado por meio do método aberto. Estes são os parâmetros passados para esse método:
- Método HTTP a ser usado para enviar a solicitação
- URL que aponta para o recurso de REST.
Nota: o IBM WebSphere Telecom Toolkit não suporta a carga útil JSON. Em vez disso, aponta a URL para o URI de REST real do TWSS para testar o mesmo. Consulte a documentação do TWSS 7.1, Developing > REST Style Access Using HTTP > Interfaces, para obter mais informações sobre os recursos de REST disponíveis que suportam JSON. Pode-se encontrar um link para essa documentação nos Recursos deste artigo. - Valor booleano que indica se a transação é assíncrona
O método sendSMS envia o objeto JSON para o servidor usando esses parâmetros.
A função onreadystatechange é acionada sempre que o estado de prontidão muda. Ela recebe o objeto JSON de resposta contendo o messageId, que é o identificador de solicitação que identifica uma solicitação de entrega de SMS.
Agora, esse messageId pode ser usado para obter o status de entrega do SMS enviado.
Listagem 1. Script de Java para chamar um recurso de REST de SMS
<script type="text/javascript">
function sendSMS()
{
var xmlHttp= null;
var url = "http://localhost:9089/ShortMessageService/services/JSON/sms";
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlHttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var senderName = document.getElementById('senderName').value;
var address = document.getElementById('addresses').value;
var message = document.getElementById('message').value;
var addressArr = new Array();
var addresses = address.split(/,/);
for ( var i = 0; i < addresses.length; i++) {
addressArr.push(addresses[i]);
}
//Create the JSON Object
var jsObject = {"addresses": addressArr ,"senderName": ""
+ senderName + "","message": "" + message + ""};
var jsSON = JSON.stringify(jsObject);
xmlHttp.open("POST", "" + url + "", true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
my_JSON_object = JSON.parse(xmlHttp.responseText);
if (my_JSON_object.messageId!=undefined) {
alert("Response from Server:"+ my_JSON_object.messageId);
document.getElementById("requestIdentifier").value = "";
document.getElementById("dStat").innerHTML="";
}
else if (my_JSON_object.result!=undefined) {
document.getElementById("requestIdentifier").value = my_JSON_object.result;
my_JSON_object = JSON.parse(xmlHttp.responseText);
document.getElementById("dStat").innerHTML="";
}
}
};
xmlHttp.send(jsSON);
}
</script>
|
O código da Listagem 2 mostra a função JavaScript que demonstra como obter o status de entrega do SMS enviado.
Listagem 2. JavaScript para chamar uma operação getDeliveryStatus
<script type="text/javascript">
function getDeliveryStatus()
{
var xmlHttp= null;
var url =
"http://localhost:9089/ShortMessageService/services/JSON/smsDeliveryStatus";
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlHttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var reqId = document.getElementById('requestIdentifier').value;
xmlHttp.open("POST", ""+ url +"", true);
var jsObject = {"requestIdentifier": + reqId +""};
var jsSON = JSON.stringify(jsObject);
xmlHttp.open("POST", ""+ url +"", true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200){
xmlNode = JSON.parse(xmlHttp.responseText);
if (xmlNode.messageId!=undefined) {
alert("Response from Server:"+ xmlNode.messageId);
document.getElementById("dStat").innerHTML="";
}
else
{
var innerHTML = '<table border=\'2\' >' +
'<tr> <th> address </th> <th> Delivery Status</th> </tr>' ;
for (var i = 0 ; i < xmlNode.result.length ; i++) {
var item = xmlNode[i];
innerHTML += '<tr>' +
'<td> ' + xmlNode.result[i].address + '</td>' +
'<td> ' + xmlNode.result[i].deliveryStatus + ' </td>' +
'</tr>';
}
innerHTML += "</table>";
document.getElementById("dStat").innerHTML = innerHTML;
}
}
};
xmlHttp.send(jsSON);
}
</script>
|
Nota:
o código de amostra fornecido encontrará restrições ao cross-site scripting, caso o script esteja hospedado em outro servidor. Para resolver esse problema, é possível escolher uma destas duas ações:
- Usar um navegador que não restrinja o cross-site scripting. Advertência: isso pode afetar a segurança.
- Certifique-se de que o script esteja executando no mesmo servidor que o TWSS.
Cenário 3. Crie um aplicativo de telecomunicações usando Java e OneAPI
O Cenário 3 demonstra o mesmo caso de uso do Cenário 2. Entretanto, aqui, demonstramos como desenvolver um aplicativo de telecomunicações usando um programa Java simples com os recursos de REST OneAPI expostos pelo TWSS v7.1.
O TWSS 7.1 suporta a especificação OneAPI Versão 0.9. Os modelos de dados suportados incluem XML, JSON e form-url-encoded. Geralmente, as solicitações são em form-url-encoded e as respostas são sempre em XML. Consulte TWSS 7.1: Developing > REST Style Access Using HTTP > Interfaces para ver detalhes sobre os serviços suportados no TWSS 7.1, incluindo SMS, TL e Pagamento. Pode-se encontrar um link para eles na seção Recursos deste artigo.
O código da Listagem 3 instrui a operação sendSMS com parâmetros obrigatórios e opcionais. Observe estes elementos:
- A URL é acrescentada aos argumentos para formar a URL do recurso.
- O método de execução do método HTTPClient é chamado com um parâmetro de HTTPMethod para enviar a solicitação para a URL de REST do TWSS.
- A resposta é recebida por meio do método getResponseBody de HTTPMethod.
- Após o recebimento da resposta de sendSMS, o messageID é recuperado a partir da resposta, e um getDeliveryStatus é consultado de forma semelhante.
- O status de entrega da mensagem é exibido na parte inferior.
Listagem 3. Fragmento de código Java para chamar uma operação sendSMS
//initialize HTTPClient object
org.apache.commons.httpclient.HttpClient client =
new org.apache.commons.httpclient.HttpClient();
//construct the sendSMS request
urlString = resourceURL + "?" + strAddressArr + "&message=" + strMessage +
"&correlator=" + strCorrel + "¬ifyURL=" + strNotifyURL +
"&senderName=" + strSenderName;
//initialize PostMethod specifying target URL
org.apache.commons.httpclient.methods.PostMethod postMethod =
new org.apache.commons.httpclient.methods.PostMethod(urlString);
//execute the postmethod and get the status of the HTTP response
statusCode = client.executeMethod(postMethod);
System.out.println("HTTP status code:"+ statusCode);
//Read body of response into a string
postResponse = postMethod.getResponseBody();
strResponseAsAString = new String(postResponse);
System.out.println("SendSMS Response :" + strResponseAsAString);
//Create URL string for getSmsDeliveryStatus.
//The getMessageId method retrieves the messageIdentifer from sendSMS response XML
urlString = resourceURL +"?messageId=" + getMessageId(strResponseAsAString);
//initialize GetMethod specifying target URL
org.apache.commons.httpclient.methods.GetMethod getMethod =
new org.apache.commons.httpclient.methods.GetMethod(urlString);
//execute getmethod and get the status of the HTTP response
statusCode = client.executeMethod(getMethod);
System.out.println("HTTP status code:"+ statusCode);
//Read body of response into a string
postResponse = getMethod.getResponseBody();
System.out.println("Message Delivery Status:" + new String(postResponse));
|
Nota:
Todo o código Java é fornecido como um Intercâmbio de Projeto na seção Downloads deste artigo. Certifique-se de que o caminho de desenvolvimento do projeto tenha uma referência ao arquivo com.ibm.jaxws.thinclient_7.0.0.jar disponível em RAD75Home\runtimes\base_v7\runtimes.
Cenário 4. Crie um aplicativo de telecomunicações usando widgets Dojo de amostra
O TWSS 7.1 fornece interfaces com RESTful compatíveis com a especificação GSMA OneAPI v0.9, além das interfaces de serviços da Web já existentes. Para complementar essas interfaces, os widgets Dojo de amostra com estilo REST foram incluídos no IBM WebSphere Telecom Toolkit. Esses widgets Dojo de amostra podem ser usados dentro do aplicativo da Web para acessar os recursos da rede de telecomunicações. A amostra inclui widgets para estes fins:
- Localização de terminal
- Serviço de Mensagens Curtas
- Serviços de pagamento
Os widgets são desenvolvidos usando o Dojo Toolkit, disponível no Web Services Feature Pack para o Rational Application Developer. Se o Web Services Feature Pack está instalado, as bibliotecas Dojo disponíveis no feature pack podem ser usadas. Se não está, é possível fazer o download do Dojo Toolkit. Pode-se encontrar um link para ele na seção Recursos deste artigo.
O Cenário 4 demonstra o mesmo caso de uso do Cenário 2. Esses widgets de amostra permitem que as páginas da Web acessem recursos centrais da rede, e simplificam bastante o desenvolvimento de aplicativos de telecomunicações. Esses widgets OneAPI Dojo de amostra podem ser testados no Telecom Web Services Simulator fornecido no kit de ferramentas. Este é o processo de instalação das amostras de REST:
- Instale o IBM WebSphere Telecom Toolkit v7.1 no Rational Application Developer v7.5 ou posterior.
- Abra o Rational Application Developer.
- Carregue as amostras na área de trabalho do Rational Application Developer, usando a páginaImport links from the Telecom Web Services Feature Samples . É possível acessar essa página selecionando Help > Samples > Samples > Technology Samples > Telecom Web Services Feature > Telecom Web Services Samples > One API Widget Sample.
- Revise as instruções sobre pré-requisitos clicando no link Setup Instructions .
- Importe a amostra,
- Importe o Dojo Toolkit para a pasta WebContent no projeto OneAPISample.
- Para testar essas amostras com relação ao simulador de serviços da Web, prefixe
/ParlayX21Webao valor do atributo endPoint na tag<div>em cada um dos arquivos HTML de amostra sob a pasta telcoSampleWidgets: OneAPISample > WebContent > dojo > telcoSampleWidgets. Por exemplo, este deve ser o endPoint do Short Message Service: /ParlayX21Web/ShortMessageService/services/REST/sms - Implemente e execute o WebSphere Simulator no IBM® WebSphere® Application Server versão 7.0 ou posterior.
Nota: esses widgets OneAPI de amostra podem ser testados no simulador de serviços da Web fornecido no kit de ferramentas. - Clique com o botão direito do mouse e selecione OneAPISamples > Webcontent > dojo > telcoSampleWidgets > sendSmsDemo.html e selecione Run As > Run on server.
Esta ação abre uma página com a amostra OneAPI sendSmsDemo, como mostra a Figura 1.
Figura 1. Amostra de OneAPI sendSmsDemo
- Na visualização Activity do Web Services Simulator, verifique se as mensagens SMS foram entregues
Figura 2. Visualização Activity mostrando a entrega de SMS
Visualização maior da Figura 2.
Dica:
consulte a atualização do IBM Education Assistant para o WebSphere Telecom Toolkit > versão 7.1, que fornece etapas detalhadas sobre a configuração dos widgets Dojo de amostra fornecidos no Rational Application Developer. Pode-se encontrar um link para ela na seção Recursos deste artigo. Nota: No caso dos widgets Dojo de amostra que foram fornecidos, supõe-se que eles sejam servidos a partir do mesmo servidor que o TWSS. Do contrário, é possível que as restrições ao cross-site scripting se apliquem.
A dinâmica do segmento de mercado de telecomunicações em transformação e a Web 2.0 estão criando várias possibilidades interessantes. A disponibilidade dos recursos da rede de telecomunicações por meio da interface disseminada de HTTP, o suporte para cargas úteis XML e JSON, as APIs com estilo REST e as interfaces de serviços da Web fazem com que um desenvolvedor de aplicativos de terceiros desenvolva e forneça aplicativos de telecomunicações inovadores com mais facilidade. Essa barreira de entrada baixa para os provedores de conteúdo da Web, por sua vez, significa serviços melhores para os clientes.
Descrição: Intercâmbio de Projeto com código de amostra
Sobre os downloads
- Pode-se encontrar o código de origem do Cenário 3 no arquivo TWSS_Usage_Sample_PI.zip .
- Pode-se encontrar o código de origem do Cenário 2 no arquivo groupSMS.zip .
- Certifique-se de que o caminho de desenvolvimento do projeto StartNotificationClient tenha uma referência ao arquivo com.ibm.ws.webservices.thinclient_7.0.0.jar , disponível emRAD75Home\runtimes\base_v7\runtimes.
- Certifique-se de que o caminho de desenvolvimento do projeto OneAPIJavaClient tenha uma referência ao arquivo com.ibm.jaxws.thinclient_7.0.0.jar , disponível em RAD75Home\runtimes\base_v7\runtimes.
| Descrição | Nome | Tamanho | Método de download |
|---|---|---|---|
| Source code for Scenario 3 | TWSS_Usage_Sample_PI.zip | 115KB | HTTP |
| Source code for Scenario 2 | groupSMS.zip | 2KB | HTTP |
Informações sobre métodos de download
Aprender
- Citações neste artigo:
- O método stringify usado aqui converte o objeto JSON em texto JSON.
- Documentação do TWSS 7.1 Developing > REST Style Access Using HTTP > Interfaces (SMS Interface)
- Web site do GSMA OneAPI
- TWSS 7.1: Developing > REST Style Access Using HTTP > Interfaces
- O Dojo Toolkit
- Atualização do IBM Education Assistant para o WebSphere Telecom Toolkit > Versão 7.1
- GSMA OneAPI
- Documentação do IBM Rational Application Developer Versão 7.5
- Centro de Informações do IBM WebSphere Telecom Web Services Server Versão 7.1
- Education Assistant para o IBM WebSphere Telecom Toolkit, Versão 7.1 Education Assistant
- Navegue na página do
Rational Application Developer para WebSphere Software no developerWorks para obter os links para artigos técnicos e muitos recursos relacionados, e explore o Centro de Informações .
- Visite a
área do software Rational no developerWorks para ver recursos técnicos e boas práticas para produtos da Rational Software Delivery Platform.
- Fique por dentro doseventos técnicos e webcasts do developerWorks
com foco em uma variedade de produtos IBM e tópicos do segmento de mercado de TI.
- Participe de um briefing ao vivo e gratuito do developerWorks para se atualizar rapidamente sobre produtos e ferramentas IBM, bem como tendências do segmento de mercado de TI.
- Assista às demos on demand no developerWorks, variando de demos de instalação e configuração de produtos para iniciantes a funcionalidades avançadas para desenvolvedores experientes.
- Melhore suas qualificações. Verifique a visão geral do Catálogo de treinamento e certificação do Rational que inclui muitos tipos de cursos em uma ampla variedade de tópicos. É possível realizar alguns deles em qualquer local, a qualquer momento, e muitos dos cursos para iniciantes são gratuitos.
Obter produtos e tecnologias
- Experimente o Rational Application Developer para WebSphere Software, gratuitamente.
- Avalie o software IBM da forma que melhor lhe convier: faça o download para uma versão de testes, experimente-o on-line, use-o em um ambiente de nuvem ou passe algumas horas no SOA Sandbox aprendendo a implementar Arquitetura Orientada a Serviços de forma eficiente.
Discutir
- Participe do fórum do Development Tools do Rational Asset Analyzer para fazer perguntas e participar de discussões.
- Compartilhe seu conhecimento e ajude outros a usar o software Rational, escrevendo um artigo para o developerWorks. Você obterá exposição mundial, sindicação de RSS, os créditos, uma biografia e o benefício da produção e edição profissionais no Web site do Rational no developerWorks.
- Siga o software Rational no Facebook e no Twitter (@ibmrational), e inclua seus comentários e solicitações.
- Faça e responda perguntas e aumente seu conhecimento quando participar de Fóruns do Rational, cafés e wikis.
- Entre em contato com outros que compartilham seus interesses fazendo parte da comunidade do developerWorks , e respondendo aos blogs conduzidos por desenvolvedores.

Raghunath E. Nair é engenheiro de software principal do laboratório de software da IBM Índia, em Bangalore. Ele passou a fazer parte da IBM em 2006. Sua função mais recente é o design, desenvolvimento e suporte de software para telecomunicações para o software IBM WebSphere, incluindo IBM WebSphere TWSS e IBM WebSphere IMS Connector. Suas áreas de especialização são integração de middleware, SOA, serviços da Web e telecomunicações. Foi coautor de Using WebSphere Message Broker as an ESB with WebSphere Process Server na série IBM Redbooks, e tem diploma de Bacharel em Tecnologia em Eletrônica e Comunicações pela Universidade de Calicute.

Chandrashekar B. Naik é engenheiro de software da equipe do laboratório de software da IBM Índia. Ele passou a fazer parte da IBM em 2004 e tem experiência em design, desenvolvimento e teste de software. Suas áreas de especialização incluem Java, J2EE e programação de serviços da Web, incluindo WebSphere Application Server, Telecom Web Services Server, Mobile Portal Accelerator, computação disseminada e software WebSphere para telecomunicações. Atualmente, trabalha com desenvolvimento, suporte e teste do WebSphere Telecom Web Services Server. Chandrashekar também é programador certificado pela Sun e tem diploma de Bacharel em Engenharia em Ciências da Computação pela Universidade Tecnológica Visveswaraiah, de Belgaum.