You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Andrew Harrison <a....@cs.cardiff.ac.uk> on 2009/09/23 13:54:51 UTC

JAX WS Notification messages

Hi,

If I have a SEI with a method that returns a value, but takes in no  
parameters, i.e. a notification style message, the WSDL generated  
still contains an input message.

I have something like:

@WebMethod(operationName = "Event")
@WebResult(name = "Text")
public String event();

Which produces:

<wsdl:message name="EventResponse">
	<wsdl:part element="tns:Text" name="Text"></wsdl:part>
</wsdl:message>
<wsdl:message name="Event"></wsdl:message>
<wsdl:operation name="Event">
	<wsdl:input message="tns:Event" name="Event"></wsdl:input>
	<wsdl:output message="tns:EventResponse" name="EventResponse"></ 
wsdl:output>
</wsdl:operation>

If this is considered a bug, I can create a JIRA issue with a patch.

cheers,

Andrew








Re: JAX WS Notification messages

Posted by Andrew Harrison <a....@cs.cardiff.ac.uk>.
Hi Alessio,

You're not missing or misunderstanding anything :-)

WS-Eventing is exactly what I'm implementing.

cheers,

Andrew

On 24 Sep 2009, at 08:49, Alessio Soldano wrote:

> I might be missing something here or misunderstanding something  
> else, but this MEP make me think about WS-Eventing / WS- 
> Notification... perhaps the work for this could go in that direction??
>
> Alessio
>
> Daniel Kulp wrote:
>> On Wed September 23 2009 12:07:10 pm Andrew Harrison wrote:
>>
>>> Ah - interesting... I did try to find a JAX-WS @Notification
>>> annotation but to no avail.
>>>
>>> The wsdl2java tools blow up as well if there isn't an operation  
>>> input.
>>> I understand why now :-)
>>>
>>> Ok...
>>>
>>> It might be nice to support notification and solicit response. I  
>>> guess
>>> this is on the JAX-WS roadmap.
>>>
>>
>> Actually, I don't think it is.   It's never come up on the working  
>> group, at least not in the last couple years.   In general, JAX-WS  
>> really uses more of a registered callback mechanism with WS-A type  
>> references to have a service send  a notice back (via request/ 
>> response) to the client.   Thus, anything we would do around it  
>> would be proprietary, which isn't a bad thing, BTW.
>>
>> Kind of comes down to how would it look in the generated code?
>>
>> Something like:
>> public String event();
>> isn't really good as the client would "block" until an event came.   
>> Thus, something more like:
>> public void registerEventHandler(AsyncHandler<Response<String>>  
>> reponse) or similar to register some sort of callback thing is  
>> probably more appropriate.
>> Server side is even more complex.   Some sort of handler or  
>> something would need to be injected/registered with the server impl  
>> that could then call those to produce the events.
>> There are also the more complex issues like "what does this look  
>> like when using http?" and similar issues which is basically why  
>> jax-ws punted on it.
>>
>> In any case, this is definitely an "interesting" project, but it's  
>> also not exactly a small project.
>> Dan
>>
>>
>>
>>
>>> Thanks,
>>>
>>> Andrew
>>>
>>> On 23 Sep 2009, at 16:52, Daniel Kulp wrote:
>>>
>>>> Not a bug, this mapping is correct.   JAX-WS doesn't support
>>>> notification
>>>> style stuff.    All methods are either request/response or one-way.
>>>>
>>>> If this is needed, we'd need to create new non-standard annotations
>>>> and such
>>>> to mark this.  (doable pretty easily on 2.3/trunk, not as easy on  
>>>> 2.2)
>>>>
>>>> Dan
>>>>
>>>> On Wed September 23 2009 7:54:51 am Andrew Harrison wrote:
>>>>
>>>>> Hi,
>>>>>
>>>>> If I have a SEI with a method that returns a value, but takes in  
>>>>> no
>>>>> parameters, i.e. a notification style message, the WSDL generated
>>>>> still contains an input message.
>>>>>
>>>>> I have something like:
>>>>>
>>>>> @WebMethod(operationName = "Event")
>>>>> @WebResult(name = "Text")
>>>>> public String event();
>>>>>
>>>>> Which produces:
>>>>>
>>>>> <wsdl:message name="EventResponse">
>>>>> 	<wsdl:part element="tns:Text" name="Text"></wsdl:part>
>>>>> </wsdl:message>
>>>>> <wsdl:message name="Event"></wsdl:message>
>>>>> <wsdl:operation name="Event">
>>>>> 	<wsdl:input message="tns:Event" name="Event"></wsdl:input>
>>>>> 	<wsdl:output message="tns:EventResponse" name="EventResponse"></
>>>>> wsdl:output>
>>>>> </wsdl:operation>
>>>>>
>>>>> If this is considered a bug, I can create a JIRA issue with a  
>>>>> patch.
>>>>>
>>>>> cheers,
>>>>>
>>>>> Andrew
>>>>>
>>
>>
>
>
> -- 
> Alessio Soldano
> Web Service Lead, JBoss
>


