Documente Academic
Documente Profesional
Documente Cultură
BACHAREL EM INFORMÁTICA
BANCA EXAMINADORA:
Prof. Glaucio Adriano Fontana, M.Sc. Prof. Douglas Nazareno Debiazi Vargas, M.Sc.
UNIPLAC UNIPLAC
Prof. Angelo Augusto Frozza, Esp. Prof.Wilson Castello Branco Neto, M.Eng.
Supervisor de TCC Coordenador de Curso
Web Services are calling the attention and conquering a good space in the Internet.
This web's resource allows interoperability of systems that are independent of
technology, operating system, programming language and hardware, these are the
reasons that justify its use to integrate systems and services. The aim of this college
work is to present the functionalities and profiles of this technology. It presents the
basic concepts of Web Services and an applied proposal to e-commerce. It also shows
the implementation of web services using Java programming language, involving J2SE
and J2EE with its principals resources applied to a study case. In this context, new
facilities are available in the market, like NetBeas 4.1 IDE, that was used to develop
the application. Aiming the explanation and intending explore the main functionalities
of this IDE, it’s demonstrated how to develop web services and what are the main
program files that are necessary to the implementation. Every web service need to be
available in an application server, that’s why it was used the SJSAS 8.1 from Sun
Microsystems. After web service’s implemantation and clients that use this resource, it
was possible to get the final considerations of this college work and enhance the
favorable points about Web Service, and the available resources about implementation
using Java. The proposal presented at this college work can be applied in different e-
commerce’s sectors to provide a better search of the products that are offered for the
companies. The principals objectives proposed in this college work were concluded
thus being it was possible to have an excellent use to advantage of it.
1.1 Apresentação
1.3 Justificativa
Um Web Service representa uma função de negócio ou um serviço que pode ser acessado
por uma outra aplicação, sobre redes públicas e, geralmente, disponibilizado por protocolos
conhecidos. De maneira mais simples, podemos definir como um software com capacidade
de se comunicar com pessoas, aplicações ou outros Web Services através de uma rede.
O ambiente utilizado para o desenvolvimento do referido Web Service é o
Java, visto as vantagens que a linguagem tem apresentado, não somente para o
desenvolvimento de aplicações Web, mas também para qualquer tipo de aplicação e
dispositivo que tenha capacidade de processamento, dando cada vez mais, suporte a
interoperabilidade. A linguagem Java é gratuita e uma tendência na comunidade de
desenvolvedores de aplicações para Web.
Conforme VELOSO (2003), o porquê da utilização do ambiente Java dá-se
de acordo com a frase “escreva um e rode em qualquer lugar”, é um bom motivo para
começar a pensar em Java como sendo a plataforma de desenvolvimento de aplicações
poderosas, diferenciadas, seguras e que funcionam em qualquer ambiente
computacional.
Por fim, quem desenvolve estes tipos de serviços deve se preocupar quanto à
sua devida publicação, visto que se o serviço Web desenvolvido, não for publicado,
não poderá ser utilizado por seus clientes.
1.6 Metodologia
Este capítulo tem como objetivo mostrar mais a fundo o que são, como
funcionam e qual a importância dos Web Services. Também são destacados onde estes
serviços podem ser aplicados, quais as respectivas vantagens e objetivos da utilização
deles, a descrição dos componentes de sua estrutura e as principais tecnologias que
envolvem a construção deste tipo de serviço e a devida segurança que pode ser
aplicada aos serviços desenvolvidos.
Os Web Services são muito importantes para empresas que têm a visão e a
proposta de crescimento no mercado, pois com a implantação deste tipo de serviço, a
empresa, terá uma enorme probabilidade de conquistar um diferencial perante seus
concorrentes, e principalmente um atrativo para novos clientes. Estes serviços são
8
úteis tanto para B2B quanto para B2C. Deste modo, as companhias podem automatizar
muitas operações comerciais, criando novas capacidades operacionais e modos mais
eficientes de realizar negócios.
Segundo COSTA (2002), apesar de novo, os Web Services já foram adotados
por muitas empresas, pois eles oferecem soluções para vários dilemas dos
desenvolvedores de sistemas.
A universalidade dos Web Service já citada, que propõem a exposição de
transações e regras de negócios por meio de protocolos e que podem ser acessados e
entendidos por qualquer linguagem de programação, em qualquer sistema operacional,
rodando em qualquer dispositivo, já havia sido atingida com as páginas da Web. Todos
os sites se comportam e possuem mais ou menos a mesma maneira e aparência,
independentemente do tipo de computador, sistema operacional ou browser utilizado
para acessá-lo. Os protocolos da Web revolucionaram a maneira como as pessoas se
relacionam com a tecnologia. Por mais estranho que pareça, hoje é mais fácil uma
pessoa se entender com sistemas nos computadores do que fazer dois sistemas se
entenderem entre si. Esse paradoxo acontece porque a acirrada competição entre as
empresas de tecnologia impediu que elas desenvolvessem padrões comuns de
comunicação.
Além disto, uma vantagem mais técnica sobre o serviço, segundo PEREZ
(2004), é que nos Web Services, os dados são trafegados em formato XML. Assim,
todos os dados possuem <tags> e isso faz com que estes dados tenham consistência,
sem falhas, permitindo a troca de dados mais robustos como Arrays, e por trafegar em
XML ele é multi-plataforma.
• XML
• SOAP
• WSDL
• UDDI
A tag curso contém a tag aluno que, por sua vez, armazena as tags nome
com seus respectivos conteúdos.
2.3.1.1 Namespaces
Embora a XML seja feita para a troca de dados, ela sozinha não é suficiente
para o intercâmbio de informações através da Web. É necessário ter um protocolo que
possa enviar e receber mensagens contendo documentos XML. É neste ponto que entra
o Simple Object Access Protocol (SOAP).
Então, SOAP é um protocolo de comunicação, baseado em XML, para
comunicação, envio e troca de dados entre aplicações distintas. Possibilita que
qualquer aplicação invoque e responda a qualquer outra aplicação. Justamente, o que
garante a interoperabilidade dos Web Services é o uso deste protocolo padrão para o
envio e recebimento destas mensagens.
Segundo HENDRICKS et al. (2002), uma mensagem SOAP é um
documento XML quem pode conter, no máximo, três partes: o envelope SOAP
(obrigatório), o cabeçalho SOAP (opcional) e o corpo SOAP (obrigatório). Estas
partes da mensagem estão respectivamente descritas abaixo e relacionadas na figura 3:
• O envelope SOAP é o elemento que se localiza no topo da hierarquia da
mensagem SOAP e é responsável pela identificação da mesma.
• O cabeçalho SOAP é uma maneira flexível e geral de adicionar recursos
como autenticação, gerenciamento de transações e serviços de pagamento
a uma mensagem SOAP.
• O corpo SOAP é a parte principal da mensagem, e contém a carga útil, ou
seja, as informações de chamada e resposta.
13
Após a definição dos dados das mensagens com a XML, da descrição dos
serviços que receberão e processarão as mensagens através do WSDL e das formas de
envio e recebimento das mensagens pelo SOAP, tem-se a necessidade de divulgar ou
publicar o serviço oferecido e também de encontrar os serviços fornecidos por outros
Web Services que podem ser úteis. É esta a função do Universal Description,
Discovery, and Integration (UDDI).
O aplicativo que irá utilizar um Web Service necessita identificar ou
16
registro UDDI. Para que o cliente possa acessar um serviço Web é necessário efetuar
uma pesquisa do mesmo no registro UDDI. O cliente então obtém uma descrição dos
vários métodos e tipos de parâmetro do provedor de serviço na forma de WSDL. Por
fim, o cliente invoca o Web Services utilizando SOAP e o serviço envia uma resposta
SOAP de volta para o cliente, conforme representado na figura 7.
1
Features ou características de interface são partes detectáveis, locais da interface com algum significado.
20
2.5.3 Servlets
2.6 Segurança
2.7 Conclusão
Com este capítulo pode-se concluir que pelo uso de Web Services é possível
ter uma infinidade de aplicativos conectados em rede, mesmo rodando em plataformas
diferentes, fornecendo informações à todos os seus clientes, parceiros e funcionários.
Promove um significativo ganho de produtividade à medida que permitem que
27
Considerando que ter um computador hoje não é mais um luxo e sim uma
necessidade, o ramo da informática no dia a dia, vem se popularizando cada vez mais.
Com toda essa popularização, torna-se comum também o crescimento do mercado de
computadores, principalmente para vendas dos equipamentos em geral. Com este
mercado, é gerada uma grande concorrência entre as empresas do ramo, da qual o
consumidor pode tirar proveito e adquirir o melhor produto com o preço mais
acessível.
29
novos produtos ou peças, a alteração e atualização dos mesmos, seus valores, entre
outras características.
3.2.4 Interbase 6
3.3.1 Análise dos serviços a serem implementados com base no estudo de caso
seguintes passos:
1. Escolhendo a opção Tools e depois Server Manager, abre-se uma
nova janela. Clique em Add Server, seleciona o SJSAS 8.1 e depois
clica-se em Next;
2. Define-se a senha do servidor e Location (ou localização) que por
padrão segue o endereço “localhost:4848”, depois clica-se em
Finish.
Estando configurado o servidor a ser utilizado no desenvolvimento da
aplicação Web, para criar o serviço Web completo, foi criado primeiramente um novo
projeto.
1. Escolhendo a opção Files e depois New Project, No quadro
Categories, escolha Web e em Projects escolha Web Application e
após clica-se em Next, como mostra a figura 12;
2. Na próxima janela foi definido o nome e local (diretório) do projeto,
junto com seu respectivo servidor, depois clica-se em Finish.
à quem o acessa, uma total funcionalidade baseado no serviço desejado que deverá ser
corretamente programado ou implementado no Servlet.
...
public class ServletCliente extends HttpServlet {
...
out.println("<html>");
out.println("<body>");
String nome = req.getParameter( "nomeLocaliza" );
JOptionPane.showMessageDialog(null,"aff " + nome);
String driver = "jdbc:firebirdsql:";
String bancoDados = "//localhost:3050/C:/Documents and
Settings/bandit/Desktop/uniplac 2005/TCC/WS/BANDITWS.GDB";
String user = "SYSDBA";
String pass = "masterkey";
try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
Connection con = DriverManager.getConnection(driver +
bancoDados, user, pass);
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(
"SELECT * FROM tabelaws WHERE nome='" + nome +"';");
out.println("<h4> Estas são as características do produto
selecionado. </h4>" );
ResultSetMetaData rsmd = rs.getMetaData();
...
catch (SQLException e) { e.printStackTrace( out ); }
out.println( "<p><a href=\"index.jsp\">Voltar</a></p>" );
out.println("</body>");
out.println("</html>");
out.flush();
out.close();
} ...
FIGURA 19 - Parte de código Servlet desenvolvido.
42
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Acesso para o cliente fazer consultas dos produtos</title>
</head>
<body>
<hr> <h2>PORTAL DE ACESSO AO CLIENTE</h2> <hr>
<center>Consultar / Verificar Produtos</center> <hr>
<form method="POST" action="ServletCliente">
<p>Escolha o produto a ser consultado:</p>
<select name="nomeLocaliza" size="1">
<option value="">-- escolha --</option>
<option value="MONITORES">MONITORES</option>
<option value="PROCESSADORES">PROCESSADORES</option>
<option value="HDs">HDs(Disco Rigido)</option>
</select>
<p><input type="SUBMIT" value="Pesquisar"></p>
</form>
</body>
</html>
FIGURA 20 - Código do arquivo JSP que é o portal de acesso para o cliente.
Possui também uma função ativada por um botão que mostra o conteúdo completo dos
produtos cadastrados na tabela no banco de dados.
Juntamente a isso há também um arquivo JSP que é responsável pela
chamada dos Servlets e a estruturação da página Web conforme seu código
apresentado na figura 21.
...
public PecasDAO() {
Conexao.getCon();
stm = Conexao.getStm();
}
public void consultarID()
String instrucao = "SELECT VALOR FROM TABELAWS
WHERE ID = " + getID() + ";";
try {
ResultSet rs = stm.executeQuery(instrucao);
while (rs.next()) {
double valorPeca = rs.getDouble("VALOR");
setValor(valorPeca);
}
}
...
public void consultarNome() {
String instrucao = "SELECT t.VALOR FROM TABELAWS t
WHERE t.NOME = '" + getNome() + "';";
try {
ResultSet rs = stm.executeQuery(instrucao);
while (rs.next()) {
double valorPeca = rs.getDouble("VALOR");
setValor(valorPeca);
}
}
...
45
...
public class Conexao {
private static Connection con;
private static Statement stm;
public Conexao() {
}
public static String conectar() {
String driver = "jdbc:firebirdsql:";
String bancoDados = "//localhost:3050/C:/Documents and Settings
/bandit/Desktop/uniplac 2005/TCC/WS/BANDITWS.GDB";
String user = "SYSDBA";
String pass = "masterkey";
try {
Class.forName("org.firebirdsql.jdbc.FBDriver");
con = DriverManager.getConnection(driver + bancoDados, user, pass);
stm = con.createStatement();
return "sucesso";
}
...
FIGURA 23 - Parte do código do arquivo Conexao.java
package tcc.uniplac;
public class Produtos {
...
public void setID(int i) {
id = i; }
public void setNome(String n) {
nome = n; }
public void setDescricao(String d){
descricao = d; }
...
public int getID() {
return id; }
public String getNome() {
return nome; }
public String getDescricao(){
return descricao; }
...
FIGURA 24 - Fragmento de código do arquivo Produtos.java
package tcc.uniplac;
...
public boolean handleRequest(MessageContext context) {
try{
SOAPMessageContext smc = (SOAPMessageContext) context;
SOAPMessage msg = smc.getMessage();
SOAPPart sp = msg.getSOAPPart();
SOAPEnvelope se = sp.getEnvelope();
SOAPHeader shd = se.getHeader();
SOAPBody sb = se.getBody();
java.util.Iterator childElems = sb.getChildElements();
SOAPElement child;
StringBuffer message = new StringBuffer();
while (childElems.hasNext()) {
child = (SOAPElement) childElems.next();
message.append(new Date().toString() + "--");
formLogMessage(child, message);
}
System.out.println("Log message: " + message.toString());
...
return true;
}
public boolean handleResponse(MessageContext context) {
return true;
}
public boolean handleFault(MessageContext context) {
return true;
}
public void destroy(){ }
...
FIGURA 25 - Fragmento de código do arquivo Handler do serviço, chamado de
PecasWSLogger.java.
package tcc.uniplac;
47
import javax.swing.*;
package tcc.uniplac;
public interface testeBdWsSEI extends java.rmi.Remote {
public double buscaBD(int id) throws java.rmi.RemoteException;
public double buscaPrecoPorNome(java.lang.String nome) throws
java.rmi.RemoteException;
}
FIGURA 27 - Código completo do arquivo testeBdWsSEI.java
3.8 Conclusão
alteradas as informações das tabelas nos banco de dados das empresas, visando um
melhor entendimento contendo as telas resultantes do desenvolvimento do serviço. É
analisado também neste capítulo o estudo de caso do trabalho, onde envolve a
explicação completa do funcionamento do sistema, o banco de dados e suas tabelas
relacionadas, entre outras partes indispensáveis para o mesmo.
4 PUBLICAÇÃO DO SERVIÇO WEB
4.1.1 Discovery
serviço. Dados obtidos por Discovery direto são mais precisos e, portanto, confiáveis,
visto que a organização que provê a informação também opera o serviço na Web.
para organizar e descrever Web Services num local central. Os consumidores deste
serviço podem navegar neste registro para encontrar informações sobre negócios e
Web Services. Para postar as informações na UBR é necessário o registro com o
projeto UDDI. Entretanto qualquer individuo ou negócio pode fazer pesquisas na UBR
sem estar registrado.
Este tópico, de acordo com FERREIRA NETO (2004), aborda as APIs que
devem ser usadas em UDDI, para operações de publicação e busca de conteúdos de
registros. A UDDI API Specification expõe as APIs de publicação (publishing) e de
busca (inquiry). Tal especificação descreve os tópicos sobre as correspondentes às
APIs de publicação e busca de serviços.
59
4.5 Conclusão
FERREIRA NETO, P. A. XML Web Services. 2004.Um estudo completo sobre Web
Services, XML, UDDI, entre outros padrões. Disponível em:
<http://www.dei.unicap.br/~almir/seminarios/2004.1/xml_webservice/>. Acesso em:
02. nov. 2005.
GICO JUNIOR, T. I. O fim dos intermediários? 2002. Texto que apresenta uma idéia
e conteúdo basicamente sobre B2C e B2B. Disponível em: <http://www.alfa-
redi.org/rdi-articulo.shtml?x=1442>. Acesso em: 21 out. 2005.
KURNIAWAN, B. Java para a Web com Servlets, JSP e EJB. Rio de Janeiro:
Ciência Moderna, 2002. 808 p.
ROCHA, H. Como implementer Web Service com Java. 2002. Envolve um estudo
dos Web Services, registro dos mesmos e fala também dos arquivos WAR. Disponível
em: <http://www.argonavis.com.br/palestras/webservices/index.html>. Acesso em: 30
out. 2005.
ROCHA, H. Componentes Web J2EE. 2005. Arquivo que inclui uma demonstração
escrita e ilustrativa sobre os arquivos WAR. Disponível em:
<http://www.argonavis.com.br/cursos/java/j550/j550_5.pdf>. Acesso em: 18 out.
2005.
SILVA, W. NetBeans 4.1 Primeiros Passos. 2005. Apresenta um tipo de tutorial para
a utilização e configurações gerais da versão 4.1 da IDE NetBeans. Disponível em:
<http://www.guj.com.br/Java.tutorial.artigo.173.1.guj>. Acesso em: 04 set. 2005.
SIQUEIRA, F. Web Services. 2000. Arquivo que explica os Web Services e seus
padrões. Disponível em: <http://www.inf.ufsc.br/~frank/INE6514/WebServices-
Cor.pdf>. Acesso em: 30 out. 2005.
UGENIE PCS. JAR WAR EAR. 2005. Conceitos dos arquivos JARs, Wars e EARs.
Disponível em: <http://www.cezwright.com/tools/java/jar_war_ear.htm>. Acesso em:
23 out. 2005.
CARMO, D. Tutorial Criando Web Services com Apache Axis. Disponível em:
<http://www.conexaoJava.com.br/conexaoJava04/download/minicursos/Criando.um.
Web.Service-Conexao.Java.2004.pdf>. Acesso em: 28 mar. 2005.
CONSIST ApplinX e Web Services. Conceito básico do que são os Web Services.
Disponível em: <http://www.consist.com.br/brasil/applinx/applinx-web.htm>. Acesso
em: 27 mar. 2005.
SCAGLIA, A. Caminho sem volta. 2003. Artigo sobre a adoção dos Web Services no
mundo corporativo e também como usar o serviço. Disponível em:
<http://www.itweb.com.br/solutions/internet/internet/artigo.asp?id=34406#>. Acesso
em: 19 abr. 2005.
ANEXOS