RE: [asap] questions/concerns on initial working draft doc (and scope)

From
"[ichael Rhenfield"
Date
2003-10-07T19:24:24+00:00
ID
Thread
RE: [asap] questions/concerns on initial working draft doc (and scope)
Title: RE: [asap] questions/concerns on initial working draft doc (and scope)

Keith,

I went back to EJB spec to validate my point on stateless (vs. stateful) 
session beans. The following is from an EJB 2.1 final draft (section 1.2. What 
is New in EJB 2.1):

"We have 
added support for web services. We have added the ability for a 
stateless session bean to implement a web service endpoint. We have added support to 
allow all enterprise beans to utilize external web 
services." 

In the current J2EE/Java world 
only servlets and STATELESS session beans could implement a Web Service 
endpoint. Neither can support the protocol described in a current working draft 
(actually it's not true, one can come up with a model when the state is 
shared by servlet instances using a ServletContext object. It could be a sneaky 
way to implement monitoring but very inefficient and non scalable 
one) 

Cheers,

 

MS

  
-----Original Message-----
From: Michael Shenfield 
  
Sent: October 7, 2003 2:42 PM
To: Keith Swenson; ASAP 
  (E-mail)
Subject: RE: [asap] questions/concerns on initial working 
  draft doc (and scope)

  
Keith,

  
My 
  comments/answers are embedded in the orig. message. I suggested at the last 
  conference call that we define the scope of ASAP to clarify what this spec is 
  going to be about. It looks like we have different views on what it should 
  cover.

  
Thanks,

  
 

  
Michael 
  Shenfield 
Advanced Research 
  Group 
RIM 
 
905-629-4RIM x4347 
____________________ 
This 
  information is transmitted on a "WITHOUT PREJUDICE" basis. It is intended only 
  for the person or entity to which it is addressed and may contain confidential 
  and/or privileged material. Any review, retransmission, dissemination or other 
  use of, or taking of any action in reliance upon, this information by persons 
  or entities other than the intended recipient is prohibited. If you received 
  this in error, please contact the sender and delete the material from any 
  computer.

  
    
-----Original Message-----
From: Keith Swenson 
    [mailto:]
Sent: October 7, 2003 1:37 
    PM
To: Michael Shenfield; ASAP (E-mail)
Subject: RE: 
    [asap] questions/concerns on initial working draft doc (and 
    scope)

    
The whole point about ASAP is to set up a 'contract' to have 
    something done and to be able to check on its progress. [Michael 
    Shenfield] Re: "be able to check on its progress": 
    Then the name is misleading. The spec should either be 
    limited to dealing with async Web Services that support 
    monitoring (I see it as a small fraction) or to make monitoring 
    optional. From the wireless standpoint perspective monitoring is a waste of 
    valuable resources, for the "wired" client it could be useful but 
    requires much more complex implementation of a Web Service. As already 
    pointed out, the scalability will take a major hit as Web Service instance 
    cannot be stateless anymore. 
Perhaps more important 
    is the ability to change your mind and cancel it. [Michael 
    Shenfield] Again, it's up to the group, but I don't think of it as a 
    solid requirement. These are all things that need a 
    "correlation" id of some sort.  What ASAP oes it provide a simple way 
    to request something to be done and receive a correlation id that can be 
    used to check onthe progress.

    
There are many use cases that fit this model, but there are 
    also many that do not.  A "stateless session bean" is a pattern that 
    ASAP is not designed to support.  Instead, ASAP is designed for the 
    "stateful session bean" where you have a unique instance with an ID, and 
    subsequent requests go back to that same instance.  This session bean 
    is endowed with a goal, and it is expected to last until that goal is 
    accomplished, and then a little while after that (see the timeout 
    setting).  The goal could be "search four house listings for 3 months" 
    or something abstract like that.  [Michael Shenfield] The general agreement in a 
    Web Services J2EE world is that Web Services should only be exposed by 
    servlets or STATELESS session beans - there're tons of references on the 
    topic. I am not aware of any implementations of Java Web Services 
    running as stateful session beans (reasons: scalability, thread safety, 
    management/sharing issues, etc.)

    