Re: JAX WS Notification messages

Posted by Alessio Soldano <as...@redhat.com>.
I might be missing something here or misunderstanding something else, 
but this MEP make me think about WS-Eventing / WS-Notification... 
perhaps the work for this could go in that direction??

Alessio

Daniel Kulp wrote:
> On Wed September 23 2009 12:07:10 pm Andrew Harrison wrote:
>   
>> Ah - interesting... I did try to find a JAX-WS @Notification
>> annotation but to no avail.
>>
>> The wsdl2java tools blow up as well if there isn't an operation input.
>> I understand why now :-)
>>
>> Ok...
>>
>> It might be nice to support notification and solicit response. I guess
>> this is on the JAX-WS roadmap.
>>     
>
> Actually, I don't think it is.   It's never come up on the working group, at 
> least not in the last couple years.   In general, JAX-WS really uses more of a 
> registered callback mechanism with WS-A type references to have a service send  
> a notice back (via request/response) to the client.   Thus, anything we would 
> do around it would be proprietary, which isn't a bad thing, BTW.  
>
>
> Kind of comes down to how would it look in the generated code?
>
> Something like:
> public String event();
> isn't really good as the client would "block" until an event came.  Thus, 
> something more like:
> public void registerEventHandler(AsyncHandler<Response<String>> reponse) 
> or similar to register some sort of callback thing is probably more 
> appropriate.  
>
> Server side is even more complex.   Some sort of handler or something would 
> need to be injected/registered with the server impl that could then call those 
> to produce the events.   
>
> There are also the more complex issues like "what does this look like when 
> using http?" and similar issues which is basically why jax-ws punted on it.
>
> In any case, this is definitely an "interesting" project, but it's also not 
> exactly a small project.  
>
> Dan
>
>
>
>   
>> Thanks,
>>
>> Andrew
>>
>> On 23 Sep 2009, at 16:52, Daniel Kulp wrote:
>>     
>>> Not a bug, this mapping is correct.   JAX-WS doesn't support
>>> notification
>>> style stuff.    All methods are either request/response or one-way.
>>>
>>> If this is needed, we'd need to create new non-standard annotations
>>> and such
>>> to mark this.  (doable pretty easily on 2.3/trunk, not as easy on 2.2)
>>>
>>> Dan
>>>
>>> On Wed September 23 2009 7:54:51 am Andrew Harrison wrote:
>>>       
>>>> Hi,
>>>>
>>>> If I have a SEI with a method that returns a value, but takes in no
>>>> parameters, i.e. a notification style message, the WSDL generated
>>>> still contains an input message.
>>>>
>>>> I have something like:
>>>>
>>>> @WebMethod(operationName = "Event")
>>>> @WebResult(name = "Text")
>>>> public String event();
>>>>
>>>> Which produces:
>>>>
>>>> <wsdl:message name="EventResponse">
>>>> 	<wsdl:part element="tns:Text" name="Text"></wsdl:part>
>>>> </wsdl:message>
>>>> <wsdl:message name="Event"></wsdl:message>
>>>> <wsdl:operation name="Event">
>>>> 	<wsdl:input message="tns:Event" name="Event"></wsdl:input>
>>>> 	<wsdl:output message="tns:EventResponse" name="EventResponse"></
>>>> wsdl:output>
>>>> </wsdl:operation>
>>>>
>>>> If this is considered a bug, I can create a JIRA issue with a patch.
>>>>
>>>> cheers,
>>>>
>>>> Andrew
>>>>         
>
>   


