I'm still trying to figure out how to deploy a message style service
WITHOUT having to declare each possible wsa:Action value which might be
used on the invocation. Its a message style service... I dont want or need
Axis to figure out what method to invoke. There's only one method
available.
I tried the 1st possible solution mentioned below,
"1. Remove the dispach phase from your Axis2 configuration and write
your own MessageReceiver (which removes the need for an AxisOperation
to be identified)"
I wrote a new message receiver but ran into bigger problems. If I remove
the <actionMapping> tags in the service's deployment descriptor, my new
message receiver never gets called. I receive a fault with a response code
500 with no additional information to help diagnose where the problem
occured. Nothing showed up in Tomcat's catalina.log.
Same problem seems to occur if the wsa:Action header value in the request
doesn't match the set of <actionMapping> tags for the service.
I tried commenting out the dispatch phase as stated as a suggestion without
any difference in behavior.
Suggestions? Is there an easier way to accomplish this? It still appears to
me to be an Axis design issue. Axis should not force declaration of
specific wsa:Action values for a message based service. It could be an
option, but should not be required. Wildcard or similar should be
supported.
"David Illsley"
<[EMAIL PROTECTED]
il.com> To
[email protected]
07/26/06 02:00 PM cc
Subject
Please respond to Re: Axis1 style="message" in Axis2?
[EMAIL PROTECTED]
he.org
On 26/07/06, David Melgar <[EMAIL PROTECTED]> wrote:
>
>
> Setting the message receiver to RawXMLMessageReceiver still appears to
require <actionMapping> to determine which method to invoke. In axis1, the
specified method would receive all messages for that service. Equivalent
behavior should be available in axis2 regardless of the value of the
wsa:Action header.
>
> To further clarrify, the service I'm writing bridges between webservices
and a non-Java object invocation mechanism. It dynamically determines what
operations are allowed. This services does not know at deployment time what
operations are possible. I therefore don't know all the wsa:Action header
values that it might be included in request messages. Therefore I cannot
declare <actionMapping> values in the service deployment descriptor. In
case you're wondering, this service also dynamically generates WSDL to
describe the discovered supported operations.
>
> Is there a way to wildcard <actionMapping> to say that any action maps to
a method? Or to avoid the requirement for specifying an actionMapping if
RawXMLMessageReceiver is used.
>
> Are there other approaches that could be used?
What you are trying to do sounds pretty advanced (given that you're
dynamically generating WSDL).
There are a couple of options I can think of...
1. Remove the dispach phase from your Axis2 configuration and write
your own MessageReceiver (which removes the need for an AxisOperation
to be identified)
2. Define a single operation for the service and add a handler to the
DispatchPhase which selects that operation when the
RawXMLInOutReceiver will then invoke on the endpoint object.
David
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]