The Webservices Ebay example is an application that shows how to use
the JAX-WS API. The example shows how to access Ebay services via their
web service interface. To use this sample you must first register with Ebay
and get the appId, certId, devId and authToken
and put the
appropriate values in the ebay.properties
file. You can register
at
http://developer.ebay.com/developercenter/soap/ to get the keys. It is recommended
to use the sandbox environment provided by Ebay to run the sample. First you
need to create and validate a sandbox test account and then generate a
single user authentication token. Also note at the time this sample was
written and tested the version of eBaySvc.wsdl
was 455. For
convinience the wsdl file is bundled.
The JAX-WS Ebay example does not however implement the full fledged logic that such an application might have. It implements a subset of this logic which is sufficient to demonstrate common patterns and solutions used when implementing a web service and interface for an application with JAX-WS Technology.
Note: This example was developed using NetBeans 5.5 IDE. The instructions given in this document to build and run the example assume that you have at your disposal:
- either NetBeans 5.5 IDE and
- or Apache Ant 1.6.5
Table Of Contents:
Before reading further, you will need to generate the Java Documentation for the example's sources.
The example has two parts to it - the client and the server. In the sample root directory there are two directories -EbayClient
and EbayServer
. Run the following command in both the
directories
ant
Alternatively you can open the EbayClient
and
EbayServer
project with the
NetBeans IDE and generate the Javadoc from its Build
menu.
eBaySvc.wsdl
file
to generate stubs and proxy classes by running the
wsimport
tool in the ebay.apis
package
that it then uses in the application to make calls to either the
Ebay site or to the local server. The MainGUIApp
class
in the ebay.client
package is the main class to run
the example. The application is a swing application that lets
you select which server to query and also set
preferences for http proxy incase you are behind a firewall.
There is also a JAX-WS handler in the ebay.client.handler
package - RequesterCredentials
. The Ebay wsdl uses
additional headers that is defined in the binding section of the
WSDL. This concept is currently not supported by the JAX-WS
implementation and hence we insert the additional header using
a JAX-WS protocol handler. We use the RequesterCredentials
handler to get access to the entire soap message and then add the
required soap headers to query the ebay web service.
Note: When building the application you will see a lot of warnings like[exec] warning: cos-nonambig: "urn:ebay:apis:eBLBaseComponents" :eBayAuthToken and WC[##any] (or elements from their substitution group) violate "Unique Particle Attribution". During validation against this schema, ambiguity would be created for those two particleswhen thewsimport
tool is being executed. This is because the ebay wsdl has schema definitions that cause these warnings to be generated. Note however the example will run just fine.
eBaySvc.wsdl
file is used to
to generate stubs and proxy classes by running the
wsimport
tool in the ebay.apis
package
that it then uses in the server side application to serve up
requests. The example uses the Java SE 6 light weight web server
to host the endpoint. The Ebay
class in the
ebay.server
package is the class that contains the
item information. Note for the purpose of the example we have
used a HashMap
to store the information. The server
side example also demonstrates how you can use JAX-WS for REST
based web services. In Java SE 6 the web server does not have
the capability to serve files from the file system. So we have
implemented the ImageProvider
service to serve up
images using the REST style web services. The Main
class is the main class of the application that starts up the
two endpoints to serve up the requests. When using the client with
the local server at this time the item id values supported are
1 or 9720685987, 2 or 9723025228, 3 or 9722594617
Once generated, the Javadoc of example classes can
be found starting from
dist/javadoc/index.html
. and
../EbayServer/dist/javadoc/index.html
.
You can view the sources in the
src
and ../EbayServer/src
subdirectories.
EbayClient
directory
and execute the following commands:
ant run
Alternatively you can open the EbayClient
project with the
NetBeans IDE and right click on the EbayClient
project
and select Run project
Note: You can also run the EbayClient application directly from theIf you want to run thejava
command line. Make sure to build the EbayClient jar first.
On Unix systems:ant jar cd dist java -jar EbayClient.jar
On Windows systems:
ant jar
cd dist java -jar EbayClient.jar
EbayServer
so that you can access
the server side functionality as well on the local machine then you
need to be in the EbayServer
directory and execute the
following commands:
ant run
Alternatively you can open the EbayServer
project with the
NetBeans IDE and right click on the EbayServer
project
and select Run project
Note: You can also run the EbayServer application directly from thejava
command line. Make sure to build the EbaySever jar first.
On Unix systems:ant jar cd dist java -jar EbayServer.jar
On Windows systems:
ant jar
cd dist java -jar EbayServer.jar
In this document, we have presented an advanced
JAX-WS example. We have shown how you can build a client to access
a web service starting from a WSDL file. We have also demonstrated
how to use Handler
in the client to add additional
information to messages. We have also demonstrated how to build a service
for a corresponding wsdl and how to enable REST services using JAX-WS.