For many implementations of ASAP, the factory will be like a 
    stateless session bean in that it is a web service that simply "exists" and 
    the starting and stopping of it is invisible to the outside world.  The 
    "service instances" then have a lifecycle that can be externally 
    monitored.[Michael Shenfield]  I don't have any problems with a 
    COMesque "CreateInstanceRq", I've used it for years in COM, as well as 
    Home interfaces' "ejbCreate" in EJB. I just don't see Web Services following 
    the same pattern, being involved in many Web Services activities I haven't 
    seen many that mandate user managed instance creation. The other reasons are 
    as per previous comments.

    
The concept of "fire and forget" (uncorrelated 
    messages)[Michael Shenfield]  "fire and forget" mode is a 
    user experience term. The message request and response(s) share same 
    correlation ID.

    
 is probably not what ASAP is designed to support.  This 
    would be a single call that later returns a result (or multiple 
    results).  This seems like it can be handled sufficiently with 
    (reliable) asynchronous messaging.  In this case you do not need a 
    correlation id, because there is no other communications with the 
    instance.  As you point out, these do not need monitoring or other 
    support.  Lets discuss this.

    
As for the concept of "multiple async responses", this is 
    quite definitely what ASAP is designed for.  There is no reason that 
    ASAP is restricted to a single response at the end.  Once the 
    correlation key is set up, the services on both sides can make further 
    requests to each other.  The simplest way to implement this is every 
    new result causes a change notification event back to the observer.  
    The event might (or might not) carry the new data.  If the event does 
    not carry the data, the observer can do a "GetProperties" in order to fetch 
    the changed data.  The former implementation is most likely to work 
    with a generic ASAP implementation, but people are alowed to extend the ASAP 
    protocol to include special methods, e.g. "NewSearchResult".  In this 
    case the ASAP sets up the basic instance which represents the agreement 
    between the client and realtor, and then the services can inspect the 
    interfaces supported, and if they both understand this extended command, 
    they use it.

    
Use of ASAP in the above example would allow the client to 
    modify the type of house they are looking for (after receiving a bunch of 
    uninteresting results) or terminate the search (in case they find their 
    dream house).[Michael Shenfield] see comment 
    #2 

    
Terminology is always a big problem.  We used to call 
    them "interfaces" and now we call the "port types".  I think that our 
    usage of "method" should be "operation" now, right? [Michael 
    Shenfield] No, method in your definition means "message". 
    Operation is defined as a set of Requset, Response, and 
    Notification messages  
If you see things 
    like this that obvisouly deviate from the SOAP norm, please bring these 
    up.  Our goal is to be consistent.  "Context data" & "result 
    data" on the other hand is a concept unique to ASAP for which there is no 
    other term (unless I have missed something).  [Michael 
    Shenfield] Web Service operations are defined using Request and 
    Response (if any) messages. I think "Request data" and "Response data" if 
    you want to define parts (or group of parts) will be more 
    consistent. 

    
These are parts of messages, but the key is that these structures 
    persist in the service instance, and can be queried and (in some cases 
    modified) by later operations.

    
BTW: We are designing Wf-XML as an extension of ASAP, and in 
    that the Factories themselves can be created and started.  This maps 
    into the BPM ability to define and start new business processes.  ASAP 
    is extended to add the new methods for the 'factory lifecycle'.

    
-Keith Swenson 
 
(408) 
    456-7667 

    
-----Original Message----- 
From: 
    Michael Shenfield [mailto:] 
    
Sent: Tuesday, October 07, 2003 9:45 AM 
To: ASAP (E-mail) 
Subject: [asap] 
    questions/concerns on initial working draft doc (and 
scope) 

    
Hi all, 
At the last conference call 
    we had a discussion on taking the initial working draft to the general 
    public. I suggested 'no' based on my initial impression from scanning 
    through the document 2 weeks ago. Finally, past weekend I was able to review 
    the document in detail. Here's the list of questions and/or concerns that I 
    would like to post here for your review:

    
