Javasourceworld A Java quick reference blog
Web Services
A Web service is any piece of software that makes itself
available over the Internet and uses a standardized XML messaging system. XML
is used to encode all communications to a Web service.
For example, a client invokes a Web service by sending an XML
message, then waits for a corresponding XML response. Because all communication
is in XML, Web services are not tied to any one operating system or programming
language--Java can talk with Perl; Windows applications can talk with Unix
applications. Beyond this basic definition, a Web service may also have two
additional (and desirable) properties:
First, a Web service can have a public
interface, defined in a common XML grammar. The interface describes all the
methods available to clients and specifies the signature for each method.
Currently, interface definition is accomplished via the Web Service Description
Language (WSDL).
Second, if you create a Web service, there should be
some relatively simple mechanism for you to publish this fact. Likewise, there
should be some simple mechanism for interested parties to locate the service
and locate its public interface. The most prominent directory of Web services
is currently available via UDDI, or Universal Description, Discovery, and
Integration.
Web
services can be implemented in various ways. Web services can be classified as
“Big” web services and “RESTful” web services.
In Java EE 6, JAX-WS provides the functionality for
“big” web services, Big web services
use XML messages that follow the Simple Object Access
Protocol (SOAP) standard, an XML language defining a message
architecture and message formats. Such systems often contain a machine-readable
description of the operations offered by the service, written in the Web
Services Description Language (WSDL), an XML language for defining
interfaces syntactically.
SOAP Web Services:
SOAP Web services are standard based and supported by almost
every software platform. They rely heavily in XML and have support for
transactions, security, asynchronous messages and may other issues. It's a
pretty big and complicated and standard, but covers almost every messaging
situation.
As in every topic in the java world, there are several
libraries to build/consume web services. In the SOAP side we have the JAAX-WS
standard and Apache Axis.
SOAP is appropriate in the fallowing scenarios:
-
If you require asynchronous processing
-
If you need formal contract/Interfaces.
JavaEE
defines a whole bunch of APIs which are basically only interfaces, no
implementations. JAX-WS is the API for SOAP based web services.
The
implementation that is used depends on the Java container we use.Metro is the
implementation bundled with the glassfish EE server,jboss used JBOSS-WS.
AXIS is
yet another implementation that supports JAX-WS. There is also CXF and many
others.
SOAP is
the industry standard because there are a lot of standardized features and it
has a descriptor in the form of WSDL (WADL for REST just isn't there yet).The
descriptor (generated automatically by JAX-WS) describes the client how the web
services should be involved and works.
It is
trivial to import a WSDL generated by java in .NET for example.
REST Web Services:
RESTful
services relies of HTTP protocol and verbs (GET, POST, PUT, DELETE) to
interchange messages in any format, preferable JSON and XML.
In REST
you can use Restless or spring REST facilities among other libraries.
Restful
services are appropriated in this scenarios:
- If you have limited bandwidth.
- If your operations are stateless.
No information is preserved from one invocation to the next one, and
each request is treated independently.
- If your client require caching.
JAX-RS is
the API for REST based web services. REST easier to understand because it
is very light weight.
Read more:
No comments:
Post a Comment