<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <br>
    <div class="moz-cite-prefix">On 08/17/2012 10:01 AM, Neubauer. Rico
      wrote:<br>
    </div>
    <blockquote
cite="mid:0AE708E31B1FC34CB1946AB080198368CF485DA6@dedcexch02.seeburger.de"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <style>
<!--
@font-face
        {font-family:Calibri}
@font-face
        {font-family:Tahoma}
@font-face
        {font-family:Consolas}
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif"}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline}
pre
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New"}
tt
        {font-family:"Courier New"}
span.HTMLVorformatiertZchn
        {font-family:"Consolas","serif"}
span.E-MailFormatvorlage20
        {font-family:"Calibri","sans-serif";
        color:#1F497D}
.MsoChpDefault
        {font-size:10.0pt}
@page WordSection1
        {margin:70.85pt 70.85pt 2.0cm 70.85pt}
div.WordSection1
        {}
-->
</style>
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D">Hi all,</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D">&nbsp;</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">Monitoring this discussion for a
            while now and wanted to share my experience as a software
            integrator from the user perspective - based on JBoss
            7.1.1.FINAL and 7.1.2.EAP.</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">Some figures: We have a quite
            complex system, consisting of currently 243 OSGi-bundles, 60
            enterprise bundles (mostly EARs, some WARs and SARs) and
            about 5 JBoss-modules with heavy dependency relations
            between them. Especially we have EARs depending upon
            bundles, as well as bundles accessing enterprise
            functionalities.</span></p>
      </div>
    </blockquote>
    <small><tt>Thanks Rico, just the feedback we need ;-)</tt><br>
    </small>
    <blockquote
cite="mid:0AE708E31B1FC34CB1946AB080198368CF485DA6@dedcexch02.seeburger.de"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">&nbsp;</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">In the meantime, after having
            resolved a bunch of issues , we are quite happy with the
            OSGi-deployment. This is true for 7.1.1, not yet for 7.1.2
            (Thomas maybe you remember me reporting a bunch of bugs on
            that version). Deployment of OSGi-bundles works fine, all
            get activated correctly and all their dependencies get
            resolved.</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">However the deployment of the
            enterprise archives gave us head-aches and currently is only
            possible by a workaround for us. The problem is that the
            enterprise archives DO need to be deployed in the correct
            order, or they will fail due to missing dependencies, which
            then gets not resolved in the end. The way we are actually
            doing this is to start-up with deployment attribute
            enabled=&#8221;false&#8221; for the enterprise deployments and then
            handle their activation on our own during runtime after the
            OSGi-container finished its deployment.</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">So to sum it up:</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">- Am I satisfied with
            OSGi-bundle-deployment? Yes.</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">- Am I satisfied with how the
            overall app-server starts up with all its sub-systems and
            deployments: Not at all.</span></p>
      </div>
    </blockquote>
    <small><tt>Ok. We all agree that this needs to get sorted a.s.a.p.
        Due to the parallel nature in which we handle our deployment its
        a non-trivial task. As a temporary work around we could consider
        resolving all persistent bundles in one go on server restart.
        With this the resolver would at least have a chance to produce a
        consistent result, it may however not be the same as with the
        last server run. What do you think? &nbsp; <br>
      </tt></small>
    <blockquote
cite="mid:0AE708E31B1FC34CB1946AB080198368CF485DA6@dedcexch02.seeburger.de"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">&nbsp;</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">So I encourage you to have a
            look into the integration of the sub-systems, so they work
            together in seamless and predictable a way, I think this is
            what an app-server user expects.</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">One personal word regarding the
            short discussion about &#8220;should we take out the
            OSGI-container of the default profile&#8221;: From my pov, this
            will not solve anything. From my experience major vendors
            (also us) going into OSGi&#8217;s direction, so this is sth. that
            will definitely need to get supported by a recent
            app-server.</span></p>
      </div>
    </blockquote>
    <small><tt>Agreed. It should stay in the default profile and we
        should promote modularity for non-trivial apps. Our competition
        is going in that direction too, IMHO because it makes sense.
        Yes, OSGi should work seamless with the other subsystems. OSGi
        services should be able to take advantage of the midleware
        services the appserver provides and EE components should be able
        to leverage functionality coming from OSGi services.<br>
        <br>
        Please continue to make your issues known - this is very helpful
        ;-)<br>
      </tt></small>
    <blockquote
