Re: Review of draft-merrick-jms-uri-05

Hi Harald,

Further responses, inline below.

Harald Alvestrand wrote:
> Eric Johnson wrote:
>> Hi Harald,
>>
>> Thank you for your feedback.  Sorry for the long delay in responding
>> to you.
>>
>> The SOAP/JMS working group at the W3C has a response to all but one of
>> your concerns, I think.  Those responses are noted below.
>>
>> Harald Alvestrand wrote:
>>  
>>> Document: draft-merrick-jms-uri-05
>>> Reviewer: Harald Tveit Alvestrand
>>> Type of review: Apps area review
>>> Date: February 5, 2009
>>>

[snip]

>>>
>>> I think it a pity that the examples given give the impression that these
>>> mechanisms are strictly local in scope - a "jndi name" of REQ_QUEUE, and
>>> a "jndiURL" of file:/C:/JMSadmin both give the impression that these
>>> URLs won't ever be resolvable outside of a quite local context.
>>> I suspect that it is possible to construct JMS URLs that can be shared
>>> globally with an expectation of uniform interpretation - if such exist,
>>> it would be better for the document if they had been used in examples.
>>>
>>>     
>>
>> The answer is slightly more subtle - JMS URIs can span the globe, but
>> that implies a shared context that also spans the globe.  I'm thinking
>> that the following additional paragraph in the introduction might help
>> to clarify:
>>
>> As a consequence of building upon an API, rather than a protocol, the
>> utility of a "jms" URI depends on the context in which it is used.
>> Critical details affecting utility include agreement on the same JMS
>> provider or underlying protocol, agreement on the context for looking up
>> endpoints, and when using serialized Java object messages, sufficiently
>> similiar Java Class environments that the object can be appropriately
>> read and written.  Uses of this scheme must establish the necessary
>> shared context - a context which can span the globe, or merely a small
>> local network.  With that shared context, this URI scheme enables
>> endpoint identification in a uniform way, and the means to connect to
>> those endpoints.
>>   
> Thanks - those words help.
> The important point is that use of the URI depends on a shared context,
> and that context cannot be identified from the URI. Indeed, there may be
> valid cases where the same URI is resolvable in two different contexts,
> with two different results.
> 
> That leaves me sad, because it is exactly opposite to what the "U" in
> "URI" sometimes stood for, but it's a valid specifier choice. The added
> paragraph indeed makes it clearer.

It is possible, with the current definition, to have a jms URI that
points to its JNDI server somewhere "out there."  So all is not lost.
It just seems like an unlikely case, given how JMS is currently deployed.

>>>
>>> - in section 4.1, some "shared" parameters are defined, but in section
>>> 4, it says that new variants can be defined, whose parameters should
>>> begin with the variant name as prefix (without specifying a separator
>>> character). Is there an expectation that there will never be a variant
>>> called "delivery", "time" or "priority"? If so, should this expectation
>>> be documented? (what about the "del" variant? possible or not?)
>>>
>>>     
>>
>> I've been aware of this this point since we introduced the variants.  I
>> see variants as so rare that this is essentially a moot issue.  In
>> practice, I think there is at most one additional variant per vendor,
>> and the market pressures are such that there will not be many
>> implementations.
>>   
> Is there a reason to claim a registry for variants?
>>
>>  
>>> - in section 4.2.1, it seems somewhat bizarre that the JNDI-specific
>>> parameters all start with "jndi", while section 4.2.1.4 states that
>>> additional JNDI-specific parameters should start wiht "jndi-" (note the
>>> additional dash). Why not be uniform?
>>>     
>>
>> We're still discussing this in the working group.  We've not settled on
>> an answer because I think there multiple tensions here, such as between
>> brevity and completeness, familiarity vs. convention, and so forth.
>> We'll hopefully have a more complete answer soon.
>>   
> Good.

Here's the break-down.  There are actually three classes of properties
being specified in the parameters:
 1. Standard properties for identifying JNDI
    * jndiInitialContextFactory
    * jndiURL
 2. Custom properties for connecting to JNDI - need to spell out the
runtime name for these parameters.
    * Parameters we currently suggest start with "jndi-"
 3. JDNI Resources to retrieve once connected\
    * jndiConnectionFactoryName

We use the hyphen in case #2 to flag that what follows the hyphen is an
actual string value for the name of a property to set when constructing
the Map for the initial context.  We discussed always using the actual
Java constants even for case #1, but that would mean that instead of
specifying "jndiURL", we'd have to specify:

 * jndi-java.naming.provider.url (jndiURL)
 * jndi-java.naming.factory.initial (jndiInitialContextFactory)

In this case, we think convention, brevity, and clarity trumps
consistency, in that most JMS developers think of the "jndiURL" instead
of the "java.naming.provider.url"

That does, however, leave the question open - what should we do about
the "jndi-" case, where the URI needs to contain the actual name of the
property to use?  We had chosen the "jndi-" prefix over an alternate
prefix of "jndiContextParameter-", because we thought that we didn't
lose much in the brevity.

Now that we observe that we apparently did lose something in the
brevity.  In our first encounter outside our working group we got the
equivalent of a "huh?" from you. To remedy, we propose switching back to
the more verbose prefix of "jndiContextParameter-".

Do you think switching prefixes allays your concerns?

>>  
>>> - the fact that the URI needs to be in UTF-8 only surfaces in section 5,
>>> long after the definition of the URI, and long after I'd started
>>> wondering about it. I think it would be better if this section was moved
>>> up  after section 3, just after the URI syntax is defined.
>>>     
>>
>> There's a trade-off here.  We could move the entire section here up to
>> be a sub-section of #3.  I think there's some value to having an top
>> level-"encoding considerations" section called out in the TOC, and I
>> don't see how we move that closer to the front.
>>   
> One way would be to place in #3 a note saying "The URIs are
> percent-encoded UTF-8. See section 5 for encoding considerations".

Excellent.  I'll keep this in mind for the next small round of edits.

Thanks again for your time.

-Eric Johnson.

Received on Monday, 13 April 2009 19:02:30 UTC