Just thought I'd post out my modification of Matthew Good's code
snippet. I modified it to use the annotation to set the action name, or
if you did not specify the annotation, it will set the action name to
"*" instead. I also use the 2 arg version of the
AddressingOperationInfo class so that a default out action is specified
as well (I needed this to keep my C# client happy).
WebMethod wm = op.getMethod().getAnnotation(WebMethod.class);
String action = (wm == null || wm.action() == null) ? "*" : wm.action();
op.setProperty(AddressingOperationInfo.ADDRESSING_OPERATION_KEY,
new AddressingOperationInfo(action, op));
return super.getAction(op);
-----Original Message-----
From: Christopher Moesel [mailto:[EMAIL PROTECTED]
Sent: Wednesday, December 20, 2006 1:28 PM
To: [email protected]
Subject: RE: [xfire-user] WS-Addressing and XFire 1.2.3
Ah-OK. Yeah, pain in the neck, but it's better than the alternatives, I
guess. Thanks for the help!
As for the lack of JSR-181 WS-Addressing support, the documentation
should probably be changed to reflect that it doesn't work (or at least
to stay silent on the issue rather than saying it *does* work). Can
someone from the XFire team confirm this before I go and change the user
guide?
-Chris
-----Original Message-----
From: Matthew Good [mailto:[EMAIL PROTECTED]
Sent: Wednesday, December 20, 2006 1:14 PM
To: [email protected]
Subject: Re: [xfire-user] WS-Addressing and XFire 1.2.3
Annotations don't seem to work. I did this (found it in user guide
somewhere). I tried it using a specific name instead of "*" and it
works that way too. I know, pita.
/**
* This method is overridden because it is one place where all
OperationInfo instances
* go through just once when the application is initialized.
* It assigns AddressingOperationInfo objects to the operation so
that the WS-Addressing
* Action header can be interpreted. Note that we only have one
operation and by
* assigning the action name "*" it will match all actions.
*
* @see
org.codehaus.xfire.service.binding.ObjectServiceFactory#getAction(org.co
dehaus.xfire.service.OperationInfo)
*/
@Override
protected String getAction(OperationInfo op) {
op.setProperty(AddressingOperationInfo.ADDRESSING_OPERATION_KEY
, new AddressingOperationInfo("*"
, null
, op));
return super.getAction(op);
}
----- Original Message ----
From: Christopher Moesel <[EMAIL PROTECTED]>
To: [email protected]
Sent: Wednesday, December 20, 2006 10:36:52 AM
Subject: [xfire-user] WS-Addressing and XFire 1.2.3
Hello All,
I've spent some time trying to determine why I can't get my JSR-181 web
service to work with a C# client using the WSE 3.0 enhancements. I
think it comes down to WS-Addressing: WSE 3.0 insists on using WS-A,
and XFire doesn't appear to be properly registering the actions I'm
declaring via my annotations-so it rejects the client request because it
can't find the requested action.
According to the documentation at
http://xfire.codehaus.org/WS-Addressing, XFire supports WS-A (w/ no
caveats). The unresolved XFIRE-156 issue, however, states that XFire
does not yet support the WS-Addressing 1.0 spec. I'm not familiar w/
the differences in the 1.0 spec, but should this be stated in the docs,
since it's support is not schedule until 2.0-M1?
The documentation also says that the action can be set via JSR-181
Annotations. I think this may be incorrect. Has this been tested and
confirmed? I've been running this through my debugger and it looks to
me like the "action" annotation is never read. In addition, as far as I
can tell, none of the constructors for the AddressingOperationInfo class
are ever used in the XFire codebase-and this appears to be the class
consulted to check for a registered action. So I can't see how it would
ever work...
I'm still fairly new to XFire though... so maybe I'm completely missing
something. Can anyone shed some light on this for me?
Thanks,
Chris