Download Java 2 Platform, Enterprise Edition (J2EE)

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Java™ 2 Platform,
Enterprise Edition (J2EE)
Bruno Souza
Java Technologist, Sun Microsystems, Inc.
J1-680, Hapner/Shannon
1
Contents
• The Java™ 2 Platform, Enterprise Edition
(J2EE)
• J2EE Environment
• APM and key APM questions
• Application Scenarios and the
Sample Application
• Deployment and Security
• Resources
J1-677, Kassem
2
A Short History of
Java Enterprise Technology
J1-680, Hapner/Shannon
3
The Java™ Platform
Where Have We Been?
Where Are We Going?
Year 1
• JDK All
Things to
Everyone
J1-680, Hapner/Shannon
Year 2
• JDK “All
Things to the
Enterprise”
• Early
Development
of Consumer
Java
• Early
Development
of “Enterprise”
APIs”
Year 3
• Micro
Edition
• Standard
Edition
• Enterprise
Edition
4
Java 2 Platforms
Java Technology
Enabled Devices
J1-680, Hapner/Shannon
Java Technology
Enabled Desktop
Workgroup
Server
High-End
Server
5
Why another Java™ 2 Platform?
J1-680, Hapner/Shannon
6
The Global Enterprise
D
EIS Tier
Middle-Tiers
Clients
J1-680, Hapner/Shannon
D
D
ERP Systems
DBMSs
Enterprise
Services
Device
7
Enterprise Services Require
• Concurrency
(multi user)
• Scalability
• Administration
• Consistency
(Transactions)
• EIS Integration
• Security
• Distribution
• Availability
J1-680, Hapner/Shannon
8
The Java™ 2 Platform,
Enterprise Edition
• Develop
– With the J2EE App Model
• Deploy
– With the J2EE App unit
• Run
– On the J2EE Platform
J1-680, Hapner/Shannon
9
J2EE Platform
J1-680, Hapner/Shannon
10
What is the purpose of J2EE
Containers?
J1-680, Hapner/Shannon
11
J2EE Platform
HTTP/
HTTPS
JavaMail
JAF
JDBC
JMS
JAF
JNDI
JavaMail
JTA
JMS
App Client
Container
App
Client
JNDI
J2SE
EJB
RMI
RMI/IIOP
Servlet
JSP
JDBC
HTTP/
HTTPS
EJB Container
RMI/IIOP
Applet
Web Container
JTA
Applet Container
J2SE
J2SE
JDBC
RMI/IIOP
JMS
JNDI
RMI
J2SE
Database
J1-680, Hapner/Shannon
12
Containers and Components
• The container is the car
• The component is the driver
• The container is the platform
• The component is your application
J1-680, Hapner/Shannon
13
J2EE Containers
• Containers do their work invisibly
– No complicated APIs
– They control by interposition
• Containers implement J2EE
– Look the same to components
– Have great freedom to innovate
J1-680, Hapner/Shannon
14
J2EE Containers Handle
• Concurrency
(multi user)
• Scalability
• Administration
• Consistency
(Transactions)
• Integration
• Security
• Distribution
• Availability
J1-680, Hapner/Shannon
15
J2EE Components Handle
• Presentation
• Business logic
• Data access
J1-680, Hapner/Shannon
16
Container Perspectives
• To a J2EE vendor
– It is their product
• To a component developer
– It is a standard app model
• To an app assembler
– It is a standard app package
• To an executing component
– It is god
J1-680, Hapner/Shannon
17
Why Does J2EE Focus on
Deployment?
J1-680, Hapner/Shannon
18
Application Packaging
EJB
EJB
Module
EJB
1
1
DD
DD
Web Client
Module
2
APP
DD
EJB
WEB
2
WEB
DD
DD
Application
Client Module
3
DD
J1-680, Hapner/Shannon
3
Deployment
Tool
DD
19
Application Life Cycle
Creation
Created by
Component
Developer
Assembly
Assembled
J2EE Modules and Augmented
by Application
Assembler
Deployment
J2EE APP
Processed
by Deployer
Deploy
J2EE Container
Enterprise
Components
J1-680, Hapner/Shannon
20
The Deployer
• Is an expert in the operational
environment
– Familiar with local security practices
– Familiar with local EIS configuration
– Familiar with local containers and their apps
• Uses J2EE platform product tools
J1-680, Hapner/Shannon
21
Deployment Summary
• Apps may be written without knowledge
of the operational environment
• Deployment Descriptor communicates
app’s needs
• A key interface between application
developer and platform
J1-680, Hapner/Shannon
25
What Exactly Is in J2EE?
J1-680, Hapner/Shannon
26
J2EE API Summary
• J2SE 1.2
• JNDI 1.2
• JDBC™ 2.0
• JTA 1.0
• RMI/IIOP 1.0
• JMS 1.0
• EJB 1.1
• JavaMail™ 1.1
• Servlet 2.2
• JAF 1.0
• JSP 1.1
J1-680, Hapner/Shannon
27
J2EE Standards
• TCP/IP
• HTTP 1.0
• HTML 3.2
• SSL 3.0
• IIOP 1.0
J1-680, Hapner/Shannon
28
The Java™ 2 Platform,
Enterprise Edition
• Platform Specification
– Defines J2EE requirements
• Compatibility Test Suite
– Validates J2EE platform compatibility
• Reference Implementation
– Operational J2EE platform
• Application Programming Model
– Describes how to build J2EE applications
J1-680, Hapner/Shannon
29
Java™ 2 Platform, Enterprise Edition
Application Programming Model (APM)
• Organized set of design patterns,
templates and architectural principles
– Focus is on design of manageable, deployable
and maintainable J2EE applications
– Results in faster product delivery time to market
of enterprise solutions
• Recommends how the J2EE specifications
should be applied to application domains
J1-677, Kassem
3
Some Key APM Questions
• Choose Servlets or JavaServer Pages™
technology (JSP)?
• Access EIS Resources via Enterprise
JavaBeans™ technology (EJB) server
or Directly from JSP?
• Session Beans or Entity Beans?
• Distributed transactions or local
transactions?
• How to exchange Data with
External Systems?
J1-677, Kassem
6
The J2EE Environment
Enabling End-to-end Solutions
Firewall
Client
Application
Server
Client
Enterprise
JavaBean
Enterprise
Information
Systems (EIS):
Enterprise
JavaBean
Relational-Database,
Legacy Applications,
ERP Systems
Client
Client
Web Server
JSP, Servlet,
HTML, XML
Client
Other Services:
JNDI, JMS,
Java Mail
Client Tier
J1-677, Kassem
Middle Tier
EIS Tier
7
Web Access
• Exposes application logic to web client(s)
as coarse grained service(s):
– Responsible for handling “user” input/application
presentation
– Named via URI
– Modeled as HTML (or XML)
• Comprised of dynamic and static content
– Java Server Pages for dynamic content:
• Higher level of abstraction than Servlets
• Easier to generate HTML
(and XML in future)
J1-677, Kassem
8
“Other” Clients
• EJB from another “application”:
– RMI/IIOP now, JMS later
• Standalone “clients”:
– CORBA client:
• IIOP access direct to application logic
– Java technology client:
• RMI/IIOP or JMS access
– Desktop productivity application:
• MS desktop integration solution via
plug-in, JRE and RMI/IIOP
J1-677, Kassem
9
Application Logic
• Modeled using EJBs:
– SessionBean (stateless & stateful)
– EntityBean (CMP or BMP)
– Componentize:
• Workflow, processes, business rules and entities…
• Fine grain imperative interface contract
• External resources are logically
named internally
– Customized via deployment descriptor
– Resolved by deployer at deployment time
J1-677, Kassem
11
Enterprise Information
Services (EIS)
• Integration is achieved by either:
– Directly using platform API such as:
• JDBC™
• JMS
• Java Naming and Directory Interface™ (JNDI)
– Or via Connector(s):
• Connector is:
– Resource adapter, Access Bean,
integration tool(s)
• Ubiquitous Connector APIs for specific
EIS products
J1-677, Kassem
12
EJB Components
JNDI
EJB Container
Client
Entity EJP
Data Access
Bean
Connector
EIS
Session EJP
Data Access
Bean
Connector
EIS
HTTP(S) Service
Servlet/JSP
Middle Tier
J1-677, Kassem
13
Application Scenarios
Web Server
App. Server
6
7
1
Web Server
Browser
EIS
Resources
App. Server
Stand-alone
5
2
3
J1-677, Kassem
4
14
Core Application Scenarios
1
• n-tier Web Access
– HTML, XML, HTTP client
– JSP/Servlets, RMI/IIOP
– EJBs, JDBC (Connectors)
3
Sample
App.
• n-tier Intranet Access
– EJB Client, EJB Sever
5
• 2-tier Java Client
– JSP/Servlets and JDBC
7
• B2B Enterprise Transactions
– EJBs, JMS and XML
J1-677, Kassem
15
Sample Application
High Level Requirements
• Must offer Web Presence
• Must be Robust and Scalable
• Must leverage existing EIS resources
• Must utilize core competencies of diverse
development teams
• Must facilitate B2B transactions
• Get it done yesterday!
J1-677, Kassem
16
Sample Application
High Level Technical Decisions
• Client tier
– Chose HTML Clients for End-User Web Access
– Chose XML for selective Data externalization
• Web Server tier
– Chose JSP/Servlets to be WS neutral
• App Server tier
– Chose EJB’s to be AS neutral
– JDBC Data Access Beans to encapsulate
EIS access
– Chose to optionally support distributed
transactions
J1-677, Kassem
17
SA—Scenario
• Web-based browsing of a product catalog
• Creation and maintenance of a
shopping cart
• User account creation
• Placing orders
• Secure order processing
– B2B transactions
– Externalization of order data
(expressed in XML)
– Order confirmation using e-mail
J1-677, Kassem
19
SA—Activity Diagram
Customer
Sales
Warehouse
View Catalog
Add to Cart
Select Account
Process Order
Pull Stock
Ship Order
Receive Order
Bill Customer
Pay Bill
Close Order
J1-677, Kassem
20
SA—DB Schema
table
table
product
...)
table
...)
lineitem
(
orderid
linenum
itemid
table
orders
(
orderid
userid
...)
...)
table
category
(
suppid
(
productid
category
table
supplier
attrdesc
(
attrcode
(
...)
catid
...)
table
account
(
userid
table
inventoryitem
itemid
productid
supplier
...)
J1-677, Kassem
...)
(
table
orderstatus
(
orderid
linenum
...)
21
SA—Architecture
Session Beans
Entity Beans
Access Beans
Tables
Physical
DBs
Account
UserValidatorEJB
AccountEJB
AccountDAB
Orders
MailerEJB
OrderEJB
OrderDAB
OrderStatus
db1
ShoppingCartEJB
Line item
EStoreKeeperEJB
CatalogDAB
J1-677, Kassem
db2
Product
CatalogEJB
InventoryEJB
Category
InventoryDAB
Inventory
22
SA—JSP Usage
<html>
<jsp:request include="/banner.html"/>
<form action="validatenewuseraccount.jsp" name="login">
<table border ="0">
<tr><td>User ID:</td>
<td align="left"><input type="text" size="15" name="user_name"></td>
</tr>
<tr><td>Password:</td>
<td align="left"><input type="password" size="15" name =
"password"></td>
</tr>
…..
</table>
</html>
J1-677, Kassem
23
SA—JSP Usage
<html>
…
<% if (formValid){ %>
<jsp:useBean id="useraccount"
class="com.sunw.estore.account.jspbeans.UserAccountJSPBean"
scope="session" />
<jsp:setProperty name="useraccount" property="init" value="<%= session %>"
/>
<jsp:setProperty name="useraccount" property="billingLastName"
param="last_name" />
...
<% } else { %>
...
<% } %>
</html>
J1-677, Kassem
24
SA—Controller Interface
public interface EStorekeeper extends EJBObject {
public Catalog
getCatalog()
throws RemoteException;
public ShoppingCart getShoppingCart() throws RemoteException;
public Credential
getCredential()
throws RemoteException;
public Account
getAccount()
throws RemoteException;
public Enumeration getOrders()
throws RemoteException,
FinderException;
public void handleEvent(EStoreEvent se) throws RemoteException;
}
J1-677, Kassem
25
SA—Controller Implementation
public class EStorekeeperEJB implements SessionBean {
public void ejbCreate() throws RemoteException {
sm = new StateMachine(this);
}
public Catalog getCatalog() throws RemoteException {
Locate Catalog
if (catalog == null) {
EJB’s H/I using JNDI
try {
Context initial = new InitialContext();
Object objref = initial.lookup (EJBUtil.jndiNameOfCatalogHome);
CatalogHome catalogHome = (CatalogHome)
PortableRemoteObject.narrow(objref, CatalogHome.class);
catalog = catalogHome.create();
} catch (NamingException ne) {
...
}
return catalog;
}
J1-677, Kassem
26
Application Model
• Makes Recommendations across all tiers
–
–
–
–
–
–
–
Client
Middle-tier (includes Web server and EJB)
Data access
Messaging
External application integration
Communication protocols
Deployment file formats
• Results in Faster product delivery
J1-677, Kassem
31
J2EE Resources
• White paper:
– http://java.sun.com/j2ee
J1-677, Kassem
32