- Factory "resource". 
I am not sure 
    about the concept of "factory" and passing observerURI as a part of 
    CreateInstanceRq. Let's take Java Web Services as an example. When a Web 
    Service deployed as a servlet the hosting Web Server container plays the 
    role of the "factory" but this is "invisible" for the caller. The caller 
    posts to the WS endpoint URI an HTTP request that contains the SOAP message 
    to be invoked. Lifecycle management of the servlet (as a WS instance) is not 
    covered by invocation protocol and therefore "creation" of the WS instance 
    is non of the caller's concern. Similar model stands for the Web Services 
    deployed as stateless session beans, the EJB container hides the creation 
    process. For all async Web Services deployed at RIM (to support application 
    initiated push to a wireless device) we have an "observer" URI (or rather 
    requestor endpoint) passed as a part of the Web Service message. The 
    requestor URI could also be submitted at registration (optionally with a 
    correlationID), so that all following correlated and uncorrelated 
    notifications could be posted to the requestor endpoint. This opens the 
    stage for the next question:

    
- Multiple async responses for a single request or 
    uncorrelated notification messages. 
One of the 
    possible deployments for async Web Services is when a single request causes 
    a number of responses. As an example, one of our demo Web Services "Realtor" 
    uses this model to send listings to a real estate agent registering a new 
    client. The model is obviously asynchronous as we don't want our real estate 
    clients wait (and pay for the airtime) till the request is processed. The 
    "client registration" message is a request that carries the client search 
    information, requestor endpoint URI and generated correlator ID to be used 
    for responses. The server is doing the search in MLS and asynchronously 
    sends found listings each in a separate SOAP message (here we have multiple 
    responses for a single req). Moreover, when a new listing is posted to MLS 
    the server is searching for interested clients and sends the listing to 
    their agents as a notification (correlated notification model). 
    Additionally, the Web Service is capable of sending uncorrelated 
    notifications. We implement the following model: when real estate agent is 
    logging in, the Realtor Web Service gets endpoint URI of the service proxy 
    (linked with the device) and when a new information for the agent is 
    available in the server (e.g. viewing appointment), the Web Service sends 
    uncorrelated notification to the endpoint URI. In my opinion both models 
    (multiple async responses and uncorrelated notification) should be included 
    in the scope of ASAP 

    
- Monitoring support. 
In the 
    document there is a lot of discussion on monitoring the execution process 
    and changing the state/properties during execution. I am not sure if this 
    should be mandatory for compliance, one can perfectly deploy the async Web 
    Service without support for monitoring or state change (see example above). 
    Moreover, as an implementer I am not clear on how to implement this 
    monitoring and state altering model in a scalable Web Service - in my 
    opinion it contradicts basic scalability considerations of J2EE or .NET 
    deployment. I think that ChangeState, GetProperties, SetProperties, and 
    StateChange msgs should be changed to optional. As for Subscribe, 
    Unsubscribe, and Completed, I am looking forward to the discussion on how it 
    should be defined in the ASAP context.

    
Introducing monitoring of the execution is identical to 
    polling for the completion/result and kills async efficiency. I understand 
    the async paradigm as the model where requestor "calls and forgets". The 
    implementation (and ASAP spec) should guarantee that the requestor gets the 
    results (or notified on completion) when ready. Am I missing something 
    here?

    
- Introduction Section. Language and terminology. 
    
It looks like the verbage of section 1 intentionally 
    deviates from the standard Web Services terminology and definitions. Is 
    there a reason for this? Why should we call SOAP messages as "methods", 
    Request data as "Context data", Response Data as "Results data", etc. Again, 
    I might be mistaken here but my impression was that ASAP is strictly about 
    Web Services?

    
Sorry to send this 20 mins prior to the conference call, but 
    as I didn't see posted agenda we can as well discuss these 
points.

    
Cheers, 

    
Michael Shenfield 
Advanced Research 
    Group 
RIM 
 
905-629-4RIM x4347 
    
____________________ 
This 
    information is transmitted on a "WITHOUT PREJUDICE" basis. It is intended 
    only for the person or entity to which it is addressed and may contain 
    confidential and/or privileged material. Any review, retransmission, 
    dissemination or other use of, or taking of any action in reliance upon, 
    this information by persons or entities other than the intended recipient is 
    prohibited. If you received this in error, please contact the sender and 
    delete the material from any computer.

    
To unsubscribe from this mailing list (and be removed from 
    the roster of the OASIS TC), go to http://www.oasis-open.org/apps/org/workgroup/asap/members/leave_workgroup.php.