08a-Web servicesx

Download Report

Transcript 08a-Web servicesx

WEB SERVICES
FIRST AND FOREMOST - LINKS
 Tomcat 6.0 - http://tomcat.apache.org/download-60.cgi
 AXIS2 - http://axis.apache.org/axis2/java/core/download.cgi
 NetBeans - http://netbeans.org/downloads/index.html
 How to setup Tomcat server in NetBeans with Axis -
http://netbeans.org/kb/docs/websvc/gs-axis.html
 Creating Axis2 Web Services on NetBeans http://netbeans.org/kb/docs/websvc/gs-axis.html
 Creating Web Service Client http://netbeans.org/kb/docs/websvc/client.html
 Official JEE tutorial http://download.oracle.com/javaee/6/tutorial/doc/index.html
JAVA AND THE (INTERNAL) WEB
 This is JEE (or J2EE, or Java Enterprise Edition)
 Most programs use client/server paradigm
 Instead of implementing Servers and communication code every time,
there is a framework of protocols for servers that can execute Java
code
 There are different implementations of JEE servers – Apache, Tomcat,
Glassfish (and more, and more…)
 These servers can run multiple types of logic code
 It’s actually more complicated than this… but let’s keep it simple for
now
WEB SERVICES
 Try to solve the problem of exposing data without the need for the
server and client to be written in the same programming
language (or by the same developer, or the same environments, or
anything the same)
 How ?
 Server (da!?)  get requests from Client (da!?!?)  returns responses
(well… da!?)
WEB SERVICES
 There are three protocols that are used here:
 WSDL (Web Services Description Language) - an XML file that
describes the methods, parameters and return values for the service in
the server
 XML (Extensible Markup Language) - for the data (so anyone can read
it… it’s just text in a certain format)
 SOAP (Simple Object Access Protocol) - for moving (that mean
serializing and sending over the net) the data between client and server
 Oh… all this stuff runs over HTTP protocol…
WEB SERVICES WITH AXIS2 AND TOMCAT
 Web services can be implemented in different languages and in each
language with different implementations
 We’re using AXIS2
 But parsing XML messages and send XML messages is not enough
 Someone needs to handle the HTTP requests and responses (just like
any web server)
 And for that we’re going to use Tomcat
TOMCAT
 Tomcat is a JEE web server
 It can run web sites
 But it can also runs Java code
 Just link ANY other web server it handles the protocol of HTTP
requests and HTTP responses
 The Java code that runs on a JEE server is call a Servlet
 If we want to run web services we need a Servlet that runs it
 And that is AXIS2
AXIS2
 AXIS2 is a code that knows how to handle Web Services requests and
responses
 It’s basically an XML parsing engine
 It handles web requests that the Tomcat server send to it
 It extracts the XML message from the HTTP request
 Send it to any logic we deploy in it
 And then do the opposite with the response
 Basically, is a Java code that runs Java code (that going to be YOUR
code!)
THE PROCESS
 You write your server code (with business logic)
 You package it (what !?) into an AXIS web container
 (Packaging means taking all the compiled classes, resource and some
XML files and placing them in a zip file – but with a different extenstion
like JAR, WAR, AAR)
 You deploy this it into AXIS2
 Either AXIS2 will refresh automatically or you’ll need to refresh it
manually
 That’s it! (for the server part)
CLIENT/SERVER PARADIGM
 What does it mean to write client/server code ?
 It means that most of the business logic is written in the server side
 The server and the client have a shared context – meaning, the server
knows how to dispatch different results for the same methods for
different clients
 A Session is the term for the lifespan of a client with a server
 A session is alive only as long as the client is alive
 The clients are “simple” and just show the server data (in their context)
CLIENT/SERVER PARADIGM
 So when converting an application to run in a client/server mode, you’re
actually writing two programs
 The client side should:
 Have a communication layer with the server
 Convert the server data to its own internal model
 The server side should:
 Know how to handle multiple clients
 Save a context for each client session