cite="mid:0AE708E31B1FC34CB1946AB080198368CF485DA6@dedcexch02.seeburger.de"
      type="cite">
      <div class="WordSection1">
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">&nbsp;</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">Best Regards,</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">Rico Neubauer (JBoss forum
            screen name MrEasy)</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">&nbsp;</span></p>
        <p class="MsoNormal"><span style="font-size:11.0pt;
            font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;
            color:#1F497D" lang="EN-US">&nbsp;</span></p>
        <div>
          <div style="border:none; border-top:solid #B5C4DF 1.0pt;
            padding:3.0pt 0cm 0cm 0cm">
            <p class="MsoNormal" style="margin-left:35.4pt"><b><span
                  style="font-size:10.0pt;
                  font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"
                  lang="EN-US">From:</span></b><span
                style="font-size:10.0pt;
                font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;"
                lang="EN-US"> <a class="moz-txt-link-abbreviated" href="mailto:jboss-as7-dev-bounces@lists.jboss.org">jboss-as7-dev-bounces@lists.jboss.org</a>
                [<a class="moz-txt-link-freetext" href="mailto:jboss-as7-dev-bounces@lists.jboss.org">mailto:jboss-as7-dev-bounces@lists.jboss.org</a>] <b>On
                  Behalf Of </b>Stuart Douglas<br>
                <b>Sent:</b> Fri</span><span style="font-size:10.0pt;
                font-family:&quot;Tahoma&quot;,&quot;sans-serif&quot;">day,
                August 17, 2012 2:16 AM<br>
                <b>To:</b> Thomas Diesler<br>
                <b>Cc:</b> <a class="moz-txt-link-abbreviated" href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a><br>
                <b>Subject:</b> Re: [jboss-as7-dev] NPE in POST_MODULE
                processors</span></p>
          </div>
        </div>
        <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
        <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
        <div>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt">On
              17/08/2012, at 1:42 AM, Thomas Diesler &lt;<a
                moz-do-not-send="true"
                href="mailto:thomas.diesler@jboss.com">thomas.diesler@jboss.com</a>&gt;
              wrote:</p>
          </div>
          <p class="MsoNormal" style="margin-left:35.4pt"><br>
            <br>
          </p>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt"><tt><span
                  style="font-size:10.0pt">Regarding ...</span></tt></p>
            <p class="MsoNormal" style="margin-left:35.4pt"><tt><i><span
                    style="font-size:10.0pt">This sounds very
                    non-deterministic. Just to clarify, are you saying
                    that if the user has a complex bundle deployment
                    with lots of inter-dependencies on startup some may
                    be resolved and some won't, and this may change on
                    subsequent startups depending on the order in which
                    they start?</span></i></tt></p>
            <p class="MsoNormal" style="margin-left:35.4pt"><tt><span
                  style="font-size:10.0pt">With a complex set of bundle
                  deployments the user will have to deploy them in a
                  known order (which is a problem in itself). There is
                  pull request
                  <a moz-do-not-send="true"
                    href="https://github.com/jbossas/jboss-as/pull/2790">#2790</a>
                  waiting that will allow the management client to have
                  control over the auto start behaviour. So a user could
                  first install the complete set in multiple operations
                  and later explicitly start a selected set of bundles.
                  This would overcome the order issue on first deploy.</span></tt></p>
          </div>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
          </div>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt">I really
              don't like this solution. I think that the best solution
              here is passive deployments, that don't start POST_MODULE
              until all their dependencies are available. In this case
              it does not have to be a explicit dependency on potential
              future bundles, but you you could have a 'resolved'
              service that acts as a gate, once OSGI has resolved the
              bundle it creates this service, which will then trigger
              the deployment to continue.</p>
          </div>
          <p class="MsoNormal" style="margin-left:35.4pt"><br>
            <br>
          </p>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt"><span
                style="font-size:10.0pt; font-family:&quot;Courier
                New&quot;"><br>
                <tt>Once the bundles are installed and activated the
                  framework records their respective state. On server
                  restart these persistent bundles are deployed in an
                  arbitrary order but there is a guarantee backed into
                  the Framework integration layer that ensures that the
                  first resolve attempt is made after all persistent
                  bundles have been installed. From the resolve
                  perspective order also matters - you might get
                  different wiring results depending on the order you
                  resolve the bundles. One possible approach might be to
                  resolve the full set of persistent bundles at once,
                  but the guarantee for an identical wiring is still
                  weak. A better approach would be to always resolve in
                  a known order (i.e. sort by bundle id). The still
                  better solution would be to persist the last known
                  wiring graph and restore that on startup. Currently,
                  the persistent bundles are resolved in the order they
                  hit the BundleResolveProcessor which is arbitrary
                  AFAIK.</tt></span></p>
          </div>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
          </div>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt">I think that
              this needs to be deterministic, otherwise we will end up
              with a situation where deploying the same thing to a
              domain results in different wirings for each server in the
              domain. Persisting the wiring does not really help in this
              case. IMHO any form of non-determinism is a serious bug.</p>
          </div>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
          </div>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt">Stuart</p>
          </div>
          <p class="MsoNormal" style="margin-left:35.4pt"><br>
            <br>
          </p>
          <div>
            <p class="MsoNormal" style="margin-right:0cm;
              margin-bottom:12.0pt; margin-left:35.4pt">
              <span style="font-size:10.0pt; font-family:&quot;Courier
                New&quot;"><br>
                <tt>I have written up the complete subsystem activation
                  process in <a moz-do-not-send="true"
                    href="https://community.jboss.org/wiki/OSGiSubsystemActivationProcess">
                    this article</a>. It contains the known issues and
                  ideas for possible solutions. Perhaps we can start
                  from there to find a more consistent solution.</tt></span></p>
          </div>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
          </div>
          <div>
            <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
          </div>
          <p class="MsoNormal" style="margin-left:35.4pt"><br>
            <br>
          </p>
          <div>
            <p class="MsoNormal" style="margin-right:0cm;
              margin-bottom:12.0pt; margin-left:35.4pt">
              <tt><span style="font-size:10.0pt">cheers</span></tt><span
                style="font-size:10.0pt; font-family:&quot;Courier
                New&quot;"><br>
                <tt>--thomas </tt></span></p>
            <div>
              <p class="MsoNormal" style="margin-left:35.4pt">On
                08/15/2012 01:32 PM, Thomas Diesler wrote:</p>
            </div>
            <blockquote style="margin-top:5.0pt; margin-bottom:5.0pt">
              <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
              <div>
                <p class="MsoNormal" style="margin-left:35.4pt">On
                  08/15/2012 11:20 AM, Stuart Douglas wrote:</p>
              </div>
              <blockquote style="margin-top:5.0pt; margin-bottom:5.0pt">
                <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
                <div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">On
                      15/08/2012, at 6:59 PM, Thomas Diesler &lt;<a
                        moz-do-not-send="true"
                        href="mailto:thomas.diesler@jboss.com">thomas.diesler@jboss.com</a>&gt;
                      wrote:</p>
                  </div>
                  <p class="MsoNormal" style="margin-left:35.4pt"><br>
                    <br>
                  </p>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt"><tt><span
                          style="font-size:10.0pt">&gt; Why would the
                          OSGI bundle not be able to resolve, is it
                          because is waiting for another OSGI bundle to
                          be installed?</span></tt><span
                        style="font-size:10.0pt;
                        font-family:&quot;Courier New&quot;"><br>
                        <br>
                        <tt>This is by virtue of the API -
                          BundleContext.install() does not resolve the
                          bundle. As the method name suggests, it just
                          installs the bundle.
                        </tt><br>
                        <br>
                        <tt>In the hot-deployment case it is debatable
                          whether bundle resolution and later bundle
                          activation should be attempted or not. By
                          design, the order of bundle deployment is not
                          the responsibility of the user but that of the
                          framework. For a complex graph of
                          interdependent bundles the user cannot
                          possibly be asked to deploy them in the "right
                          order". Instead the API allows to INSTALL the
                          complete set (i.e. make the metadata available
                          to the resolver) and later activate the
                          bundles as needed. There are other triggers
                          for bundle resolution too (e.g. resource
                          access)</tt><br>
                        <br>
                        <tt>We currently do resolve/activate during DUP
                          processing on a trial basis. For a bundle that
                          only has dedependencies on already installed
                          bundles the resolve/activation works fine and
                          the services become available. I guess this is
                          the expected hot-deploy behaviour. A bundle
                          that cannot resolve - for various reasons, one
                          being the user says so - we dont attempt to
                          start the bundle either. It would still run
                          through all remaining DUPs but does not have a
                          module attached.</tt></span></p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
                  </div>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">This
                      sounds very non-deterministic. Just to clarify,
                      are you saying that if the user has a complex
                      bundle deployment with lots of inter-dependencies
                      on startup some may be resolved and some won't,
                      and this may change on subsequent startups
                      depending on the order in which they start?</p>
                  </div>
                </div>
              </blockquote>
              <p class="MsoNormal" style="margin-left:35.4pt"><tt><span
                    style="font-size:10.0pt">Yes, this is a long
                    outstanding issue [<a moz-do-not-send="true"
                      href="https://issues.jboss.org/browse/AS7-378">AS7-378</a>].
                    I still have no guarantee that all bundles in a
                    given set have been INSTALLED (in OSGi terminology)
                    / have completed the Phase.REGISTER phase (in AS7
                    terminology) when the one bundle hits the
                    BundleResolveProcessor. The framework records the
                    persistent bundle state and on restart it is a
                    requirement that all persistent bundles reach their
                    respective target state for successful framework
                    initialization. There is a little more detail to it
                    and I'd be more than happy to work with you to find
                    a consistent solution. We can take up this topic in
                    another osgi specific thread if you like.</span></tt><span
                  style="font-size:10.0pt; font-family:&quot;Courier
                  New&quot;"><br>
                  <br>
                </span></p>
              <div>
                <p class="MsoNormal" style="margin-left:35.4pt"><br>
                  <br>
                </p>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt"><span
                      style="font-size:10.0pt; font-family:&quot;Courier
                      New&quot;"><br>
                      <tt>Non-OSGi deployments that use jboss-modules
                        metadata to define their dependencies (i.e.
                        Dependencies clause in the manifest) have that
                        problem too, but worse. A complex system of
                        interdependent module deployments is likely not
                        manageable because of this ordering issue. Even
                        if the user gets the ordering right the first
                        time, on server restart the notion of deployment
                        order is lost and very likely initial
                        deployments will fail with no osgi involved.
                        Granted that this describes a use case that is
                        not intended to be used for user deployments. </tt></span></p>
                </div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
                </div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">No,
                    JBoss modules uses MSC services to resolve the
                    dependencies. At container start all deployments are
                    now run as part of the boot ops, so as long as all
                    deployments are present this will always work. We do
                    need a more specified way of saying "Don't start
                    this deployment until another deployment is done",
                    but this is mainly for things like EJB's, not for
                    class loading.
                  </p>
                </div>
              </div>
              <p class="MsoNormal" style="margin-left:35.4pt"><tt><span
                    style="font-size:10.0pt">Considering use case:
                    moduleA depends on moduleB. On restart both
                    deployments are processed in parallel. Even with 100
                    other deployments in between it is guaranteed that
                    moduleA wont run into "missing service on next
                    phase" error because the module service for B has
                    not been installed? If so I take back the above
                    prediction on restart, but still hold the
                    unmanageable claim because ordering is delegated to
                    the user (i.e. he must get it right the first time).</span></tt><span
                  style="font-size:10.0pt; font-family:&quot;Courier
                  New&quot;"><br>
                  <tt>&nbsp;</tt><br>
                  <br>
                </span></p>
              <div>
                <p class="MsoNormal" style="margin-left:35.4pt"><br>
                  <br>
                </p>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt"><span
                      style="font-size:10.0pt; font-family:&quot;Courier
                      New&quot;"><br>
                      <tt>&gt; the classic one is deployment of JDBC
                        drivers that have an OSGI manifest</tt><br>
                      <br>
                      <tt>We already removed the hack that disables OSGi
                        for this case. The JDBC driver *is* an OSGi
                        bundle because it contains valid OSGi metadata.
                        It gets processed as such and should work as
                        expected. All DUP processing is identical as
                        before except the way module dependencies are
                        computed and how the Module service is created.
                        The only case where an OSGi bundle gets treated
                        as a library jar is when it is located in an
                        EAR/lib directory. Bundles contained in EARs are
                        otherwise processed as OSGi sub deployments.</tt></span></p>
                </div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
                </div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">It
                    sounds like because we have removed the hack JDBC
                    drivers now will not work if they fail to resolve?</p>
                </div>
              </div>
              <p class="MsoNormal" style="margin-left:35.4pt"><span
                  style="font-size:10.0pt; font-family:&quot;Courier
                  New&quot;"><br>
                  <tt>If they fail to resolve it would be because a
                    requirement specified by the JDBC driver cannot be
                    satisfied (e.g. wrong execution environment, missing
                    package wire). I'd say the deployment of that driver
                    should fail at resolve time because it would not
                    work anyway because of the missing wire to a valid
                    capability. Please don't forget that the
                    requirements given by author should be honoured and
                    satisfied if you want the driver to work - they
                    should not be ignored or replaced by some made up
                    hard wires that happen to work. In this respect a
                    JDBC driver is no different to any other OSGi
                    bundle.</tt><br>
                  <br>
                  <br>
                </span></p>
              <div>
                <p class="MsoNormal" style="margin-left:35.4pt"><br>
                  <br>
                </p>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt"><br>
                    <tt><span style="font-size:10.0pt">&gt; we should
                        not be allowing the presence of the OSGI
                        subsystem to provide a different experience for
                        users that are only after EE functionality
                      </span></tt><span style="font-size:10.0pt;
                      font-family:&quot;Courier New&quot;"><br>
                      <br>
                      <tt>Agreed, EE deployments should not be effected
                        - and I don't think they are. The OSGi subsystem
                        is not activated unless #1 you do so by
                        management op #2 you deploy a bundle #3 some
                        component is an injection target for the system
                        BundleContext</tt><br>
                      <br>
                      <tt>&gt; We remove OSGI from the default profile,
                        and provide a standalone-osgi.xml for users that
                        wish to use OSGI</tt><br>
                      <br>
                      <tt>AFAICS this would remove a few services that
                        are already lazy and a few DUPs that deal with
                        bundle deployments. We already have the
                        configuration for a pure OSGi runtime as you
                        suggest. Removing the OSGi subsystem from the
                        default profile would not solve the need for DUP
                        authors to be aware of OSGi deployments and code
                        for the case of unresolved bundle deployments.</tt></span></p>
                </div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
                </div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">Even
                    if we resolve the module issue I still think that it
                    would be worth making this a separate profile. Like
                    Jaikiran I really don't like the idea of other
                    subsystems having to code around OSGI. Another
                    possibility we could potentially explore is a
                    separate deployment chain for OSGI, so these DUP's
                    do not even run if it is an OSGI deployment.
                  </p>
                </div>
              </div>
              <p class="MsoNormal" style="margin-left:35.4pt"><tt><span
                    style="font-size:10.0pt">The purpose of OSGi
                    integration in AS7 is to make middleware services
                    that come with AS7 available to modular applications
                    that use the OSGi standard and vice versa (i.e. make
                    OSGi services available to EE components). We are
                    not trying to build a standalone OSGi runtime and
                    compete with
                    <a moz-do-not-send="true"
                      href="http://www.eclipse.org/virgo/">Virgo</a>, <a
                      moz-do-not-send="true"
                      href="http://karaf.apache.org/">
                      Karaf</a>, etc. Instead, we are competing against
                    WebSphere, WebLogic, Glassfish - which AFAIK all use
                    OSGi as their bottom most layer and increasingly so
                    make this tech available to user deployments. From
                    the business perspective the ability to architect
                    non-trivial modular applications in a standard way
                    is a requirement on the product sheet. </span>
                </tt><span style="font-size:10.0pt;
                  font-family:&quot;Courier New&quot;"><br>
                  <br>
                </span></p>
              <div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
                </div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">Do we
                    have any usage data on how many of our users
                    actually use OSGI? The more I think about it the
                    more I think it makes sense to leave it out of the
                    default profile. Even though you say 'it is not
                    active unless you deploy a bundle', the thing is
                    that many JDBC driver have OSGI metadata, so users
                    that simply want to setup a datasource will still
                    have OSGI activating, which is usually not what they
                    would want.</p>
                </div>
              </div>
              <p class="MsoNormal" style="margin-left:35.4pt"><tt><span
                    style="font-size:10.0pt">I have download stats on
                    sourceforge for the jbosgi umbrella which are
                    <a moz-do-not-send="true"
