Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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