A maior rede de estudos do Brasil

Grátis
142 pág.
Apostila Formação Programador Java

Pré-visualização | Página 20 de 25

Aplicada - Java 113 
 
SOCIESC – Sociedade Educacional de Santa Catarina 
 
 Uma aplicação para esse pacote é o uso em URLs. Os endereços de sites na 
Web utilizam um protocolo de comunicação, que você já conhece, chamado HTTP 
(Hypertext Transfer Protocol). O pacote java.net contém classes que foram 
construídas ao redor dos padrões HTTP. As classes essenciais para esta operação 
são a URL e a URLConnection. Basicamente, você obtém acesso ao arquivo que 
está sendo transferido através do protocolo e pode processar o seu conteúdo de 
acordo com a sua necessidade. Você também pode conectar-se a um servidor URL 
e executar uma série de operações para a criação e leitura de conteúdo no site. 
 
a) O caminho mais seguro para a comunicação com o servidor URL é pela classe 
URLConnection. Realizada a conexão, você poderá requisitar ou enviar 
informações, porém uma URLConnecetion é fechada automaticamente após a 
troca de dados ter sido concluída e você não pode manter uma conexão por um 
período longo. Dessa forma, você precisa restabelecer a comunicação com o 
servidor a cada necessidade de troca de informações. 
 
package examples.network; 
import java.net.*; 
import java.util.Date; 
 