-- 
Alessio Soldano
Web Service Lead, JBoss


Re: JAX WS Notification messages

Posted by Andrew Harrison <a....@cs.cardiff.ac.uk>.
Hi,

Firstly, because mailing lists are largely populated with problems,  
I'd just like to say, the CXF APIs are really flexible, and I've got  
some cool things going with very little code.

So, I don't see it as being so complicated as long as you throw out  
the client/server paradigm that WS (or message-orientation) was  
supposed to get beyond. So there is Source and Sink, rather than  
server/client. Both play both roles of client and server.

What I've just got going is:

1. Source has an out-only operation.
2. An interested Sink generates an inversion of that interface, i.e.  
all the outs are turned to ins and vise versa, and publishes a service  
with that interface (a org.apache.cxf.endpoint.Server)
3. The Source creates a org.apache.cxf.endpoint.Client with a similar  
inversion, and sends messages to the Sink when it feels like it,  
behaving like a client.

Works a treat (with a very simple case :-)).

cheers,

Andrew




On 23 Sep 2009, at 21:01, Daniel Kulp wrote:

> On Wed September 23 2009 12:07:10 pm Andrew Harrison wrote:
>> Ah - interesting... I did try to find a JAX-WS @Notification
>> annotation but to no avail.
>>
>> The wsdl2java tools blow up as well if there isn't an operation  
>> input.
>> I understand why now :-)
>>
>> Ok...
>>
>> It might be nice to support notification and solicit response. I  
>> guess
>> this is on the JAX-WS roadmap.
>
> Actually, I don't think it is.   It's never come up on the working  
> group, at
> least not in the last couple years.   In general, JAX-WS really uses  
> more of a
> registered callback mechanism with WS-A type references to have a  
> service send
> a notice back (via request/response) to the client.   Thus, anything  
> we would
> do around it would be proprietary, which isn't a bad thing, BTW.
>
>
> Kind of comes down to how would it look in the generated code?
>
> Something like:
> public String event();
> isn't really good as the client would "block" until an event came.   
> Thus,
> something more like:
> public void registerEventHandler(AsyncHandler<Response<String>>  
> reponse)
> or similar to register some sort of callback thing is probably more
> appropriate.
>
> Server side is even more complex.   Some sort of handler or  
> something would
> need to be injected/registered with the server impl that could then  
> call those
> to produce the events.
>
> There are also the more complex issues like "what does this look  
> like when
> using http?" and similar issues which is basically why jax-ws punted  
> on it.
>
> In any case, this is definitely an "interesting" project, but it's  
> also not
> exactly a small project.
>
> Dan
>
>
>
>>
>> Thanks,
>>
>> Andrew
>>
>> On 23 Sep 2009, at 16:52, Daniel Kulp wrote:
>>> Not a bug, this mapping is correct.   JAX-WS doesn't support
>>> notification
>>> style stuff.    All methods are either request/response or one-way.
>>>
>>> If this is needed, we'd need to create new non-standard annotations
>>> and such
>>> to mark this.  (doable pretty easily on 2.3/trunk, not as easy on  
>>> 2.2)
>>>
>>> Dan
>>>
>>> On Wed September 23 2009 7:54:51 am Andrew Harrison wrote:
>>>> Hi,
>>>>
>>>> If I have a SEI with a method that returns a value, but takes in no
>>>> parameters, i.e. a notification style message, the WSDL generated
>>>> still contains an input message.
>>>>
>>>> I have something like:
>>>>
>>>> @WebMethod(operationName = "Event")
>>>> @WebResult(name = "Text")
>>>> public String event();
>>>>
>>>> Which produces:
>>>>
>>>> <wsdl:message name="EventResponse">
>>>> 	<wsdl:part element="tns:Text" name="Text"></wsdl:part>
>>>> </wsdl:message>
>>>> <wsdl:message name="Event"></wsdl:message>
>>>> <wsdl:operation name="Event">
>>>> 	<wsdl:input message="tns:Event" name="Event"></wsdl:input>
>>>> 	<wsdl:output message="tns:EventResponse" name="EventResponse"></
>>>> wsdl:output>
>>>> </wsdl:operation>
>>>>
>>>> If this is considered a bug, I can create a JIRA issue with a  
>>>> patch.
>>>>
>>>> cheers,
>>>>
>>>> Andrew
>>
>
> -- 
> Daniel Kulp
> dkulp@apache.org
> http://www.dankulp.com/blog


