Creating a simple Java client to invoke Web - SYS

Download Report

Transcript Creating a simple Java client to invoke Web - SYS

Developing Web Services
with the Eclipse Web
Tools Platform
Boris Minkin
Web Services? What and why?
• Companies need to integrate existing
systems – achieve interoperability among
disparate implementations
• Web Services and XML came along with the
ability to provide standard communication
interface between these systems
• They are essentially language/platformneutral remote procedure calls built on HTTP
infrastructure
Fundamental standards and
technologies
• XML – eXtensible Markup Language: The
syntax used for Web Service messages,
configuration files, description files, etc.
• HTTP – Hypertext Transfer Protocol: The
standard transport used to communicate
between Web Service servers and clients
• RPC – Remote Procedure Call: The
technique of executing a method call
remotely—here, the client calling a web
service’s operation.
Web Service standards and
technologies
• SOAP – Simple Object Access Protocol. An
XML-based standard for sending messages (in a
SOAP envelope) between web services and
clients.
• WSDL—Web Service Definition Language XMLbased description of a web services public
interface. (Similar to CORBA IDL.)
• UDDI—Universal Description, Discovery and
Integration. And XML-based registry for web
service. Interrogated with SOAP messages,
returns WSDL documents.
Locating and Using Web Services
UDDI Registry
Query registry
Publish WSDL
Obtain WSDL
Get result back
Client Application
Web Service
Call web service
operation
Java Web Service related
standards and protocols
• Web Services are Part of J2EE 1.4
– Web Services for Java: JSR 101/109 standard
– One can generate web service from Java Bean or
Stateless Session EJB
• Various Protocols and Standards:
–
–
–
–
–
–
JAXP—Java API for XML Processing
JAX-RPC—Java API for XML-based RPC
JAXR—Java API for XML registries
SAAJ—SOAP with Attachments API for Java
SAX—Simple API for XML processing
DOM API—Document Object Model API
What is Eclipse?
• Open-Source Java Integrated Development Environment
(IDE)
• Initially donated by IBM to the Open-Source foundation
• Includes:
–
–
–
–
Java Development Tools (JDT)
Integrated Testing and Debugging Support
Incremental compilation and build
Team development support
• CVS support comes out of the box
• Pluggable – major advantage – can develop custom
plug-ins – variety is available at sites such as:
• http://www.eclipseplugincentral.com/
• http://eclipse-plugins.2y.net/eclipse/index.jsp
Eclipse main concepts
• Workspace
–
–
–
–
A workspace is a place where Eclipse stores the user’s data.
It’s a tree with projects, folders and files.
A workspace can contains many projects
You can have several workspaces but only one workspace can be
activated at a time.
• Project
– Collection of folders and files
• Workbench
– The workbench is the development environment window contains one
or more perspectives
• Perspective
– A layout with a set of editors and views
– Some Perspectives include: Java, CVS, Debug, Resource, etc.
• Editor/View
– Editors allow to edit content of a particular type (e.g., Java code editor)
– Views present information in non-editable way (some views include Ant,
Console, Declaration, Error log, Hierarchy, Javadoc, Navigator, Outline,
Package Explorer, Problems, Search
Eclipse Web Tools Project (WTP)
Platform
• One of the top Eclipse projects
• Adds Web/J2EE/Web Services development facilities
– J2EE and Web perspectives
– Web, EJB and Enterprise Application projects
– Variety of editors and views for editing JSP/HTML, XML, other files
• Provides tools for:
– Web applications using JSP / Servlets
• Provides editors for XML, HTML, JSP, JavaScript
–
–
–
–
Enterprise Java Beans (EJB)
Web Service (based on Apache AXIS)
Database exploration
Support for servers such as Tomcat, JBoss, etc.
• WTP Roadmap:
– WTP 0.7, July 2005 – End User Tools
– WTP 1.0, December 2005 – Platform APIs
– WTP 1.5, June 2006 – Java EE 5.0
Two ways to create Web
Service with Eclipse WTP
• Bottom up:
– You create the web service Java Bean or Stateless
Session EJB
– Eclipse creates the glue classes and the WSDL
• Top down:
– You write the WSDL
– Eclipse creates the necessary glue classes and the
service’s method stubs in a Java Bean
– You implement the operations
Eclipse WTP – Web Services Tools
• Wizard to create Web service
top-down (from WSDL) and
bottom-up (from Java).
• Wizard creates a Java stub
that binds to a Web service.
• Wizard can optionally
configure test client and
deployment of your Web
service
• You can also specify to
monitor your web service once
its launched
Eclipse WTP – Web Services Tools
• Graphical WSDL/XSD Editor
– Edit your WSDL file without wrestling with the syntax
Collections of
related ports
Abstract sets of one or more operations
supported by one or more ports.
Concrete protocol and data format
specifications for a particular port type
Containers for data type definitions
using XML schema type system
Abstract, typed definitions of the data being communicated.
A message can have one or more typed parts, for example the
highlighted message getLatestDateTimeResponse has just one part
which is its return parameter of xsd:date (XML Schema date type).
Eclipse WTP – Web Services Tools
• XML Schema, WSDL, and WS-I validators
– Ensure your documents conform to standards
(WSDL, XSD) and standard extensions (WS-I)
Eclipse WTP – Web Services Tools
• Web Service Explorer
– Publish/Discover Web
services.
– Invoke Web services
dynamically. No code
generation required
for testing.
– One can go ahead
and specify method
parameters to invoke
them
Eclipse WTP – Web Services Tools
TCP/IP Monitor is a powerful facility to show data sent through
the wire and to simplify analysis of any possible problems
Shows the list of interactions (request/response) that have been performed in
the chronological order.
Displays the contents of SOAP envelope
generated by web services request.
Displays the SOAP
response envelope
A First Web Tools Project – Step 1
• Before we can make
any web services we
have to create a
Dynamic Web Project
in Eclipse.
• However, before we
can make a dynamic
Web Project, we need
to configure a target
server.
A First Web Tools Project – Step 2
• Now, we are ready to create
our Dynamic Web Project.
• Since Tomcat is just a Web
Container provider, Web
project is enough for it.
• For servers such as JBoss
or WebSphere, you will
need to create Enterprise
Application Project.
J2EE Scenario – Typical Web
Services Application Architecture
• Java class
accesses data from
a database or
another source
• Java class exposed
as a Web service
Our Sample Application Description
StockService
stockName
stockSymbol
getLatestPrice
getLatestVolume
getLatestDateTime
getStockName
getStockSymbol
setStockName
setStockSymbol
getStockHistory
1
1..N
StockData
price
volume
dateTime
get/setPrice
get/setVolume
get/setDateTime
• Just two Java classes
– one for exposing the
methods to be called
through the service,
– another for data
gathering
Free stuff !!!
•
You can go ahead and download yourself all
the software I’ll use in the demo:
–
–
–
J2SE 5.0 JRE: http://java.sun.com/j2se
Eclipse 3.1.2: http://www.eclipse.org
Eclipse Web Tools Project (WTP) 1.0:
http://ww.eclipse.org/webtools
•
•
–
You can download the complete set (including Eclipse itself
and all required components)
You can also install it using Eclipse Install/Update facility –
from Help menu select Software Updates – Find and Install,
New Features to Install, then: New Remote Site with any
name and URL:
http://download.eclipse.org/webtools/updates/
Tomcat 5.0/5.5: http://jakarta.apache.org/tomcat/
Demo – Building Bottom-Up Web
Service
• Create a web service, bottom-up
• Exploring a Web Service using the Web
Services Explorer
• Exploring generated WSDL using WSDL file
editor
• Creating a simple client to invoke our web
service
• Writing our own client
• Create a web service, top down
Invoke our Web Service from Java
command line application
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
package services;
/**
* Creating a simple Java client to invoke Web Service through the generated service
locator and
* service end point interface.
*/
public class StockServiceClient {
/**
* To invoke stock service
*/
public static void main(String[] args) {
try{
StockServiceServiceLocator wsl = new StockServiceServiceLocator();
StockService ws = (StockService) wsl.getStockService();
String name = ws.getStockName();
System.out.println("Stock name: " + name);
double price = ws.getLatestPrice();
System.out.println("Stock price: " + price);
long volume = ws.getLatestVolume();
System.out.println("Stock volume: " + volume);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Invoke our Web Service from
Microsoft .NET client
• Demonstrates Web
Services
Interoperability
• Using Microsoft .NET
1.1 framework
generation and
compilation tools
• Sample program I’ve
written in C#
To get more information…
• WTP website
http://www.eclipse.org/webtools
• WTP newsgroup
news://news.eclipse.org/eclipse.webtools
• WTP Community Resources (articles, tutorials,
events)
http://www.eclipse.org/webtools/community/community.html
• Article in Eclipse Developer Journal – Developing Web
Services with Eclipse WTP:
http://eclipse.sys-con.com/read/180402.htm