Transcript j2ee14
Client/Server Distributed Systems
240-322 Semester 1, 2005-2006
14. J2EE and Web
Services
Objectives
– introduce the J2EE specification, and the
J2EE SDK
– other approaches: Struts, Spring
– Web Services (XML-RPC)
240-322 CliServ. J2EE/14
1
Contents
1.
2.
3.
4.
5.
6.
7.
8.
What is J2EE?
J2EE Overview
Some Services Explained
Using Sun's J2EE SDK
More Information on J2EE
Struts
Spring
Web Services
240-322 CliServ. J2EE/14
2
1. What is J2EE?
J2EE
is the Java 2 Enterprise Edition
J2EE
helps with the construction of Webbased client/server applications
– it supports simplified networking, concurrency,
transactions, easy access to databases, etc.
240-322 CliServ. J2EE/14
continued
3
J2EE
emphasies n-tier client/server design.
Application
development uses objects,
beans, and components.
J2EE
is not language neutral
– tightly connected to Java
240-322 CliServ. J2EE/14
continued
4
Sun
initially released J2EE as a specification,
which has been implemented by different
vendors
– e.g Tomcat from the Jakarta Project
http://jakarta.apache.org/tomcat/
– e.g. JRun from Macromedia (Allaire)
http://www.macromedia.com/software/jrun
The Sun implementation:
– http://java.sun.com/j2ee/
240-322 CliServ. J2EE/14
5
2. J2EE Overview
presentation logic
applet/
appl.
servlets
client
deployment
description
JSPs
Tag
libraries
Web container
JDBC
JavaMail
RMI
IIOP
app.
CORBA
EJB container
business
logic
JNDI
Session Entity
beans beans
network
240-322 CliServ. J2EE/14
server-side application
JMS
6
A server-side
application usually has two
parts:
– presentation logic in the Web container
to
create HTML pages (and other formats)
– business logic in the EJB container
to
240-322 CliServ. J2EE/14
handle server-side processing
7
3. Some Service Explained
Servlets
– a servlet is a Java object on the server side that
can repond to an HTTP message (GET, POST,
etc) by calling a method
– the results of the method is sent back to the
client as a Web page
240-322 CliServ. J2EE/14
continued
8
JSP (Java
Server Pages)
– JSPs dynamically generate Web pages by using
servlets
EJB
(Enterprise Java Beans)
– Java objects with predefined methods for
simplifying network and inter-object
communication
240-322 CliServ. J2EE/14
continued
9
Java
IDL (Interface Definition Lang.)
– a language which allows Java objects to interact
with CORBA objects
RMI-IIOP
– a bridge between Java’s RMI and the
communication protocol used by CORBA over
the Internet (IIOP)
240-322 CliServ. J2EE/14
continued
10
JTA (Java
Transaction API)
– JTA lets a Java object control transactions
(e.g. bank account updates)
JMS
(Java Message Service)
– JMS lets a Java object asynchronously send
messages to other objects
240-322 CliServ. J2EE/14
continued
11
JNDI
(Java Naming & Directory Interface)
– JNDI lets a Java object find other objects (over
the network) by using their names
240-322 CliServ. J2EE/14
continued
12
The
deployment description is a text file
containing various information on how to
configure/initialise the server-side
application
– the information is written in XML format
240-322 CliServ. J2EE/14
13
4. Using Sun's J2EE SDK
J2EE
SDK is Sun's implementation of the
J2EE specification.
The
latest version:
– Java 2 SDK, Enterprise Edition, v.1.4:
http://java.sun.com/j2ee/1.4/
download.html
– also obtain the tutorial for v.1.4 from the page
240-322 CliServ. J2EE/14
continued
14
This
release is available for the following
platforms:
– Solaris, Windows 2000 Prof. Ed.,
Windows XP Prof. Ed., Linux Redhat
The API
documentation is packaged with
the download bundle.
240-322 CliServ. J2EE/14
continued
15
To
download J2EE SDK v.1.4, you have to
register as a member of the Java Developer
Connection
– membership is free
Easier to get it from Aj. Somchai's site:
– http://java.coe.psu.ac.th/
RefImp.html#J2EE
– 102 Mb for everything
240-322 CliServ. J2EE/14
16
Sun's J2EE SDK as a Diagram
240-322 CliServ. J2EE/14
17
Java Server Faces (JSF)
An API
for building Web-based client-side
user interfaces from components.
– communication to the server side is built-in
– the components are extensible
Simplifies
the design and implementation of
the presentation level of client/server
applications.
240-322 CliServ. J2EE/14
continued
18
Coding
is based on listening for events.
JSF
1.2 will be integrated into the next
release of J2EE (version 1.5, renamed to
5.0)
240-322 CliServ. J2EE/14
19
JSTL
The
JavaServer Pages Standard Tag Library
– structural tasks, such as iteration and
conditionals
– tags for manipulating XML documents
– internationalization tags
– SQL tags
– a framework for integrating existing custom
tags with JSTL
240-322 CliServ. J2EE/14
20
Ant
The
compilation of the examples in the
J2EE tutorial use Ant, a Java-based make
utility, found at:
– http://jakarta.apache.org/ant/
Ant v.1.6.2 (and before) are available here
– http://java.coe.psu.ac.th/
OpenSource.html#Ant
240-322 CliServ. J2EE/14
21
5. More Information on J2EE
J2EE main site:
– http://java.sun.com/j2ee/
– it has links to pages dedicated to parts of
J2EE (e.g. EJB, JSP, servlets, XML)
Aj. Somchai's J2EE books section:
– http://java.coe.psu.ac.th/
ForMember/Books.html#J2EE
240-322 CliServ. J2EE/14
22
6. Struts
An
controller
notifies
model
view
updates
open source framework
– intended to be a simpler replacement for J2EE
– many components of J2EE can be used
– http://struts.apache.org/
Utilises
the Model-View-Controller (MVC)
design style for applications.
240-322 CliServ. J2EE/14
continued
23
Model
tools:
– JDBC, EJB, Hibernate
View
tools:
– JSP, XML/XSLT, JSF
Controller
tools:
– servlets, tag libraries, specific to Struts
Available
from:
– http://struts.apache.org/
240-322 CliServ. J2EE/14
24
7. Spring
Another
open source framework
– intended to be a simpler replacement for J2EE
– many components of J2EE can be used
– http://www.springframework.org/
Utilises
the Inversion of Control
(IoC)design pattern
– the framework does more (manages more) , the
programmer codes less
240-322 CliServ. J2EE/14
continued
25
The
core of Spring's design is the
org.springframework.beans package,
designed for working with Java Beans
– objects utilise standard get/set methods to
simplify communication
A Spring
bean factory enables objects to be
retrieved by name, and manages
relationships between objects.
240-322 CliServ. J2EE/14
continued
26
Configuration
details are specified using
XML and method prototypes.
Unit
testing is simpler.
Primary
use is to replace or simplify EJB
applications.
240-322 CliServ. J2EE/14
27
8. Web Services
A collection
of XML-based APIs for
allowing Web-based (J2EE) applications
to:
–
–
–
–
exchanging messages
describing their services/capabilities
publish their Web service description(s)
find other Web service descriptions
240-322 CliServ. J2EE/14
28
8.1. Web Service Architecture
240-322 CliServ. J2EE/14
29
8.2. Some Web Services APIs
Simple
Object Access Protocol (SOAP)
– XML-based messaging protocol
Web
Services Description Language (WSDL)
– XML language for describing Web services and
their capabilities
Java API
for XML Registries (JAXR)
– language for building XML directories of
information about Web services
240-322 CliServ. J2EE/14
continued
30
Java API
for XML-based RPC (JAX-RPC)
– language for converting remote procedure call
data into XML
Java API
240-322 CliServ. J2EE/14
for XML Messaging (JAXM)
31
8.3. Focus on XML-RPC
An
implementation of RPC which uses
HTTP and XML to support remote method
calls
– there are implementations for Java, C++, PHP,
etc.
– http://www.xmlrpc.com
240-322 CliServ. J2EE/14
32
The
most popular Java implementation of
XML-RPC is Apache XML-RPC
– http://xml.apache.org/xmlrpc
– part of the larger Apache XML project
240-322 CliServ. J2EE/14
33
XML-RPC Approach
:
int x = sqS.square(14)
:
XML-RPC client
1. send inputs as XML
in a POST message
XML-RPC
2. send result as a
HTTP response page
server
sqS handler
at foobar.com
240-322 CliServ. J2EE/14
34
Example XML-RPC Request
POST /XMLRPC HTTP/1.0
Host: foobar.com
Connection: Close
Content-Type: text/xml
Content-Length: 151
User-Agent: OSE/XML-RPC
240-322 CliServ. J2EE/14
<?xml version="1.0"?>
<methodCall>
<methodName>sqS.square</methodName>
<params>
<param>
<value>
<int>14</int>
</value>
</param>
</params>
</methodCall>
35
XML-RPC Response
HTTP/1.0 200 OK
Date: Wed, 11 May 2005 22:08:09 GMT
Server: Apache/1.3.26 (Unix)
Content-Length: 157
Connection: close
Content-Type: text/xml
240-322 CliServ. J2EE/14
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<int>196</int>
</value>
</param>
</params>
</methodResponse>
36
Sample Client Code
// create client link to server
XmlRpcClient client = new XmlRpcClient(
"http://foobar.com/XMLRPC");
// create a parameters vector for the request
Vector params = new Vector();
params.addElement( new Integer(14) );
// send the request and get the response
Object resultObj = client.execute(
"sqS.square", params);
int result ((Integer) resultObj).intValue();
// result will be 196
240-322 CliServ. J2EE/14
37
Sample Server Code
public class SquareServer
{
public SquareServer() {}
public Integer square(int x)
{ return new Integer( x*x );
}
:
240-322 CliServ. J2EE/14
continued
38
public static void main(String[] args)
{
try {
// invoke XML-RPC server
WebServer server = new WebServer();
// add handler for the service
server.addHandler("sqS",
new SquareServer());
} catch (Exception ex) {}
}
}
// end of SquareServer class
240-322 CliServ. J2EE/14
39
8.4. Web Services Resources
The
Java Web Services Developer Pack
(Java WSDP), version 1.5
– http://java.sun.com/webservices/
or
– http://java.coe.psu.ac.th/
RefImp.html#WebServices
240-322 CliServ. J2EE/14
continued
40
In
the CoE library:
– Java Web Services for Experienced
Programmers
Deitel et al, Prentice Hall, 2003
– very detailed, but a little bit out of date
240-322 CliServ. J2EE/14
41