25 de novembro de 2004tm 1 j2ee apresentado por nuno nunes
TRANSCRIPT
![Page 1: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/1.jpg)
25 de Novembro de 2004 TM 1
J2EE
Apresentado por Nuno Nunes
![Page 2: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/2.jpg)
TM 225 de Novembro de 2004
J2EE
Tecnologia Java, “A visão” O J2EE Resumo da tecnologia J2EE
Os componentes do J2EE Do lado do cliente... Do lado do servidor – Tecnologias de apresentação Do lado do servidor – Lógica do negócio Integração
J2EE versus .net
![Page 3: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/3.jpg)
TM 325 de Novembro de 2004
Tecnologia Java, “A visão”
J2SE – Java Standard Edition J2ME – Java Micro Edition J2EE – Java Enterprise Edition
![Page 4: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/4.jpg)
TM 425 de Novembro de 2004
Tecnologia Java, “A visão”
J2SE J2EE
![Page 5: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/5.jpg)
TM 525 de Novembro de 2004
Tecnologia Java, “A visão”
É importante perceber...
...O J2EE não é um produto, mas uma especificação....
![Page 6: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/6.jpg)
TM 625 de Novembro de 2004
Tecnologia Java, “A visão”J2EE
ApresentaçãoLógica donegócio
Recursos
O J2EE é um enriquecimento do J2SE visando oferecer serviços complementares, importantes, nos ambientes aplicacionais existentes actualmente
Ex.: Servlets, JSP Ex.: Suporte a transacções
Ex.: jdbc
web
cliente J2EE Server SGBD’s, etc.
![Page 7: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/7.jpg)
TM 725 de Novembro de 2004
Tecnologia Java, “A visão”Resumo (APIs J2EE v1.4) Enterprise Java Beans Java Servlet / Java Server Pages JMS Java Transaccion API JavaMail Java API for XML processing (JAXP) Java API – XML Based RPC SOAP with Atachments API JAVA API for XML Registries J2EE connector Architecture JDBC API Java Naming and Directory Interface Java Authentication and Authorization service
![Page 8: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/8.jpg)
TM 825 de Novembro de 2004
Os componentes do J2EEDo lado do cliente...
Interacção através de uma aplicação cliente Interacção via equipamentos móveis
(telemóveis, PDA’s) Interacção via Web
![Page 9: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/9.jpg)
TM 925 de Novembro de 2004
Os componentes do J2EEDo lado do servidor - Tecnologias de apresentação
Porquê dar importância à Web? Os web browsers são ubíquos É muito simples fazer o upgrade de uma aplicação Os servidores web são extremamente escaláveis
As tecnologias existentes (CGI’s, ASP / PHP, etc.) não chegam? São computacionalmente dispendiosos São “sujos” na forma com lidam com os dados
(misturam apresentação com lógica do negócio)
![Page 10: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/10.jpg)
TM 1025 de Novembro de 2004
Os componentes do J2EEDo lado do servidor - Tecnologias de apresentação
A resposta apresentada no J2EE é constítuida por 2 tecnologias distintas: Servlets JSP’s
Web Container
s1
jsp1
s2
get s1
get s1
get jsp1
O WebContainer gere:•Segurança•Gestão de sessões•Gestão de concorrência•Error Handling•Gere distribuição•...
O WebContainer gere:•Segurança•Gestão de sessões•Gestão de concorrência•Error Handling•Gere distribuição•...
![Page 11: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/11.jpg)
TM 1125 de Novembro de 2004
Os componentes do J2EEDo lado do servidor - Tecnologias de apresentação
//Servlet HelloWorld
import java.io.*;import javax.servlet.*;import javax.servlet.http.*;
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
response.setContentType("text/html");PrintWriter out = response.getWriter();out.println("<html>"); out.println("<body>"); out.println("<head>"); out.println("<title>HelloWorld!</title>");
out.println("</head>"); out.println("<body>");out.println("<h1>Hello World!</h1>");out.println("</body>");out.println("</html>");
} }
![Page 12: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/12.jpg)
TM 1225 de Novembro de 2004
Os componentes do J2EEDo lado do servidor - Tecnologias de apresentação
<HTML><HEAD>
<TITLE>hello jsp</TITLE><%! String message = "Hello, World, from JSP"; %>
</HEAD><BODY><h2><font color="#AA0000"><%= message%></font></h2> <h3>
<font color="#AA0000"><%= new java.util.Date() %>
</font></h3></BODY></HTML>
![Page 13: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/13.jpg)
TM 1325 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
Lógica do negócioEJB (Enterprise Java Beans)
Gestão de transacções Segurança Gestão de recursos
![Page 14: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/14.jpg)
TM 1425 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
Enterprise Java BeansEnterprise Java Beans
SessãoSessão
EntidadeEntidade
“Message Driven”“Message Driven”
• sem estado• com estado
•Persistentes• Gerida pelo próprio bean• Gerida pelo container
síncronos
assíncrono
![Page 15: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/15.jpg)
TM 1525 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
Session beans (sessão) Representar processos de negócio
Ex.: como receber um pagamento (interagir com)
![Page 16: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/16.jpg)
TM 1625 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
Com estado ou sem estado? Stateless session beans
Cada pedido é independente
É por inerência mais escalável
Statefull session beans Usado qundo é necessário
responder a sequências de pedidos
Cada session bean, apenas responde a um cliente durante uma sessão (implica que o cliente informe quando termina a sessão)
![Page 17: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/17.jpg)
TM 1725 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
Entity beans (entidades) Representar os dados do negócio (ex.: factura, cliente, items em stock)
Porquê os Entity beans, não podemos usar um SGBD? A ideia por trás dos Entity beans é simular um sistema “perfeito”
Fundamentalmente esconde os SGBD’s, O sistema nunca perde dados e simula memória infinita O programador só tem de usar dados em memória Encontra-se sob um ambiente transaccional
Os beneficios são: O “EJB container” controla todo o ambiente transaccional O “EJB container” pode tratar de toda a preservação de dados no SGBD O SGBD utilizado é completamente transparente para o programador /
portabilidade no meio de armazenamento Optimizações geridas pelo EJB
![Page 18: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/18.jpg)
TM 1825 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
![Page 19: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/19.jpg)
TM 1925 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
Message driven beanCriados para responder a sistemas legadosCriados para responder a sistemas
assíncronos (ex.: JMS) Respondem a mensagens/não gera mensagens
![Page 20: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/20.jpg)
TM 2025 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio[user@host app]# mkdir org[user@host app]# mkdir org/acme
HelloBean.java
package org.acme;
import java.rmi.RemoteException;import javax.ejb.*;
public class HelloBean implements SessionBean { private SessionContext sessionContext; public void ejbCreate() { } public void ejbRemove() { } public void ejbActivate() { } public void ejbPassivate() { } public void setSessionContext(SessionContext sessionContext) { this.sessionContext = sessionContext; } public String sayHello() throws java.rmi.RemoteException { return "Hello World!!!!!"; }}
![Page 21: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/21.jpg)
TM 2125 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
HelloHome.java
package org.acme;
import java.rmi.*;import javax.ejb.*;import java.util.*;
public interface HelloHome extends EJBHome { public HelloObject create() throws RemoteException,
CreateException;}
![Page 22: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/22.jpg)
TM 2225 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
HelloObject.java
package org.acme;
import java.rmi.*;import javax.ejb.*;import java.util.*;
public interface HelloObject extends EJBObject { public String sayHello() throws RemoteException;}
![Page 23: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/23.jpg)
TM 2325 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócioMETA-INF\ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?><ejb-jar> <enterprise-beans> <session> <ejb-name>Hello</ejb-name> <home>org.acme.HelloHome</home> <remote>org.acme.HelloObject</remote> <ejb-class>org.acme.HelloBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> <assembly-descriptor> <container-transaction> <method> <ejb-name>Hello</ejb-name> <method-name>*</method-name> </method> <trans-attribute>Required</trans-attribute> </container-transaction> </assembly-descriptor></ejb-jar>
![Page 24: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/24.jpg)
TM 2425 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócioHelloWorld.java
package org.acme;
import javax.rmi.*;import javax.naming.*;import java.util.*;
public class HelloWorld {
public static void main( String args[]) { try{ Properties p = new Properties(); //The JNDI properties you set depend //on which server you are using. //These properties are for the Remote Server. p.put("java.naming.factory.initial", "org.openejb.client.RemoteInitialContextFactory"); p.put("java.naming.provider.url", "127.0.0.1:4201"); p.put("java.naming.security.principal", "myuser"); p.put("java.naming.security.credentials", "mypass"); //Now use those properties to create //a JNDI InitialContext with the server. InitialContext ctx = new InitialContext( p );
![Page 25: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/25.jpg)
TM 2525 de Novembro de 2004
Os componentes do J2EEDo lado do servidor – Lógica de negócio
//Lookup the bean using it's deployment id Object obj = ctx.lookup("/Hello"); //Be good and use RMI remote object narrowing //as required by the EJB specification. HelloHome ejbHome = (HelloHome) PortableRemoteObject.narrow(obj,HelloHome.class);
//Use the HelloHome to create a HelloObject HelloObject ejbObject = ejbHome.create(); //The part we've all been wainting for... String message = ejbObject.sayHello();
//A drum roll please. System.out.println( message ); } catch (Exception e){ e.printStackTrace(); } }}
![Page 26: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/26.jpg)
TM 2625 de Novembro de 2004
J2EE, Integração
Como integrar com um SGBD? Como integrar com um sistema legado? Como integrar sistemas entre negócios
(B2B)
![Page 27: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/27.jpg)
TM 2725 de Novembro de 2004
J2EE, Integração
Como integrar com SGBD’sJDBC
API para Integrar com SGBD’s
JTA API para gerir transacções
![Page 28: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/28.jpg)
TM 2825 de Novembro de 2004
J2EE, Integração
Sistemas legadosJava Connector Integration
Permite fazer chamadas a procedimentos a aplicações noutras linguagens (tipicamente C ou Cobol)
JNI (Java Connector) Especifica uma interface. É possível comprar
adaptadores para integrar com outras aplicaçõesCORBA
![Page 29: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/29.jpg)
TM 2925 de Novembro de 2004
J2EE, Integração
Business integration (B2B)WebServices, RMI ou CORBA
![Page 30: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/30.jpg)
TM 3025 de Novembro de 2004
J2EE, IntegraçãoWebServices
Processador de XML via SAX ou DOM
Composição e Parsing de mensagens SOAP
Interface com o sistema UDDI(publicar e pesquisar webservices)
“Compile time utilities”Cria os stubs usados pelos webservices
![Page 31: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/31.jpg)
TM 3125 de Novembro de 2004
J2EE versus .netJ2EE .NET
Especificação ou produto
Especificação Produto
Portabilidade do vendedor
30 vendedores Microsoft ?
Portabilidade no S.O.
Qualquer S.O. que suporte a JVM
Apenas em O.S. Microsoft ?
Linguagens JAVA C#, VB, VC++, etc
![Page 32: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/32.jpg)
TM 3225 de Novembro de 2004
J2EE versus .net
![Page 33: 25 de Novembro de 2004TM 1 J2EE Apresentado por Nuno Nunes](https://reader035.vdocuments.pub/reader035/viewer/2022062418/552fc15f497959413d8e6a48/html5/thumbnails/33.jpg)
TM 3325 de Novembro de 2004
J2EE versus .netJ2EE .net
Acesso a base de dados JDBC ADO.net
Serviços de directoria JNDI ADO.net
XML Parsing JAXP (SAX & DOM) MSXML (SAX & DOM)
WebServices JAXM (SOAP, ebXML) JAXR (WSDL, UDDI) JAX-RPC
SOAP, WSDL, UDDI
Integração com software legado
JNI, CORBA, JMS e Java Connector Architecture
MS Host Integration Service
Segurança J2SE (core security), JAAS, J2EE – specific
Passport .net