public class ObjetosURL{ 
 public static void main(String[] args){ 
 try{ 
 URL sunPage = new 
 URL(“http://www.sun.com”); 
 URLConnection sunPageConn=sunPage.openConnection(); 
 Date lastModified=new Date(sunPageConn.getLastModified(); 
 System.out.println(sunPage+” foi modificada pela � 
 última vez em “+lastModified); 
 catch(Exception x){ 
 System.out.println(x); 
 } 
 } 
} 
 
 
3.2 Usando RMI 
 
 O RMI (Remote Method Invocation) é uma tecnologia utilizada pelos 
programadores para chamar diretamente métodos de objetos Java, que residem em 
Programação Aplicada - Java 114 
 
SOCIESC – Sociedade Educacional de Santa Catarina 
 
outros sistemas. Nessa abordagem, você não precisa estabelecer uma referência 
para um objeto que está em um sistema remoto. Ao invés disso, estabelece uma 
referência para um stub object, substituto local para o objeto remoto. O stub retorna 
um objeto local por um ORB (Object Request Broker), em resposta à sua solicitação 
para localizar um objeto. Um stub object possui os mesmos métodos suportados 
pelo objeto remoto, mas, ao invés de executar métodos independentemente, 
encaminha os parâmetros para o objeto remoto e passa de volta qualquer retorno de 
valor do método. A técnica utilizada para encaminhar os parâmetros para um objeto 
remoto é chamada de marshaling. Após o marshaling, os parâmetros são 
serializados em um arquivo de bytes e enviados para o sistema remoto, que possui o 
objeto, recebe o arquivo e utiliza a técnica chamada unmarshaling para 
desserializar o conteúdo dos parâmetros e, conseqüentemente, executar o método. 
Caso tenha valor de retorno, ele é enviado de volta ao processo original, realizando 
as mesmas operações no caminho inverso. Observe esse processo na figura 32. 
 
 
Figura 32 – Processo RMI 
 
a) Você pode utilizar uma combinação de classes servidora e cliente para colocar 
uma classe remota para funcionar. Essencialmente, o programa servidor criará 
um objeto remoto e irá registrá-lo como um serviço e o programa cliente irá 
localizar esses objetos, usando o serviço para obter as referências. 
 
 Por padrão, os objetos nomeados para os serviços são registrados e 
disponibilizados através de um serviço no servidor. O serviço de registro abre um 
canal de comunicação com os clientes através da porta 1099, padrão do RMI. 
Programação Aplicada - Java 115 
 
SOCIESC – Sociedade Educacional de Santa Catarina 
 
 Exemplo de uma classe servidora RMI: 
 
package examples.network; 
import java.rmi.Naming; 
import java.rmi.RMISecurityManager; 
/** Um programa server-side que cria e registra 
 * objetos StudentImpl com um registro RMI para uso pelos 
 * clientes 
 */ 
public class StudentEnrollment { 
 public static void main( String[] args ) { 
 if ( System.getSecurityManager() == null ) { 
 System.setSecurityManager( 
 new RMISecurityManager() ); 
 } 
 try { 
 StudentImpl[] students = { 
 new StudentImpl( 1001, "Elaine Jones" ), 
 new StudentImpl( 1002, "Patricia Hartswell" ), 
 new StudentImpl( 1003, "Darius Smith" ), 
 new StudentImpl( 1004, "Mary Bagshaw" ), 
 new StudentImpl( 1005, "Henry Miller" ) 
 }; 
 for ( int i = 0; i < students.length; i++ ) { 
 int id = students[i].getID(); 
 Naming.rebind( "Student" + id , students[i] ); 
 } 
 System.out.println( "Student objects bound." ); 
 } catch ( Exception x ) { 
 x.printStackTrace(); 
 } 
 } 
} 
 
 
Exemplo de uma classe cliente RMI usando a classe acima: 
package examples.network; 
import java.rmi.Naming; 
import java.rmi.RMISecurityManager; 
/** Um programa cliente para acessar e atualizar os 
Programação Aplicada - Java 116 
 
SOCIESC – Sociedade Educacional de Santa Catarina 
 
 * objetos no servidor 
 */ 
public class StudentClient { 
 private static final String HOST_NAME = "localhost"; 
 public static void main( String[] args ) { 
 if ( System.getSecurityManager() == null ) { 
 System.setSecurityManager( 
 new RMISecurityManager() ); 
 } 
 try { 
 Student s1001 
 = (Student) Naming.lookup( "//" + HOST_NAME 
 + "/Student1001" ); 
 Student s1005 
 = (Student) Naming.lookup( "//" + HOST_NAME 
 + "/Student1005" ); 
 System.out.println( s1001.getName() ); 
 System.out.println( s1005.getName() ); 
 System.out.println( s1001.getCredits() ); 
 s1001.addCredits( 3 ); 
 s1001.setName( "Elaine Goldman" ); 
 System.out.println( s1001.getName() ); 
 System.out.println( s1001.getCredits() ); 
 } catch ( Exception x ) { 
 x.printStackTrace(); 
 } 
 } 
} 
 
 
3.3 Java Server Pages e Servlets 
 
a) A Internet e a linguagem Java já estão muito maduras em seu relacionamento. 
A Internet já é uma realidade para a disponibilização de informações mundiais, 
através de um mecanismos simples e acessível à grande maioria das pessoas. 
Isso fez com que ocorresse uma mudança fundamental na forma como os 
programadores constróem aplicações, pois agora temos uma nova plataforma 
para o desenvolvimento das aplicações e com muitas tecnologias envolvidas. Isto 
faz com que o progamador Java precise conhecer um amplo conjunto de 
conhecimentos para desempenhar com competência a construção de aplicações 
para a Web. Neste tópico vamos falar exclusivamente das duas tecnologias Java 
que suportam o desenvolvimento Web: páginas JSP e Servlets. 
Programação Aplicada - Java 117 
 
SOCIESC – Sociedade Educacional de Santa Catarina 
 
3.4 O que é um servlet? 
 
Servlets são classes Java, desenvolvidas de acordo com uma estrutura bem 
definida, e que podem tratar requisições recebidas de clientes, quando instaladas 
junto a um Servidor que implemente um Servlet Container (um servidor que permita 
a execução de Servlets, muitas vezes chamado de Servidor de Aplicações Java) 
(figura 33). 
Veja um exemplo de um Servlet: 
 
import java.io.*; 
import java.util.Date; 
import javax.servlet.*; 
import javax.servlet.http.*; 
public class TodayServlet extends HttpServlet { 
 public void doGet( HttpServletRequest request, 
 HttpServletResponse response ) 
 throws IOException, ServletException { 
 response.setContentType(