Download j2ee14

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
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