JAX-WS Dispatch APIs
JAX-WS provides the "dispatch" mechanism which makes it easy to dynamically invoke services which you have not generated a client for. Using the Dispatch mechanism you can create messages (which can be JAXB objects, Source objects, or a SAAJMessage) and dispatch them to the server. A simple example might look like this:
import java.net.URL;
import javax.xml.transform.Source;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
...
URL wsdlURL = new URL("http://localhost/hello?wsdl");
Service service = Service.create(wsdlURL, new QName("HelloService"));
Dispatch<Source> disp = service.createDispatch(new QName("HelloPort"),
Source.class, Service.Mode.PAYLOAD);
Source request = new StreamSource("<hello/>")
Source response = disp.invoke(request);
NOTE: you can also use dispatches without a WSDL.
For more in depth information see the Hello World demos inside the distribution.