Re: Axis1 style="message" in Axis2?
Can you clarify what Axis is generating an error if is not specified? I had commented out the dispatch phase from axis2.xml and it was still returning a 500. Where is the exception being logged? I'd like to have more confidence in the solution before investing too much time in it. "Ajith Ranabahu" <[EMAIL PROTECTED] mail.com> To axis-user@ws.apache.org 08/16/06 10:59 PM cc Subject Please respond to Re: Axis1 style="message" in Axis2? [EMAIL PROTECTED] he.org Hi, Given what you need to do (which is possible ofcourse) it simply requires a bit more knowledge about the internals of Axis2. I am going to outline a doable procedure but unfortunatley I don't have the time to write a lengthy description and elaborate each point. 1. You need to introduce a custom dispatcher (Axis does not enforce the action but it comes addressing enabled by default). What this dispatcher does is figuring out the static and runtime service and operation 'data bags'. We call them AxisService,AxisOperation and serviceContext, operationContext. Ultimately your custom dispatcher should provide the these 'data bags' relevant to your service. Please have a look at the dispatcher implementations to get an idea of how these work. 2. Write a custom message receiver. If you generate code for server side using a simple WSDL you will see the source for a custom message receiver. Modify the code off that not to find the method using the action. That should do it :) Ajith On 8/16/06, David Melgar <[EMAIL PROTECTED]> wrote: > 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 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 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 >axis-user@ws.apache.org > 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 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
Re: Axis1 style="message" in Axis2?
Hi, Given what you need to do (which is possible ofcourse) it simply requires a bit more knowledge about the internals of Axis2. I am going to outline a doable procedure but unfortunatley I don't have the time to write a lengthy description and elaborate each point. 1. You need to introduce a custom dispatcher (Axis does not enforce the action but it comes addressing enabled by default). What this dispatcher does is figuring out the static and runtime service and operation 'data bags'. We call them AxisService,AxisOperation and serviceContext, operationContext. Ultimately your custom dispatcher should provide the these 'data bags' relevant to your service. Please have a look at the dispatcher implementations to get an idea of how these work. 2. Write a custom message receiver. If you generate code for server side using a simple WSDL you will see the source for a custom message receiver. Modify the code off that not to find the method using the action. That should do it :) Ajith On 8/16/06, David Melgar <[EMAIL PROTECTED]> wrote: 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 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 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 axis-user@ws.apache.org 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 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 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 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]
Re: Axis1 style="message" in Axis2?
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 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 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 axis-user@ws.apache.org 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 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 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 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]
Re: Axis1 style="message" in Axis2?
On 26/07/06, David Melgar <[EMAIL PROTECTED]> wrote: Setting the message receiver to RawXMLMessageReceiver still appears to require 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 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 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]
RE: Axis1 style="message" in Axis2?
I ran into the same problem some time back in which I wanted Axis 1.x “message” style behavior in Axis 2 in order to dispatch to non-standard Java objects. I ended up using a work-around involving SOAPAction since Axis 2 contains an action-based dispatcher. So every operation defined in my WSDL specified the same SOAPAction value equal to my service method name. I was using RawXMLMessageReceiver with a single method. Note that I was using WSDL 1.1/SOAP 1.1. I haven’t tried this with SOAP 1.2/WSDL 2.0, which does not have SOAPAction, although it does make use of an action parameter with exactly the same semantics. I’m guessing you could do the same using wsa:Action header as well. It would definitely be nice though to have a wildcard with Axis 1.x “message” style semantics instead of having to work-around this problem. - Junaid From: David Melgar [mailto:[EMAIL PROTECTED] Sent: Wednesday, July 26, 2006 11:37 AM To: axis-user@ws.apache.org Subject: Re: Axis1 style="message" in Axis2? Setting the message receiver to RawXMLMessageReceiver still appears to require 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 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 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? "Anne Thomas Manes" <[EMAIL PROTECTED]> 07/25/2006 02:06 PM Please respond to axis-user@ws.apache.org To axis-user@ws.apache.org cc Subject Re: Axis1 style="message" in Axis2? Use the RawXMLMessageReceiver. On 7/25/06, David Melgar <[EMAIL PROTECTED]> wrote: > > I need to implement a message style web service in Axis2. In Axis1 wsdd, > this would be a web service declared with > > > How do I declare the equivalent web service in Axis2? In addition, I will > expect that WS-Addressing headers will be sent and received. From reading > the Axis2 documentation, it looks like the element is used > to map an action header value to an operation name. In my case I want Axis2 > to always send me the body of the message. I do not want Axis2 to try and > determine which operation is being invoked, I want it to send the message to > a specific method all the time, as a message style service did in Axis1. > > I'm doing this because my service is mapping web service invocations of > operations to another form of invocation on non-Java objects. > > Thanks - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Axis1 style="message" in Axis2?
Setting the message receiver to RawXMLMessageReceiver still appears to require 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 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 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? "Anne Thomas Manes" <[EMAIL PROTECTED]> 07/25/2006 02:06 PM Please respond to axis-user@ws.apache.org To axis-user@ws.apache.org cc Subject Re: Axis1 style="message" in Axis2? Use the RawXMLMessageReceiver. On 7/25/06, David Melgar <[EMAIL PROTECTED]> wrote: > > I need to implement a message style web service in Axis2. In Axis1 wsdd, > this would be a web service declared with > > > How do I declare the equivalent web service in Axis2? In addition, I will > expect that WS-Addressing headers will be sent and received. From reading > the Axis2 documentation, it looks like the element is used > to map an action header value to an operation name. In my case I want Axis2 > to always send me the body of the message. I do not want Axis2 to try and > determine which operation is being invoked, I want it to send the message to > a specific method all the time, as a message style service did in Axis1. > > I'm doing this because my service is mapping web service invocations of > operations to another form of invocation on non-Java objects. > > Thanks - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Re: Axis1 style="message" in Axis2?
Use the RawXMLMessageReceiver. On 7/25/06, David Melgar <[EMAIL PROTECTED]> wrote: I need to implement a message style web service in Axis2. In Axis1 wsdd, this would be a web service declared with How do I declare the equivalent web service in Axis2? In addition, I will expect that WS-Addressing headers will be sent and received. From reading the Axis2 documentation, it looks like the element is used to map an action header value to an operation name. In my case I want Axis2 to always send me the body of the message. I do not want Axis2 to try and determine which operation is being invoked, I want it to send the message to a specific method all the time, as a message style service did in Axis1. I'm doing this because my service is mapping web service invocations of operations to another form of invocation on non-Java objects. Thanks - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
Axis1 style="message" in Axis2?
I need to implement a message style web service in Axis2. In Axis1 wsdd, this would be a web service declared with How do I declare the equivalent web service in Axis2? In addition, I will expect that WS-Addressing headers will be sent and received. From reading the Axis2 documentation, it looks like the element is used to map an action header value to an operation name. In my case I want Axis2 to always send me the body of the message. I do not want Axis2 to try and determine which operation is being invoked, I want it to send the message to a specific method all the time, as a message style service did in Axis1. I'm doing this because my service is mapping web service invocations of operations to another form of invocation on non-Java objects. Thanks