Web Services provides a way to expose pieces of your web application(s) within a servlet container or EJB container. A client doesn't have to be aware of how a service is implemented. It invokes a service indirectly via the container. It relies solely on the WSDL (Web Services Description Language) definition configured in your web app. Within the WSDL you specify the Java methods (interface) in your application that you want to be "web serviced". Next you implement the interface in one of 2 ways: as a stateless session bean running in the EJB container or as a Java class running in the J2EE container. Finally, you arrange the container to listen for incoming SOAP requests and map those requests to the respective implementation (done using WSDL). For SOAP requests, you need to have the JAX-RPC runtime.