<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Hi Richard,<br>
    <br>
    On 11/24/2010 11:18 AM, Richard Opalka wrote:<br>
    <blockquote cite="mid:4CECE668.1040506@redhat.com" type="cite">
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p> We'll then have the records' management configuration,
            which is also something configured at server level
            (WSMemoryBufferRecorder, WSLogRecorder, etc. currently in
            stack-specific-jboss-beans.xml).<br>
          </p>
        </div>
      </blockquote>
      I don't like this records management framework<br>
      (don't take it personal Alessio, please ;) ).<br>
      I didn't notice on our forums or from our customers<br>
      they use it (I might be wrong of course)?<br>
      <br>
      For now I'd say this is NICE TO HAVE FEATURE once we're done<br>
      with AS 7 integration work and we're passing TCK6 with it.<br>
      We can keep it in mind a provide integration hooks to our<br>
      JBossWS API/SPI so it's easily implementable in the future ;)<br>
    </blockquote>
    <br>
    yeah, for sure this is not the main focus of the discussion, nor a
    top priority thing, it was just an example of something whose
    configuration is to be at server level and not at deployment level.
    Regarding liking it or not... we can think about improving it :-P In
    the end, anyway, this is one of the things that could serve as a
    starting point / hook for a decent JON integration... (you know
    productivity, if only we find some time for getting back to that
    again..)<br>
    <br>
    <br>
    <blockquote cite="mid:4CECE668.1040506@redhat.com" type="cite">
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p> Besides the easy things above, we should probably allow
            for pre-configuring a given application server instance with
            default endpoints (perhaps clients too in the future),
            meaning users can specify an endpoint configuration and have
            that endpoint included as part of the application server,
            the same way they would have had if they deployed an archive
            with the corresponding endpoint declaration [2].</p>
        </div>
      </blockquote>
      I don't see real world usecases here.<br>
      If you'll provide some we can start discussing it.<br>
      <br>
      For now I'd say again this is NICE TO HAVE FEATURE once we're done<br>
      with AS 7 integration work and we're passing TCK6 with it.<br>
      We can keep it in mind a provide integration hooks to our<br>
      JBossWS API/SPI so it's easily implementable in the future ;)<br>
    </blockquote>
    <br>
    This would both be a proof that a proper separation of concerns is
    in place and come for free once the endpoint service is ready.
    Basically you have endpoints configurable from the domain.<br>
    Regarding usecases, for sure there're cases requiring the endpoint
    creation to be a service (Thomas Diesler has been mentioning that to
    me for his osgi work, for instance). We can for sure delay the
    domain part of this work, but that's just a thin wrapper around the
    actual work (providing the endpoint service) ;-)<br>
    <br>
    &nbsp; <br>
    <blockquote cite="mid:4CECE668.1040506@redhat.com" type="cite">
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p><strong>API REVIEW</strong></p>
          <p style="min-height: 8pt; height: 8pt; padding: 0px;">&nbsp;</p>
          <p>In the process of revisiting the JBossWS SPI, we need to
            properly split the current jbossws-spi project contents
            into:<br>
            - a set of classes/interfaces required for proper
            abstraction of jbossws components (pretty much what we have
            today, 2 stacks, perhaps multiple supported target
            container[3], ...) and to have a defined interface towards
            other related jboss projects (EJB3 for instance)<br>
          </p>
        </div>
      </blockquote>
      This is what we have today. But I definitely agree this needs
      further/proper cleanup!<br>
      BTW there's EJB3 integration review on my plate. Hopefully this
      will be fixed with AS7 integration.<br>
    </blockquote>
    Yes. This is one of the reason I'd like to get started with this
    jbws 4 work asap, Carlo is needing any changes to the interface with
    WS well before AS 7 goes Beta1 (as EJB3 is meant for Beta1 as far as
    I understood)<br>
    <br>
    <br>
    <blockquote cite="mid:4CECE668.1040506@redhat.com" type="cite">
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p> - a public API meant for actual user consumption, which
            would end up in a AS7 module visible to user deployments<br>
            The latter is going to include the classes/interfaces the
            domain model maps to (ws config, records stuff,
            service/endpoint/deployment basic stuff like endpoint class,
            publish address, ...) and what's required for tooling
            (wsconsume / wsprovide Ant tasks, command classes, etc.)</p>
        </div>
      </blockquote>
      Yes, we'll discuss this later.<br>
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p style="min-height: 8pt; height: 8pt; padding: 0px;">&nbsp;</p>
          <p><strong>CONTAINER INTEGRATION</strong></p>
          <p style="min-height: 8pt; height: 8pt; padding: 0px;">&nbsp;</p>
          <p>For integrating into AS7, we need to rethink the way
            jbossws handles deployments in terms of services (which are
            one of the key elements of AS7). At the end of the day, what
            the ws subsystem is supposed to do is providing facilities
            for starting/stopping webservice endpoints (and clients).
            Given the management requests of AS7, the domain model, etc.
            it's time to think about that as something not directly tied
            to the deployment process only, but generally available as a
            service instead. Other services in the application server
            might depend on or simply make use of this service [2]. The
            deployers (DeploymentUnitProcessors in AS7) should just be
            "clients" of this service.<br>
          </p>
        </div>
      </blockquote>
      This is good point for another discussion.<br>
      For the beginning I'd say AS 7 service<br>
      is something similar to AS 6 deployers.<br>
    </blockquote>
    What I'm saying is that AS7 deployers are not going to do all the
    things they used to do in AS6. Part of the work is not actually up
    to the deployers and needs to be factored out to a more generic
    service / set of services everybody can use, regardless of deployers
    being used or not.<br>
    <br>
    <br>
    <blockquote cite="mid:4CECE668.1040506@redhat.com" type="cite">
      We've been leveraging AS 6 deployers<br>
      to call our DAs. I'd say for initial AS 7<br>
      integration we should leverage AS 7 service for that purpose.<br>
      Once this is done (and we'll be more familiar with AS 7
      architecture)<br>
      we can get it to the next level.<br>
    </blockquote>
    Well, a good part of the changes in AS7 is in this service way of
    thinking. I'd like to get to a good design with that, then we can
    think about possible milestones to get there. Please note that
    anything not really make use of the AS facilities properly is not
    going to be pulled upstream and this is a major release both for AS
    and JBWS, so it's a chance for reviewing the design.<br>
    <br>
    <br>
    <blockquote cite="mid:4CECE668.1040506@redhat.com" type="cite">
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p> To a certaint extent this way of thinking about the
            container integration fits with what has been done in JAXWS
            2.2 Endpoint API and -for instance- the way an Apache CXF
            endpoint is started. </p>
        </div>
      </blockquote>
      My 2c:<br>
      &nbsp;* This won't work for JAXRPC.<br>
      &nbsp;* nice idea, but we need to discuss it in more details <br>
      &nbsp;&nbsp; (i.e. how to do it for JAXWS endpoints (don't forget about EJB3
      JAXWS endpoints here))<br>
    </blockquote>
    please do not get me wrong, I'm not saying I want to directly use
    the Endpoint API. I'm just saying that we can see this similarly, we
    need to think about the deployment process in terms of a) something
    strictly related to setting up the container for the ws deployment,
    b) actually creating the endpoint and connecting it to the
    container. Theoretically speaking (b) is pretty much what is going
    to the service. This said, for sure we need to deal with the
    details, but that comes after agreeing on a vision.<br>
    <br>
    Regarding JAXRPC, it's legacy stuff, so it's acceptable to treat
    that differently if we need to (meaning no domain / public available
    service &amp; api for that). Just the "minimum" required for
    certification.<br>
    <br>
    <br>
    <blockquote cite="mid:4CECE668.1040506@redhat.com" type="cite">
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p>We should be able to parse and digest an endpoint
            configuration, properly setup the transport layer and then
            simply trigger the endpoint deployment.<br>
          </p>
        </div>
      </blockquote>
      Yes, we'll probably need to read proprietary SOAP stack DDs. Maybe
      another candidate for API?<br>
    </blockquote>
    yes, that's what I've mentioned later in the WS Services section.<br>
    <br>
    <br>
    <blockquote cite="mid:4CECE668.1040506@redhat.com" type="cite">
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p> Currently (AS 5/6) the ws deployment goes through many ws
            deployers, most of which wrap jbossws "deployment aspects"
            (DA). Those can probably be splitted into few groups:<br>
            1) DAs dealing with figuring out / processing basic and
            container related informations (context root, url pattern,
            endpoint address, endpoint name)<br>
            2) DAs converting information coming from merged metadata
            (descriptors + annotations) into the jbossws-spi metadata<br>
            3) DAs dealing with the transport (creating / modifying the
            jbossweb metadata for ws endpoints)<br>
            4) DAs dealing with ws stack internals (for native: UMDM
            creating, eventing, rm, eager init, ... for cxf: jbossws-cxf
            descriptor creation, bus creation, ...)<br>
          </p>
        </div>
      </blockquote>
      Correct! Nice recapitulation and grouping ;)<br>
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p> Some of these are most probably meant for remaining part
            of the deployers (probably 1,2,3), the rest (probably 4) is
            actually going to become part of the services providing
            facilities for starting/stopping an endpoint.<br>
            The jbossws-spi should be seen as the interface for feeding
            the ws services that deal with endpoints.</p>
        </div>
      </blockquote>
      Definitely!<br>
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p>While the AS7 / domain management system is going to simply
            make use of the public api part of jbossws-spi, the
            deployers are probably going to process all the metadata
            information coming from annotations and deployment
            descriptors into the jbossws-spi metadata and then feed the
            endpoint creation service. Deployers will also deal with /
            set required dependencies on other services involved in the
            deployment phase, for instance the web server service (which
            for instance will be required to properly create a context
            for the endpoint(s)).</p>
        </div>
      </blockquote>
      We'll discuss this in more details once we'll dive into AS 7
      integration ;)<br>
    </blockquote>
    Sure, this was written here to convey the idea of what should be up
    to the deployers and what should be in the service instead.<br>
    <br>
    <br>
    <blockquote cite="mid:4CECE668.1040506@redhat.com" type="cite">
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p style="min-height: 8pt; height: 8pt; padding: 0px;">&nbsp;</p>
          <p><strong>WS SERVICES</strong></p>
          <p style="min-height: 8pt; height: 8pt; padding: 0px;">&nbsp;</p>
          <p>What is then required to be a (WS) service? Apart from some
            obvious facilities like the endpoint registry and a server
            configuration provider service, the main service is the one
            meant for starting/stopping endpoints.<br>
          </p>
        </div>
      </blockquote>
      OK, makes sense.<br>
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p> We need to carefully define a stable interface for this
            service, so that it can be maintained without much changes
            in the future. This mainly implies establishing the inputs
            for creating/starting an endpoint, basically the metadata
            carrying the required information for that. Ideally that
            should already be covered by what we have in jbossws-spi,
            plus stack specific configuration stuff.<br>
          </p>
        </div>
      </blockquote>
      I like it. U're becoming perfectionist like me Alessio :)<br>
      <blockquote cite="mid:4CECDE10.20405@redhat.com" type="cite">
        <div class="jive-rendered-content">
          <p> For CXF that's everything that can be included in the
            jbossws-cxf.xml / cxf.xml, for Native it's what comes from
            the union of the info in endpoint configurations (configName
            / configFile...) and other additional optional descriptors
            (e.g. the jboss-wsse-*.xml).<br>
            For the sake of practically supporting future extensions /
            changes, the stuff above should most probably be modelled as
            AS7 extensions, each coming with its own parser bound to a
            given xsd namespace. For supporting advanced usecases (iow
            WS-*), the domain model should probably simply accept a
            pointer to additional xml configuration (beyond what's in
            the basic user API which is part of jbossws-spi, etc. - see
            above). Depending on the default namespace of the provided
            xml, the proper parser (coming from the installed ws stack)
            would be used and the domain enriched with the provided
            information for creating endpoint(s).<br>
            At the end of the day, most (if not all) the information is
            the Bus (for jbossws-cxf) / the UMDM (for jbossws-native).</p>
        </div>
      </blockquote>
      This is too low level. In general it makes sense to me.<br>
      But we'll discuss this when we'll start/be working on it.<br>
    </blockquote>
    OK<br>
    <br>
    Cheers<br>
    Alessio<br>
    <br>
    <pre class="moz-signature" cols="72">-- 
Alessio Soldano
Web Service Lead, JBoss</pre>
  </body>
</html>