Q: What are the differences in JAX-RPC binding patterns?
A: JAX-RPC supports three binding patterns:
static binding (compiled stub) dynamic binding (dynamic proxy) dynamic invocation (DII)
When using static binding, the developer compiles the WSDL <portType> and <binding> at development time to generate a precompiled client proxy (a stub). This stub contains both interface and implementation of the proxy. It provides the code that allows an application to communicate with one and only one Web service implementation. If the Web service implementation changes in any way, the developer must generate a new stub and the recompile the client application. This approach affords the best performance with the least flexibility.
When using dynamic binding, the developer compiles only the WSDL <portType> at development time, generating only the proxy interface. At runtime the application uses a dynamic proxy at runtime to generate the proxy implementation based on the WSDL <binding>. This approach allows the client application to bind to any Web service implementation that implements the same <portType>. This approach imposes a small amount of overhead on the first service invocation, yet enables increased flexibility.
When using dynamic invocation, the client application parses the WSDL document at runtime and constructs the service calls dynamically. The application must have some prior knowledge of the semantics of the service, but it isnt tied to any specific interface. This approach affords the most flexibility, but it requires much more complex programming.