Use WS-Addressing with XFireProxy client
----------------------------------------
Key: XFIRE-347
URL: http://jira.codehaus.org/browse/XFIRE-347
Project: XFire
Type: Improvement
Components: Core
Versions: 1.1-beta-1
Environment: Java 5 on Linux
Reporter: Bernd Schuller
Assigned to: Dan Diephouse
Fix For: 1.1
When using the XFireProxy client to access a WS-Addressing enabled service, I
found it impossible to add headers such as wsa:To using the procedures outlined
in the user's guide. This is due to the fact that the user cannot set any
additional headers to be inserted.
A possible workaround/solution looks as follows.
1. Define a new out Handler
public class MyAddressingOutHandler extends AddressingOutHandler {
Map properties;
public MyAddressingOutHandler(Map properties){
this.properties=properties;
}
public void invoke(MessageContext context) throws Exception{
AddressingHeaders headers = (AddressingHeaders)
properties.get(AddressingInHandler.ADRESSING_HEADERS);
AddressingHeadersFactory factory = (AddressingHeadersFactory)
properties.get(AddressingInHandler.ADRESSING_FACTORY);
context.getCurrentMessage().setProperty(AddressingInHandler.ADRESSING_HEADERS,headers);
context.getCurrentMessage().setProperty(AddressingInHandler.ADRESSING_FACTORY,factory);
super.invoke(context);
}
}
2. add the new handler to the xfire outhandlers
3. set the properties before invoking the proxy:
Map properties=new HashMap();
AddressingHeaders ah=new AddressingHeaders();
ah.setAction("....");
ah.setTo("......");
properties.put(AddressingInHandler.ADRESSING_HEADERS.toString(),ah);
properties.put(AddressingInHandler.ADRESSING_FACTORY.toString(),new
AddressingHeadersFactory200508());
DefaultXFire
xfire=(DefaultXFire)XFireFactory.newInstance().getXFire();
xfire.addOutHandler(new
MyAddressingOutHandler(properties));
A real solution could be to copy the properties from the Service used to create
the proxy into the message context created in Client.invoke(), then the
standard wsa out handler would pick them up.
sorry for the long rant :)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira