As discussed in a previous email thread on this list (Service control free 
threading cleanup) I would like to make a design proposal for adding 
enhanced JAX-RPC handler functionality to the service control.

One of the primary goals of this change would be to allow service control 
users to define their own JAX-RPC handler chains for a service control. 
Currently the service control only supports the HeaderHandler (see source 
tree) which can add SOAP headers to outgoing messages and SOAP retrieve 
headers from incoming messages. There are two service control API's which 
support this: Element[] getInputHeaders() and void 
setOutputHeaders(Element[])

I propose that these two API's be removed as well as the HeaderHandler 
class.

The API's would be replaced with a new annotation in the ServiceControl 
interface:

public @interface HandlerConfigParams {
String name();
String value();
}

public @interface MessageHandler {
Class handlerClass();
HandlerConfigParams[] configParams() default {};
String[] headers() default {};
}

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface MessageHandlers {
MessageHandler[] value();
}

If this optional annotation is set service control would add the handlers to 
the HandlerRegistry at runtime. I'm thinking this would be a class-level 
annotation for the service control - would it also be useful to be able to 
define this on a per method basis?

- Chad

Reply via email to