JBoss.org Community Documentation

5.21.2. Dynamic Proxy

You can create an instance of a client proxy using one of getPort methods on the #Service.

 /** 
 * The getPort method returns a proxy. A service client
 * uses this proxy to invoke operations on the target
 * service endpoint. The <code>serviceEndpointInterface</code>
 * specifies the service endpoint interface that is supported by
 * the created dynamic proxy instance.
 **/
 public <T> T getPort(QName portName, Class<T> serviceEndpointInterface)
 {
  ...
  }
  
  /** 
 * The getPort method returns a proxy. The parameter
 * <code>serviceEndpointInterface</code> specifies the service
 * endpoint interface that is supported by the returned proxy.
 * In the implementation of this method, the JAX-WS
 * runtime system takes the responsibility of selecting a protocol
 * binding (and a port) and configuring the proxy accordingly.
 * The returned proxy should not be reconfigured by the client.
 *
 **/
 public <T> T getPort(Class<T> serviceEndpointInterface)
 {
 ...
  }

The service endpoint interface (SEI) is usually generated using tools. For details see # Top Down (WSDL to Java)

A generated static #Service usually also offers typed methods to get ports. These methods also return dynamic proxies that implement the SEI.

@WebServiceClient(name = "TestEndpointService", targetNamespace = "http://org.jboss.ws/wsref", 
  wsdlLocation = "http://localhost.localdomain:8080/jaxws-samples-webserviceref?wsdl")
  
	public class TestEndpointService extends Service
	{
	...
	  
	public TestEndpointService(URL wsdlLocation, QName serviceName) {
	super(wsdlLocation, serviceName);
	}
	  
	@WebEndpoint(name = "TestEndpointPort")
	public TestEndpoint getTestEndpointPort() 
	{
	return (TestEndpoint)super.getPort(TESTENDPOINTPORT, TestEndpoint.class);
	}
  }