axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Olivier Vanekem (JIRA)" <>
Subject [jira] Commented: (AXIS2-3948) WSDL2Java doesn't allow to add a custom header element through the Skeleton
Date Wed, 12 May 2010 11:02:42 GMT


Olivier Vanekem commented on AXIS2-3948:

We fell in the same issue.
The way we resolved it (though not clean) is by modifying the generated MessageReceiverInOut
class that contains the invokeBusinessLogic method (dispatch calls to the skeleton).
Inside this method, we added this code:

// retrieve original envelope, this is because we want to copy/paste an element from the header
of the request to the header of the response
SOAPEnvelope env = msgContext.getEnvelope();

// this creates our own structure that we want to add to the SOAP header
SyncHeader header = SyncHeader.Factory.newInstance();
SyncHeaderDocument headerDoc = SyncHeaderDocument.Factory.newInstance();
// here we generate an OMElement from our custom header structure omElementsyncHeader = toOM(headerDoc);

// here we add the header to the new envelope (of the response)
addHeader(omElementsyncHeader, envelope);
// the new envelope is set on the newMsgContext which is the one of the response

and to be complete, here the code of the addHeader private method that we also added to the

	private void addHeader(OMElement omElementToadd, SOAPEnvelope envelop) {
		SOAPHeaderBlock soapHeaderBlock = envelop.getHeader().addHeaderBlock(
				omElementToadd.getLocalName(), omElementToadd.getNamespace());
		// soapHeaderBlock.setMustUnderstand(mustUnderstand);
		OMNode omNode = null;

		// add child elements
		for (Iterator iter = omElementToadd.getChildren(); iter.hasNext();) {
			omNode = (OMNode);

		OMAttribute omatribute = null;
		// add attributes
		for (Iterator iter = omElementToadd.getAllAttributes(); iter.hasNext();) {
			omatribute = (OMAttribute);


As I said, we are uncomfortable to need to modify generated code but this was the only way
we found. Should this be done in a cleaner way (now or in a later release of Axis/2) we are
keen on changing it in our application.

> WSDL2Java doesn't allow to add a custom header element through the Skeleton
> ---------------------------------------------------------------------------
>                 Key: AXIS2-3948
>                 URL:
>             Project: Axis2
>          Issue Type: Bug
>          Components: Tools
>    Affects Versions: 1.4, 1.3
>         Environment: OS: Microsoft Windows Server 2003/Mac OS X 10.5
> IDE: Eclipse 3.2/Eclipse 3.4 with plugin Axis2Codegen Wizard
> Tool: WSDL2java as command line or called by the Axis2Codegen Wizard
>            Reporter: Emidio Stani
>         Attachments:
>   Original Estimate: 168h
>  Remaining Estimate: 168h
> Hi all,
> I created a WSDL file WS-I compliant (Basic Profile 1.1) where I specify an header. After
that I generated stub and skeleton with the wsdl2java tool; inside the stub I have the method
to call the service which allows me to add my custom header element but from the skeleton
side the method allows only to work on the object that will be included in the body and not
on the header.
> It seems that the only way is to modify the MessageReceiverInOut java class  to add the
header manually when it created a new soap message.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message