Newsletter sign-up
View all newsletters

Enterprise Java Newsletter
Stay up to date on the latest tutorials and Java community news posted on JavaWorld

JavaWorld Daily Brew

How to bind soap header using jax-rpc


Tags:

To Whom It May Concern:

I am using Rad7, Ibm Websphere 6.1, on Windows XP.
I created an SoapHeader first using a string and bind it using jax-ws.
It works for jax-ws but unfortunately, my work services uses jax-rpc.
Does anybody know how to bind the soap header using jax-rpc.

Any help or hint would be greatly appreciated it.

Here is my code:

import org.apache.cxf.headers.Header;
import org.apache.cxf.headers.Header.Direction;
import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.binding.soap.SoapHeader;

import javax.xml.namespace.QName;
import java.io.StringReader;
import java.util.List;
import java.util.ArrayList;
import javax.xml.ws.BindingProvider;

@Test
public void testService() throws Exception {
try
{

URL wsdlURL = new URL("localhost:9087/abc/services/ServiceABCService");
ServiceRequestServiceService service = new ServiceRequestServiceServiceLocator();
ServiceRequestService port = service.getServiceRequestService(wsdlURL);

//How to Add Soap Header using jax-ws

String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "1.0abc0124" +
"sSARABC70210521fxue" +
"2010-06-04T13:44:45.1322010-06-04T13:44:53.242ServiceRequestService" +
"addServiceTimeRequest" +
"BORS2010-06-04T13:41:10.2067f9368d1-8c5c" +
"2010-06-04T13:41:10.871"+
"2010-06-04T13:41:10.902+"+
"";
SoapHeader dummyHeader1 = new SoapHeader(new QName("uri://xmlns.ABCgc.net/ABC/2002/header/", "ABCHdrRq"),
DOMUtils.readXml(new StringReader(xml)).getDocumentElement());
dummyHeader1.setDirection(Direction.DIRECTION_OUT);
List headers = new ArrayList();
headers.add(dummyHeader1);

((BindingProvider)port).getRequestContext().put(Header.HEADER_LIST, headers);

//How to Add Soap Header to the request using jax-ws

}
catch(Exception e)
{
System.out.println("Exception message:"+e.getMessage());
}
}

Yours,

Frustrated