OK. This is turning into another FAQ type thing that possibly needs a sample....
There are a couple options open to you: First, you need the context injected in: @Resource WebServiceContext context; 1) Standard JAX-WS API's: throw the value in the WebServiceContext and in a SoapHandler, use it to modify the SAAJ object model. This is pure JAXWS and would work on any JAX-WS implementation. The "problem" is that with the SAAJ model, it breaks streaming and performance suffers. 2) context + CXF interceptor: again, from your impl, throw a value in the WebServiceContext and then grab that from the message in your interceptor. You can then call the soapMessage.getHeaders() thing to get the list of headers and add a Header object to it. 3) Context only: no interceptors needed. In you impl do: context. ... build a org.apache.cxf.headers.Header object ... List<Header> hdrList = (List<Header>)ctx.get(Header.HEADER_LIST)); hdrList.add(hdr); And example of this would be our system test that test this: http://svn.apache.org/repos/asf/incubator/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/outofband/header/ 3 is definitely the simplest. No interceptors needed. Nothing really to configure, etc.... Dan On Friday 29 February 2008, Daniel Lipofsky wrote: > I have a csae where I want to set something in the SOAP > response header based on what happened in the execution of > the method implementation. > > I suppose I want to extend AbstractSoapInterceptor, but what > I can't figure out is how to pass a flag from the method > to the interceptor. I thought about sticking it in the > ServletRequest attribute map but I don't see a way to access > that from the interceptor. Any way to do it would be fine. > > also is there an example of adding an element to a SOAP header? > > Thanks, > Dan -- J. Daniel Kulp Principal Engineer, IONA [EMAIL PROTECTED] http://www.dankulp.com/blog
