(Free) Web Services and SOA Programming
(with
Passion!) Hands-on Online Course
From
March 14th, 2006:
Message to potential
attendees to this course from
Sang Shin
The 4th and the new
session started from
May 1st, 2008. Just
like
other online courses I
teach, this course is offered online only. For those of
you who are not sure what it's like to take this course online, please
see What
it's like to take Sang Shin's online course. Just to set the
expectation correctly, there is no real-time webcasting.
How to register for
this course
In order to register for this course, all you have to do is sending
a blank email to the following email subscription address.
We are now
using Google alias not Yahoo alias. Please register yourself
again if you have not subscribed this new alias. Thanks
much. (Please read registration FAQ
before you sign up.)
Basically, when you send a blank email to the above, you are
subscribing our
class
forum. This forum can be used for posting
questions/answers either by
email or
through the website. Please
use this forum for all class related
communication (technical or non-technical). It is strongly
recommended you don't send an email directly to me.
Please read the FAQ
below before you ask questions on how this course works!!!!
Once you sent an email to the subscription alias above then you are
registered, so there is no need to send another email to the course
alias asking for "Add me to this course!".
Topics and Schedule
Note
that only the topics
with the
dates assigned will be covered in this
course. It is my plan to provide presentation slides and hands-on
labs for the topics that do not have dates whenever I find time.
The technologies we will have special focus in this course are
highlighted in
bold font.
Software and
sample
codes we are going to use are mentioned below. Some of the sampel
codes are converted to "native" NetBeans projects. Please
note that we will have one-week break for every two weeks.
- Web services overview
- XML
- XML Namespace (0.5 hour lecture)
(May 1st, 2008 - Week
#1)
- XML
Schema (1 hour lecture+ 1.5 hour lab) (May
1st,, 2008 - Week #1) -
(There is a homework)
- XML Schema Design Pattern
(0.5 hour lecture + 0.5 hour lab)
- XPath (1 hour lecture) (Aug. 31st, 2008
- Week #2) (May
8th, 2008 - Week #2) there is no homework
- XSLT (1 hour lecture + 1 hour lab) (May
7th, 2008 - Week #2)
(There is a homework)
- XSLT 2 (1 hour lecture + 1 hour lab)
- Java APIs for XML parsing and transformation
- JAXP, SAX, DOM (1 hour lecture) (May.
14th, 2008 - Week #3)
(There is a homework)
- StAX (0.5 hour lecture + 1 hour
lab) (May. 14th, 2008 - Week #3)
(There is a homework)
- SOAP and WSDL
- SOAP (1 hour lecture lecture + 0.5 hour
lab, 2008)
(May. 28th, 2008 - Week #4) -
(There is a homework)
- SOAP Processing Model
(0.5 hour lecture)
(May. 28th, 2008 - Week #4) -
there is no homework
- SOAP Protocol Binding
(0.5 hour lecture)
- WSDL Basics
(0.5 hour lecture + 1 hour lab, 2008)
(May. 28th, 2008 - Week #4) -
(There is a homework)
- WSDL Bindings (1 hour lecture +
0.5 hour lab)
- soapUI Basics (0.5 hour lecture
+
1 hour lab) (June. 5th, 2008 - Week #5) -
there is no homework
- JAX-RPC (J2EE 1.4 Web Services)
- SAAJ
- SAAJ (1 hour lecture + 1 hour
lab) (June. 5th, 2008 - Week #5) -
(There
is a homework)
- UDDI and JAXR
- UDDI (1 hour lecture)
- JAXR (0.5 hour lecture + 0.5
hour lab)
- JAX-WS
- Data binding (JAXB)
- JAXB Basics (1 hour lecture + 1
hour lab) (June 26th, 2008 - Week #8)
(There is a homework)
- JAXB
2.0 (1 hour lecture + 1 hour lab) (June
26th, 2008 - Week #8) -
(There is a homework)
- JAX-WS 2.x
Customization
(0.5 hour lecture + 0.5 hour lab)
- REST
- RESTful Web Service Primer (1
hour lecture + 1 hour lab) (July 5th, 2008 - Week #9) -
there is no homework
- JAX-RS
(1
hour lecture + 1 hour lab) (July 5th, 2008 - Week #9) -
(There is a homework)
- WADL
(1 hour lecture)
- WS-* Specifications
- WS-Policy (1 hour lecture)
(July
12th, 2008 - Week #10) -
there is no homework
- WS-Addressing (1 hour
lecture +
0.5 hour lab) (July
12th, 2008 - Week #10)
-
(There is a homework)
- WS-Routing (1
hour lecture)
- Interoperability
(WSIT)
- SOA, BPEL, Open ESB
and
JBI, CASA, SCA, Composite Applications
- SOA Concept (1 hour lecture)
- BPEL (1 hour lecture + 1 hour lab) (Aug.
22nd,
2008 - Week #12) -
there is no homework
- Web services
security and Identity
management
- Testing, Management
- Performance
- Best Practices
- Real world Web services
- Portal/Portlet/WSRP
- WSRP (1 hour lecture + 1 hour lab)
- Web services support in frameworks
Software Required
Please install the specific version of JDK and NetBeans mentioned below
for now in order to minimize the possible surprise in running the
sample applications.
- Java Standard Development Kit (JDK™) version 6.0 update 4 or
after (download)
- You want to make sure you are using JDK 6 update 4 or later version.
Don't use JDK 6 update 3 or earlier version if you are using JDK 6
because JDK 6 update 3 or earlier versions comes with JAX-WS 2.0 jar
files which are not compatible with JAX-WS 2.1 that is required to run
the JAX-WS 2.1 applications.
- NetBeans IDE 6.1 (download)
- Download "All" bundle,
which contains SOA pack.
- When you install NetBeans IDE, it will ask you which JDK
you want to use. Select JDK 6.0.
- soapUI (download)
- You can use it either in stand-alone mode or within NetBeans
Sample Codes we are going to use
The sample applications we are going to use are not in the form of
"native" NetBeans projects, which means we will have to build and run
the as "free form" projects. (A "Free form" NetBeans
project is the one that has its own Ant script. This has some
limitations in terms of using it under NetBeans. As we move
along, these projects will be provided as native NetBeans projects from
the source or I will convert them. But for now, we will live with
what we have. What is important is we have some code to work
with.) Given that this is the first time I am teaching some of
the Web services new technologies, I must confess that I am learning
things myself for the first time. So please expect some "trials
and errors".
- Java
EE 5 Tutorial 1.0 (download)
- We are going to use sample applications that are shipped in the
Java EE 5 Tutorial
- All applications can be built and run through ant script and
NetBeans
- Metro (download)
- We are going to use sample applications that are being
shipped in the Metro
- All applications can be built and run through ant script and
NetBeans
- SOA Using Java Web Services Book written by Mark Hansen (download)
- The source code is available through GPL license
Web Services Overview
This topic cover high-level overview of
what Web service is. If you already have reasonable idea
what a Web service is, you can skip this topic. There is no homework
for this topic.
1. Presentation slides (1.5 hour)
return
to the topics
XML Namespace
XML namespace is like a packaging concept of Java programming language
- basically to avoid the name collision. Namespace is extensively
used in all Web services related documents. You will also
learn the basic concept of default namepace. The concept of
target namespace is dealt with in XML schema presentation. There
is no homework for this topic.
1. Presentation slides
2. Resources
- Tutorials and articles
- Specification and websites
return
to the topics
XML Schema
Given that most Web services exchange
data in the form of XML document, whose syntax is constrained by a XML
schema, having a good command on XML schema is very important for
the development of Web services.
1. Presentation slides
return
to the topics
XML Schema Design
Patterns
This topic covers several XML schema
design patterns that have been identified. There is no
homework for this topic.
1. Presentation slides
2. Lab 2 - 0.5 hour (You can just create a new NetBeans project and
then add the sample XML schema)
3. Resources
return
to the topics
XPath
XPath is a XML language you can use to make references to the part of
your XML document - actually a set of nodes. XPath is used by XPath and
other XML language as a way of making references to the XML document.
1. Presentation slides
return
to the topics
XSLT
XSLT lets you perform transformation of your source XML document to
another XML document, HTML document, or even a plain text. In
many cases, he XML document you have received need to be transformed to
a different format, in which case you will use XSLT for that.
1. Presentation slides
2. Lab (1 hour) and homework
3. Resources
- Tutorials and articles
- Specifications and websites
- NetBeans tools
return
to the topics
XSLT 2
In this session, you are going to learn a bit more advanced usage of
XSLT.
1. Presentation slides
return
to the topics
JAXP, SAX, and DOM
JAXP provides standard Java API for XML parsing and transformation
based on pluggable framework. It does support SAX and DOM.
In general, the usage of JAXP/SAX/DOM is getting replaced by StAX.
1. Presentation slides on SAX
2. Presentation slides on DOM
3. Lab (0.5 hour) and homework
4. Resources
return
to the topics
StAX
StAX provides Streaming API for XML parsing and Transformation.
1. Presentation slides
return
to the topics
SOAP Basics
You are going to learn basic message
structure of SOAP messages. In general, as a developer, you are
not going to directly construct or manipulate a SOAP message, but it is
still useful to understand how SOAP message is constructed and how it
is handled by endpoint.
1. Presentation slides
return
to the topics
SOAP Processing Model
1. Presentation slides
return
to the topics
SOAP Protocol Binding
1. Presentation slides
return
to the topics
WSDL Basics
Having a good command on WSDL is
important for building and deploying a well-functioning and
interoperable Web services. Even though you will use tools for
importing existing WSDLs or creating WSDLs from existing Java classes,
it is still important for you to have good understanding of it
especially when you have to debug the mal-functioning Web services.
1. Presentation slides
2. Lab 1
3. Lab 2 (1 hour) and homework
- <use soapUI to look into various WSDL documents> (30
minutes)
4. Resources
- WSDL
- NetBeans WSDL editor tutorials
return
to the topics
WSDL Binding (SOAP Binding)
1. Presentation slides
2. Lab
Try HelloServiceRPCLiteral project and study the generated WSDL
document and SOAP messages. Try HelloServiceDocumentLiteral
project and study the generated WSDL document and SOAP messages.
- 4349_wswsdlbinding.zip
(Unzip it in a directory of your choice
and read lab document from
<unzip-directory>/wswsdlbinding/index.html to proceed)
- Online
lab
document (This is the same document you will find in
the hands-on lab zip file)
return
to the topics
soapUI Basics
1. Presentation slides
- PDF:
1 slide per page
- PDF:
slides with speaker notes
- StarOffice
file
2. Lab
return
to the topics
JAX-RPC (J2EE 1.4 Web
Services)
In general, you are recommended to use
JAX-WS to build Web services and clients even if they are going to be
deployed over J2EE 1.4 container (Servlet 2.4 container) since Web
services that are created using JAX-WS can be deployed over Servlet 2.4
container and they still SOAP 1.1 as communication protocol as a
default.
1. Presentation slides
return
to the topics
JAX-WS 2.x
JAX-WS 2.x based Web services are
easier to develop than
JAX-RPC since you build Web services using
annotations. JAX-WS 2.x also supports lots of new features. The
focus of this course is JAX-WS (instead of JAX-RPC).
1. Presentation slides
2. Lab 1 (1 hour)
3. Lab 2 (0.5
hour)
4. Resources
- Web sites
- Articles and tutorials
- Forum
return
to the topics
JAX-WS 2.0
with Java SE 6 Platform
Java SE 6 now supports JAX-WS, which
means you can now deploy a Web service over standalone Java SE platform
form.
1. Presentation slides
2. Lab (1 hour) and homework
- 4352_wsjavase6.zip
(Unzip it in a directory of your choice
and read lab document from
<unzip-directory>/wsjavase6/index.html to proceed)
- Online
lab
document (This is the same document you will find in
the hands-on lab zip file)
3. Resources
return
to the topics
JAX-WS 2.0
with EJB
1. Presentation slides
- PDF:
1 slide per page
- StarOffice
file
2. Lab (1 hour) and homework
return
to the topics
JAX-WS 2.x Advanced
1. Presentation slides
2. Lab (1 hour) and homework
3. Lab 1
4. Lab 2
return
to the topics
JAX-WS Features
of GlassFish
GlassFish, as the deployment platform
of Web services, provides lots of extra features that can be leveraged
in production environment.
1. Presentation slides
2. Lab (1 hour) and homework
- 4373_wsglassfish.zip
(Unzip it in a directory of your choice
and read lab document from
<unzip-directory>/wsglassfish/index.html to proceed)
- Online
lab
document (This is the same document you will find in
the hands-on lab zip file)
3. Resources
return
to the topics
JAX-WS 2.0 Customization
1. Lab (1 hour) and homework
- 4363_wscustombinding.zip
(Unzip it in a directory of your choice
and read lab document from
<unzip-directory>/wscustombinding/index.html to proceed)
- Online
lab
document (This is the same document you will find in
the hands-on lab zip file)
2. Resources
return
to the topics
JAX-WS and Spring
Integration
1. Presentation slides
- PDF:
1 slide per page
- StarOffice
file
2. Lab (1 hour) and homework
- 4365_wsjaxwsspring.zip
(Unzip it in a directory of your choice
and read lab document from
<unzip-directory>/wsjaxwsspring/index.html to proceed)
- Online
lab
document (This is the same document you will find in
the hands-on lab zip file)
3. Resources
return
to the topics
SAAJ (SOAP with Attachments API for Java)
SAAJ provides Java API for SOAP message creation and
manipulation. In general, you use JAX-WS rather than SAAJ
unless you have a need to create and manipulate SOAP messages in your
application.
1. Presentation slides
2. Lab
- 4366_wssaaj.zip
(Unzip it in a directory of your choice
and read lab document from
<unzip-directory>/wssaaj/index.html to proceed)
- Online
lab
document (This is the same document you will find in
the hands-on lab zip file)
3. Resources
return
to the topics
UDDI
1. Presentation slides
2. Presentation slides
3. Lab
- We will use SAP's public test UDDI registry below. This is
unstable, however.
return
to the topics
JAXR
JAXR is a Java API for registry
operations.
1. Presentation slides
return
to the topics
JAXB Basics
1. Presentation slides
2. Lab (1 hour)
3. Lab 2 (1 hour)
4. Resources
- Web sites
- Articles, tutorials
- NetBeans tutorials
- Forum
return
to the topics
JAXB 2.0 (Data Binding)
1.
Presentation slides
2. Lab 1 (1 hour)
3. Resources
return
to the topics
RESTful Web Service Primer
REST is gaining popularity as another
Web services communication model due to simplicity. In fact,
there are still some debate going on "REST vs. SOAP". Each has
its own strengths and weaknesses. You choose either depending on
what you are trying to achieve for your applications.
1. Presentation slides
2. Resources
- NetBeans tutorial
- Articles, tutorials
- Web sites
return
to the topics
JAX-RS (Java API for RESTful Web Service)
JAX-RS is on-going effort to define
simpler Java API for REST based Web service development and invocation
since for now the programming model for building REST based Web service
has some room for improvement.
1. Presentation slides
2. Lab
return
to the topics
WADL (Web Application Description Language)
1. Presentation slides - WADL Primer
return
to the topics
WS-Policy
1. Presentation slides
return
to the topics
WS-Addressing
1. Presentation slides
2. Lab
- 4358_wsaddressing.zip
(Unzip it in a directory of your choice
and read lab document from
<unzip-directory>/wsaddressing/index.html to proceed)
- Online
lab
document (This is the same document you will find in
the hands-on lab zip file)
3. Resources
return
to the topics
WS-Routing
1. Presentation slides
return
to the topics
Binary
Attachment Schemes (MTOM/XOP)
1. Presentation slides
2. Lab
- 4365_wsmtom.zip
(Unzip it in a directory of your choice
and read lab document from
<unzip-directory>/wsmtom/index.html to proceed)
- Online
lab
document (This is the same document you will find in
the hands-on lab zip file)
3. Resources
return
to the topics
WS-I
WS-I is an industry consortium, which
define a set of profiles, which constrain existing Web Services
standards (such as WSDL or SOAP) so that the implementations from
different vendors interoperate.
1. Presentation 1 (WS-I)
2. Presentation 2 (WS-I Basic profile)
3. Presentation 3 (WS-I Usage scenario)
4. Presentation 4 (WS-I sample application architecture)
5. Presnetation 5 (WS-I testing tools)
6. Lab
7. Resources
return
to the topics
Web Services
Interoperability Technologies
(WSIT, code-named Project Tango)
WSIT code-named as Project Tango is an
industry effort (between Java and .NET communities) to implement WS-*
specifications so that they can interoperate.
1. Presentation slides
2. Lab
3. Resources
- Web sites
- NetBeans tutorials
- Articles and blogs
- Screencasts by Arun Gupta
- Presentations
&