Re: JAX WS Notification messages

Posted by Daniel Kulp <dk...@apache.org>.
On Wed September 23 2009 12:07:10 pm Andrew Harrison wrote:
> Ah - interesting... I did try to find a JAX-WS @Notification
> annotation but to no avail.
> 
> The wsdl2java tools blow up as well if there isn't an operation input.
> I understand why now :-)
> 
> Ok...
> 
> It might be nice to support notification and solicit response. I guess
> this is on the JAX-WS roadmap.

Actually, I don't think it is.   It's never come up on the working group, at 
least not in the last couple years.   In general, JAX-WS really uses more of a 
registered callback mechanism with WS-A type references to have a service send  
a notice back (via request/response) to the client.   Thus, anything we would 
do around it would be proprietary, which isn't a bad thing, BTW.  


Kind of comes down to how would it look in the generated code?

Something like:
public String event();
isn't really good as the client would "block" until an event came.  Thus, 
something more like:
public void registerEventHandler(AsyncHandler<Response<String>> reponse) 
or similar to register some sort of callback thing is probably more 
appropriate.  

Server side is even more complex.   Some sort of handler or something would 
need to be injected/registered with the server impl that could then call those 
to produce the events.   

There are also the more complex issues like "what does this look like when 
using http?" and similar issues which is basically why jax-ws punted on it.

In any case, this is definitely an "interesting" project, but it's also not 
exactly a small project.  

Dan



> 
> Thanks,
> 
> Andrew
> 
> On 23 Sep 2009, at 16:52, Daniel Kulp wrote:
> > Not a bug, this mapping is correct.   JAX-WS doesn't support
> > notification
> > style stuff.    All methods are either request/response or one-way.
> >
> > If this is needed, we'd need to create new non-standard annotations
> > and such
> > to mark this.  (doable pretty easily on 2.3/trunk, not as easy on 2.2)
> >
> > Dan
> >
> > On Wed September 23 2009 7:54:51 am Andrew Harrison wrote:
> >> Hi,
> >>
> >> If I have a SEI with a method that returns a value, but takes in no
> >> parameters, i.e. a notification style message, the WSDL generated
> >> still contains an input message.
> >>
> >> I have something like:
> >>
> >> @WebMethod(operationName = "Event")
> >> @WebResult(name = "Text")
> >> public String event();
> >>
> >> Which produces:
> >>
> >> <wsdl:message name="EventResponse">
> >> 	<wsdl:part element="tns:Text" name="Text"></wsdl:part>
> >> </wsdl:message>
> >> <wsdl:message name="Event"></wsdl:message>
> >> <wsdl:operation name="Event">
> >> 	<wsdl:input message="tns:Event" name="Event"></wsdl:input>
> >> 	<wsdl:output message="tns:EventResponse" name="EventResponse"></
> >> wsdl:output>
> >> </wsdl:operation>
> >>
> >> If this is considered a bug, I can create a JIRA issue with a patch.
> >>
> >> cheers,
> >>
> >> Andrew
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog

