[ http://jira.codehaus.org/browse/XFIRE-347?page=comments#action_63570 ] 

Dan Diephouse commented on XFIRE-347:
-------------------------------------

Thanks for the long rant. This is an area where we do need work. I like your 
idea where the addressingouthandler should just pick them up from the service. 
Want to help? I'll take a peek at this in the next day or two as well.


> 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
>     Assignee: 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

Reply via email to