<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Re: Weld-OSGi integration in AS7
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/bosschaert">David Bosschaert</a> in <i>JBoss AS7 Development</i> - <a href="http://community.jboss.org/message/605391#605391">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Thanks all for the responses.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>One hand I like the idea of not introducing any new Annotations and to simply do the injection based on type as CDI already does. Yes, the OSGi Service Registry might get full of CDI beans but I don't really see the problem with that. Service Lookups are generally based on type which means that all the services you're not interested in are ignored anyway.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>One the other hand, if you're injecting purely on type then you're certainly losing out on some of the OSGi service lookup features, for example filtering - which I think the weld-osgi project currenly also supports via an annotation.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Maybe we can combine these two to offer the best of both worlds?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Let's say we have the system enabled to provide a unified CDI/OSGi service registry view. (BTW re configuration we could look at OSGi Config Admin - AS7 has that built in).</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>With no other qualifiers this would mean that @Inject's can be satisfied by any CDI bean or OSGi Service that matches the interface. The service should be proxied so that if it is replaced the client can continue to use the same proxy.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Also all of the CDI beans would be available in the OSGi Service Registry.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>If the CDI client wants to put additional requirements on the OSGi Service (and is therefore aware of the OSGi integration) it can express this via additional @Filter or @OSGiService annotations. This would possibly include things like timeouts, dynamic flags etc.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>On the OSGi Service Consumer side. The consumer can narrow down the set of possibilities by using an ordinary filter. This could look up a CDI service by name (we'd have to come up with a service property to convey the name for a named bean) or additional properties (we might consider an annotation to add OSGi service properties to a CDI bean). </p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>So all in all, this would <em>allow</em> for a relatively simple cross OSGi/CDI case to work without any special annotations, but it would give people the option to deviate/fine-tune is so needed...</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Thoughts?</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/605391#605391">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in JBoss AS7 Development at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2225">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>