Re: JAX WS Notification messages

Posted by Andrew Harrison <a....@cs.cardiff.ac.uk>.
Ah - interesting... I did try to find a JAX-WS @Notification  
annotation but to no avail.

The wsdl2java tools blow up as well if there isn't an operation input.  
I understand why now :-)

Ok...

It might be nice to support notification and solicit response. I guess  
this is on the JAX-WS roadmap.

Thanks,

Andrew



On 23 Sep 2009, at 16:52, Daniel Kulp wrote:

>
> Not a bug, this mapping is correct.   JAX-WS doesn't support  
> notification
> style stuff.    All methods are either request/response or one-way.
>
> If this is needed, we'd need to create new non-standard annotations  
> and such
> to mark this.  (doable pretty easily on 2.3/trunk, not as easy on 2.2)
>
> Dan
>
>
> On Wed September 23 2009 7:54:51 am Andrew Harrison wrote:
>> Hi,
>>
>> If I have a SEI with a method that returns a value, but takes in no
>> parameters, i.e. a notification style message, the WSDL generated
>> still contains an input message.
>>
>> I have something like:
>>
>> @WebMethod(operationName = "Event")
>> @WebResult(name = "Text")
>> public String event();
>>
>> Which produces:
>>
>> <wsdl:message name="EventResponse">
>> 	<wsdl:part element="tns:Text" name="Text"></wsdl:part>
>> </wsdl:message>
>> <wsdl:message name="Event"></wsdl:message>
>> <wsdl:operation name="Event">
>> 	<wsdl:input message="tns:Event" name="Event"></wsdl:input>
>> 	<wsdl:output message="tns:EventResponse" name="EventResponse"></
>> wsdl:output>
>> </wsdl:operation>
>>
>> If this is considered a bug, I can create a JIRA issue with a patch.
>>
>> cheers,
>>
>> Andrew
>>
>
> -- 
> Daniel Kulp
> dkulp@apache.org
> http://www.dankulp.com/blog


Re: JAX WS Notification messages

Posted by Daniel Kulp <dk...@apache.org>.
Not a bug, this mapping is correct.   JAX-WS doesn't support notification 
style stuff.    All methods are either request/response or one-way.   

If this is needed, we'd need to create new non-standard annotations and such 
to mark this.  (doable pretty easily on 2.3/trunk, not as easy on 2.2)

Dan


On Wed September 23 2009 7:54:51 am Andrew Harrison wrote:
> Hi,
> 
> If I have a SEI with a method that returns a value, but takes in no
> parameters, i.e. a notification style message, the WSDL generated
> still contains an input message.
> 
> I have something like:
> 
> @WebMethod(operationName = "Event")
> @WebResult(name = "Text")
> public String event();
> 
> Which produces:
> 
> <wsdl:message name="EventResponse">
> 	<wsdl:part element="tns:Text" name="Text"></wsdl:part>
> </wsdl:message>
> <wsdl:message name="Event"></wsdl:message>
> <wsdl:operation name="Event">
> 	<wsdl:input message="tns:Event" name="Event"></wsdl:input>
> 	<wsdl:output message="tns:EventResponse" name="EventResponse"></
> wsdl:output>
> </wsdl:operation>
> 
> If this is considered a bug, I can create a JIRA issue with a patch.
> 
> cheers,
> 
> Andrew
> 

-- 
Daniel Kulp
dkulp@apache.org
http://www.dankulp.com/blog