href="http://sourceforge.net/projects/jboss/files/JBossOSGi/stats/timeline?dates=2012-01-01+to+2012-08-15">around
                      3000/month</a>. I also know of a few large EAP
                    accounts that are using this tech or have it as a
                    decision maker for EAP yes/no. The reason that many
                    JDBC drivers have OSGi metadata is because they
                    *are* OSGi bundles and want their requirements to be
                    honoured in a given runtime. OSGi subsystem startup
                    should be quick and flawless and those driver
                    bundles should work seamless in AS7. They currently
                    do AFAIK - if not I'd be interested in the details.&nbsp;
                    &nbsp; &nbsp;
                  </span></tt><span style="font-size:10.0pt;
                  font-family:&quot;Courier New&quot;"><br>
                  <br>
                </span></p>
              <div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
                </div>
                <div>
                  <p class="MsoNormal" style="margin-left:35.4pt">Stuart</p>
                </div>
                <p class="MsoNormal" style="margin-left:35.4pt"><br>
                  <br>
                </p>
                <div>
                  <p class="MsoNormal" style="margin-right:0cm;
                    margin-bottom:12.0pt; margin-left:35.4pt">
                    <span style="font-size:10.0pt;
                      font-family:&quot;Courier New&quot;"><br>
                      <tt>&gt; OSGI deployment that cannot be resolved
                        pause the deployment process until such time as
                        they can be
                      </tt><br>
                      <br>
                      <tt>Yes, this is very much in line with what I
                        think how it should work. The management API
                        should allow the user to specify whether a
                        deployment should get resolved/activated too. As
                        a desired side effect this could introduce life
                        cycle for any AS7 deployment (i.e. start/stop
                        decoupled from deploy/undeploy). I already did
                        some work in this direction related to in "<a
                          moz-do-not-send="true"
                          href="https://issues.jboss.org/browse/AS7-2777">Add
                          notion of start/stop for deployments</a>". It
                        builds on top of "<a moz-do-not-send="true"
                          href="https://issues.jboss.org/browse/AS7-3694">Allow

                          management client to associate metadata with
                          DeploymentUnit</a>", which is waiting to get
                        <a moz-do-not-send="true"
                          href="https://github.com/jbossas/jboss-as/pull/2790">pulled</a>.</tt><br>
                      <br>
                      <tt>&gt; which means that there will always be a
                        Module available </tt><br>
                      <br>
                      <tt>YES ;-)</tt><br>
                      <br>
                      <tt>cheers</tt><br>
                      <tt>--thomas</tt></span></p>
                  <div>
                    <p class="MsoNormal" style="margin-left:35.4pt">On
                      08/15/2012 07:26 AM, Stuart Douglas wrote:</p>
                  </div>
                  <blockquote style="margin-top:5.0pt;
                    margin-bottom:5.0pt">
                    <pre style="margin-left:35.4pt">Why would the OSGI bundle not be able to resolve, is it because is waiting for another OSGI bundle to be installed? And if so, wouldn't it make more sense to pause the deployment process until the bundle can be resolved? Otherwise the behaviour will be different depending on when the bundle is resolved (e.g. if a bundle is resolved late it will not have EJB's deployed, if it is resolved early it will). </pre>
                    <pre style="margin-left:35.4pt">&nbsp;</pre>
                    <pre style="margin-left:35.4pt">I really hate the way that OSGI takes over and prevents the module being created, I am pretty sure that the number of users that this has caused problems for is larger than the number of users that actually use OSGI (the classic one is deployment of JDBC drivers that have an OSGI manifest). </pre>
                    <pre style="margin-left:35.4pt">&nbsp;</pre>
                    <pre style="margin-left:35.4pt">I think we really need a solution for this for AS 7.2, because as it currently stands we are primarily an EE app server, and we should not be allowing the presence of the OSGI subsystem to provide a different experience for users that are only after EE functionality. </pre>
                    <pre style="margin-left:35.4pt">&nbsp;</pre>
                    <pre style="margin-left:35.4pt">To this end, I propose the following: </pre>
                    <pre style="margin-left:35.4pt">&nbsp;</pre>
                    <pre style="margin-left:35.4pt">- We remove OSGI from the default profile, and provide a standalone-osgi.xml for users that wish to use OSGI, this way OSGI cannot affect users that simply want EE functionality</pre>
                    <pre style="margin-left:35.4pt">- OSGI deployment that cannot be resolved pause the deployment process until such time as they can be, by making the POST_MODULE DeploymentUnitPhaseService passive, which means that there will always be a Module available. </pre>
                    <pre style="margin-left:35.4pt">&nbsp;</pre>
                    <pre style="margin-left:35.4pt">What do you think?</pre>
                    <pre style="margin-left:35.4pt">&nbsp;</pre>
                    <pre style="margin-left:35.4pt">Stuart</pre>
                    <pre style="margin-left:35.4pt">&nbsp;</pre>
                    <pre style="margin-left:35.4pt">On 15/08/2012, at 3:05 PM, Thomas Diesler <a moz-do-not-send="true" href="mailto:thomas.diesler@jboss.com">&lt;thomas.diesler@jboss.com&gt;</a> wrote:</pre>
                    <pre style="margin-left:35.4pt">&nbsp;</pre>
                    <blockquote style="margin-top:5.0pt;
                      margin-bottom:5.0pt">
                      <pre style="margin-left:35.4pt">Folks,</pre>
                      <pre style="margin-left:35.4pt">&nbsp;</pre>
                      <pre style="margin-left:35.4pt">a quick reminder that you cannot assume a valid Module attachment in </pre>
                      <pre style="margin-left:35.4pt">Phase.POST_MODULE or after.</pre>
                      <pre style="margin-left:35.4pt">&nbsp;</pre>
                      <pre style="margin-left:35.4pt">An OSGi deployment that cannot resolve won't have a Module attached to </pre>
                      <pre style="margin-left:35.4pt">the DU. There is talk about aligning the deployment phase names with </pre>
                      <pre style="margin-left:35.4pt">Bundle life cycle terminology. IMHO Phase.POST_MODULE and Phase.INSTALL </pre>
                      <pre style="margin-left:35.4pt">are not so lucky names because they imply meaning that may not be true. </pre>
                      <pre style="margin-left:35.4pt">For suggested improvement see <a moz-do-not-send="true" href="https://issues.jboss.org/browse/AS7-3585">https://issues.jboss.org/browse/AS7-3585</a></pre>
                      <pre style="margin-left:35.4pt">&nbsp;</pre>
                      <pre style="margin-left:35.4pt">This is related to: <a moz-do-not-send="true" href="https://issues.jboss.org/browse/AS7-5376">https://issues.jboss.org/browse/AS7-5376</a></pre>
                      <pre style="margin-left:35.4pt">&nbsp;</pre>
                      <pre style="margin-left:35.4pt">cheers</pre>
                      <pre style="margin-left:35.4pt">--thomas</pre>
                      <pre style="margin-left:35.4pt">&nbsp;</pre>
                      <pre style="margin-left:35.4pt">-- </pre>
                      <pre style="margin-left:35.4pt">xxxxxxxxxxxxxxxxxxxxxxxxxxxx</pre>
                      <pre style="margin-left:35.4pt">Thomas Diesler</pre>
                      <pre style="margin-left:35.4pt">JBoss OSGi Lead</pre>
                      <pre style="margin-left:35.4pt">JBoss, a division of Red Hat</pre>
                      <pre style="margin-left:35.4pt">xxxxxxxxxxxxxxxxxxxxxxxxxxxx</pre>
                      <pre style="margin-left:35.4pt">&nbsp;</pre>
                      <pre style="margin-left:35.4pt">_______________________________________________</pre>
                      <pre style="margin-left:35.4pt">jboss-as7-dev mailing list</pre>
                      <pre style="margin-left:35.4pt"><a moz-do-not-send="true" href="mailto:jboss-as7-dev@lists.jboss.org">jboss-as7-dev@lists.jboss.org</a></pre>
                      <pre style="margin-left:35.4pt"><a moz-do-not-send="true" href="https://lists.jboss.org/mailman/listinfo/jboss-as7-dev">https://lists.jboss.org/mailman/listinfo/jboss-as7-dev</a></pre>
                    </blockquote>
                  </blockquote>
                  <p class="MsoNormal" style="margin-left:35.4pt"><br>
                    <br>
                  </p>
                  <pre style="margin-left:35.4pt">-- </pre>
                  <pre style="margin-left:35.4pt">xxxxxxxxxxxxxxxxxxxxxxxxxxxx</pre>
                  <pre style="margin-left:35.4pt">Thomas Diesler</pre>
                  <pre style="margin-left:35.4pt">JBoss OSGi Lead</pre>
                  <pre style="margin-left:35.4pt">JBoss, a division of Red Hat</pre>
                  <pre style="margin-left:35.4pt">xxxxxxxxxxxxxxxxxxxxxxxxxxxx </pre>
                </div>
              </div>
              <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
              <p class="MsoNormal" style="margin-left:35.4pt"><br>
                <br>
              </p>
              <pre style="margin-left:35.4pt">-- </pre>
              <pre style="margin-left:35.4pt">xxxxxxxxxxxxxxxxxxxxxxxxxxxx</pre>
              <pre style="margin-left:35.4pt">Thomas Diesler</pre>
              <pre style="margin-left:35.4pt">JBoss OSGi Lead</pre>
              <pre style="margin-left:35.4pt">JBoss, a division of Red Hat</pre>
              <pre style="margin-left:35.4pt">xxxxxxxxxxxxxxxxxxxxxxxxxxxx </pre>
            </blockquote>
            <p class="MsoNormal" style="margin-left:35.4pt"><br>
              <br>
            </p>
            <pre style="margin-left:35.4pt">-- </pre>
            <pre style="margin-left:35.4pt">xxxxxxxxxxxxxxxxxxxxxxxxxxxx</pre>
            <pre style="margin-left:35.4pt">Thomas Diesler</pre>
            <pre style="margin-left:35.4pt">JBoss OSGi Lead</pre>
            <pre style="margin-left:35.4pt">JBoss, a division of Red Hat</pre>
            <pre style="margin-left:35.4pt">xxxxxxxxxxxxxxxxxxxxxxxxxxxx </pre>
          </div>
        </div>
        <p class="MsoNormal" style="margin-left:35.4pt">&nbsp;</p>
      </div>
      <br>
      <br>
      <br>
      ...<br>
      <br>
      <table id="table1" style="border-collapse:collapse" width="100%"
        border="0">
        <tbody>
          <tr>
            <td style="border-bottom-style:double;
              border-bottom-width:3px" width="272">&nbsp;</td>
            <td style="border-bottom-style:double;
              border-bottom-width:3px" width="45">&nbsp;</td>
            <td style="border-bottom-style:double;
              border-bottom-width:3px">&nbsp;</td>
          </tr>
        </tbody>
      </table>
      <br>
      <br>
      <table id="table1" style="border-collapse:collapse" width="100%"
        border="0">
        <tbody>
          <tr>
            <td width="272"><font color="#808080" face="Arial" size="1"><b>SEEBURGER
                  AG</b></font></td>
            <td width="45">&nbsp;</td>
            <td><font color="#808080" face="Arial" size="1">Vorstand/Seeburger
                Executive Board:</font></td>
          </tr>
          <tr>
            <td width="272"><font color="#808080" face="Arial" size="1">Sitz
                der Gesellschaft/Registered Office:</font></td>
            <td width="45">&nbsp;</td>
            <td><font color="#808080" face="Arial" size="1">Bernd
                Seeburger, Axel Haas, Michael Kleeberg</font></td>
          </tr>
          <tr>
            <td width="272"><font color="#808080" face="Arial" size="1">Edisonstr.
                1</font></td>
            <td width="45">&nbsp;</td>
            <td><br>
            </td>
          </tr>
          <tr>
            <td width="272"><font color="#808080" face="Arial" size="1">D-75015
                Bretten</font></td>
            <td width="45"><br>
            </td>
            <td><font color="#808080" face="Arial" size="1">Vorsitzender
                des Aufsichtsrats/Chairperson of the Seeburger
                Supervisory Board:</font></td>
          </tr>
          <tr>
            <td width="272"><font color="#808080" face="Arial" size="1">Tel.:
                07252 / 96 - 0</font></td>
            <td width="45"><br>
            </td>
            <td><font color="#808080" face="Arial" size="1">Dr. Franz
                Scherer</font></td>
          </tr>
          <tr>
            <td width="272"><font color="#808080" face="Arial" size="1">Fax:
                07252 / 96 - 2222</font></td>
            <td width="45"><br>
            </td>
            <td><br>
            </td>
          </tr>
          <tr>
            <td width="272"><font color="#808080" face="Arial" size="1">Internet:
                <a class="moz-txt-link-freetext" href="http://www.seeburger.de">http://www.seeburger.de</a></font></td>
            <td width="45"><br>
            </td>
            <td><font color="#808080" face="Arial" size="1">Registergericht/Commercial
                Register:</font></td>
          </tr>
          <tr>
            <td width="272"><font color="#808080" face="Arial" size="1">e-mail:
                <a class="moz-txt-link-abbreviated" href="mailto:info@seeburger.de">info@seeburger.de</a></font></td>
            <td width="45"><br>
            </td>
            <td><font color="#808080" face="Arial" size="1">HRB 240708
                Mannheim</font></td>
          </tr>
        </tbody>
      </table>
      <p><font face="Arial" size="2"><br>
        </font></p>
      <p align="justify"><font color="#808080" face="Arial" size="1">Dieses
          E-Mail ist nur f&uuml;r den Empf&auml;nger bestimmt, an den es gerichtet
          ist und kann vertrauliches bzw. unter das Berufsgeheimnis
          fallendes Material enthalten. Jegliche darin enthaltene
          Ansicht oder Meinungs&auml;u&szlig;erung ist die des Autors und stellt
          nicht notwendigerweise die Ansicht oder Meinung der SEEBURGER
          AG dar. Sind Sie nicht der Empf&auml;nger, so haben Sie diese
          E-Mail irrt&uuml;mlich erhalten und jegliche Verwendung,
          Ver&ouml;ffentlichung, Weiterleitung, Abschrift oder jeglicher
          Druck dieser E-Mail ist strengstens untersagt. Weder die
          SEEBURGER AG noch der Absender ( Neubauer. Rico ) &uuml;bernehmen
          die Haftung f&uuml;r Viren; es obliegt Ihrer Verantwortung, die
          E-Mail und deren Anh&auml;nge auf Viren zu pr&uuml;fen.
          <br>
          <br>
        </font></p>
      <font color="#808080" face="Arial" size="1">
        <p align="justify"><font color="#808080" face="Arial" size="1">The
            present email addresses only the addressee which it targets
            and may contain confidential material that may be protected
            by the professional secret. The opinions reflected herein
            are not necessarily the one of the SEEBURGER AG. If you are
            not the addressee, you have accidentally got this email and
            are not enabled to use, publish, forward, copy or print it
            in any way. Neither SEEBURGER AG , nor the sender (Neubauer.
            Rico) are liable for viruses, being your own responsibility
            to check this email and its attachments for this purpose.
            <br>
            <br>
          </font></p>
      </font>
    </blockquote>
    <br>
    <pre class="moz-signature" cols="72">-- 
xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Thomas Diesler
JBoss OSGi Lead
JBoss, a division of Red Hat
xxxxxxxxxxxxxxxxxxxxxxxxxxxx 
</pre>
  </body>
</html>