<!-- 
RSS generated by JIRA (8.20.10#820010-sha1:ace47f9899e9ee25d7157d59aa17ab06aee30d3d) at Wed Feb 07 19:52:38 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>OpenDaylight JIRA</title>
    <link>https://jira.opendaylight.org</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>8.20.10</version>
        <build-number>820010</build-number>
        <build-date>22-06-2022</build-date>
    </build-info>


<item>
            <title>[CONTROLLER-280] JAX-RS applications should use whiteboard pattern instead of WAB</title>
                <link>https://jira.opendaylight.org/browse/CONTROLLER-280</link>
                <project id="10113" key="CONTROLLER">controller</project>
                    <description></description>
                <environment>&lt;p&gt;Operating System: All&lt;br/&gt;
Platform: All&lt;/p&gt;</environment>
        <key id="24834">CONTROLLER-280</key>
            <summary>JAX-RS applications should use whiteboard pattern instead of WAB</summary>
                <type id="10100" iconUrl="https://jira.opendaylight.org/secure/viewavatar?size=xsmall&amp;avatarId=10310&amp;avatarType=issuetype">Improvement</type>
                                                <status id="5" iconUrl="https://jira.opendaylight.org/images/icons/statuses/resolved.png" description="A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.">Resolved</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10001">Won&apos;t Do</resolution>
                                        <assignee username="tolvecky@cisco.com">Tomas Olvecky</assignee>
                                    <reporter username="tolvecky@cisco.com">Tomas Olvecky</reporter>
                        <labels>
                    </labels>
                <created>Mon, 7 Apr 2014 12:21:34 +0000</created>
                <updated>Tue, 25 Jul 2023 08:23:24 +0000</updated>
                            <resolved>Tue, 22 Apr 2014 12:03:20 +0000</resolved>
                                                                    <component>config</component>
                        <due></due>
                            <votes>0</votes>
                                    <watches>2</watches>
                                                                                                                <comments>
                            <comment id="47916" author="gmeo@cisco.com" created="Mon, 7 Apr 2014 13:31:48 +0000"  >&lt;p&gt;Tomas, &lt;/p&gt;

&lt;p&gt;The WAB specification uses the whiteboard pattern internally. In fact all the WAB modules register a service of type javax.servlet. So what is exactly this enhancement for?&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br/&gt;
Giovanni&lt;/p&gt;</comment>
                            <comment id="47917" author="tolvecky@cisco.com" created="Mon, 7 Apr 2014 13:50:21 +0000"  >&lt;p&gt;WAB imposes additional requirements on underlying infrastructure, namely a fully compliant servlet container. For things like restconf we want to experiment with switching to netty for performance reasons. This should be significantly easier if we don&apos;t implement whole servlet specification.&lt;br/&gt;
WAB also exposes too much information that should be configurable, e.g. CORS filter settings that might be dependent on distribution.&lt;br/&gt;
Third reason is that WAB does not work well with dynamic nature of services: programmer of each WAB needs to:&lt;br/&gt;
1.specify context under which web app will be available (and we have a use case with multiple md-sals in system)&lt;br/&gt;
2.provide a custom error handling if request comes before dependent services are initialized (might not be an issue, but with &apos;SR whiteboard&apos; pattern this can be avoided by registering only after dependencies are resolved.)&lt;br/&gt;
Of course I am open to discussion and I am not about to switch all JAX-RS apps now, just restconf.&lt;br/&gt;
Tomas&lt;/p&gt;</comment>
                            <comment id="47918" author="tolvecky@cisco.com" created="Mon, 7 Apr 2014 13:54:02 +0000"  >&lt;p&gt;I failed to explain that I want to register javax.ws.rs.core.Application service in restconf&apos;s Activator&lt;/p&gt;</comment>
                            <comment id="47919" author="gmeo@cisco.com" created="Mon, 7 Apr 2014 14:09:15 +0000"  >&lt;p&gt;(In reply to Tomas Olvecky from comment #3)&lt;br/&gt;
&amp;gt; I failed to explain that I want to register javax.ws.rs.core.Application&lt;br/&gt;
&amp;gt; service in restconf&apos;s Activator&lt;/p&gt;

&lt;p&gt;Thanks, i was commenting exactly asking this one. That sounds reasonable, but be aware that if you do this way and define JAXB annotation on inherited classes the JAXB context calculated by JAXRS may not consider all the subclasses, for that one we made a specific enhancement in the controller implemented by the bundlescanner and bundlescanner.implementation. Just FYI. Not sure what is your use case but be aware of it.&lt;/p&gt;

&lt;p&gt;(In reply to Tomas Olvecky from comment #2)&lt;br/&gt;
&amp;gt; WAB imposes additional requirements on underlying infrastructure, namely a&lt;br/&gt;
&amp;gt; fully compliant servlet container. For things like restconf we want to&lt;br/&gt;
&amp;gt; experiment with switching to netty for performance reasons. This should be&lt;br/&gt;
&amp;gt; significantly easier if we don&apos;t implement whole servlet specification.&lt;br/&gt;
&amp;gt; WAB also exposes too much information that should be configurable, e.g. CORS&lt;br/&gt;
&amp;gt; filter settings that might be dependent on distribution.&lt;br/&gt;
&amp;gt; Third reason is that WAB does not work well with dynamic nature of services:&lt;br/&gt;
&amp;gt; programmer of each WAB needs to:&lt;/p&gt;

&lt;p&gt;This is not true, you can register and unregister WAB dynamically you can try it with existing northbounds modules.&lt;/p&gt;

&lt;p&gt;&amp;gt; 1.specify context under which web app will be available (and we have a use&lt;br/&gt;
&amp;gt; case with multiple md-sals in system)&lt;/p&gt;

&lt;p&gt;This can be relocated depending on the servlet container used. &lt;/p&gt;

&lt;p&gt;&amp;gt; 2.provide a custom error handling if request comes before dependent services&lt;br/&gt;
&amp;gt; are initialized (might not be an issue, but with &apos;SR whiteboard&apos; pattern&lt;br/&gt;
&amp;gt; this can be avoided by registering only after dependencies are resolved.)&lt;br/&gt;
&amp;gt; Of course I am open to discussion and I am not about to switch all JAX-RS&lt;br/&gt;
&amp;gt; apps now, just restconf.&lt;/p&gt;

&lt;p&gt;As long as it&apos;s restconf i&apos;m fine.&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br/&gt;
Giovanni&lt;/p&gt;

&lt;p&gt;&amp;gt; Tomas&lt;/p&gt;</comment>
                            <comment id="47920" author="tolvecky@cisco.com" created="Tue, 22 Apr 2014 12:03:20 +0000"  >&lt;p&gt;Thanks for response,&lt;/p&gt;

&lt;p&gt;(In reply to Giovanni Meo from comment #4)&lt;br/&gt;
&amp;gt; (In reply to Tomas Olvecky from comment #3)&lt;br/&gt;
&amp;gt; &amp;gt; I failed to explain that I want to register javax.ws.rs.core.Application&lt;br/&gt;
&amp;gt; &amp;gt; service in restconf&apos;s Activator&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; Thanks, i was commenting exactly asking this one. That sounds reasonable,&lt;br/&gt;
&amp;gt; but be aware that if you do this way and define JAXB annotation on inherited&lt;br/&gt;
&amp;gt; classes the JAXB context calculated by JAXRS may not consider all the&lt;br/&gt;
&amp;gt; subclasses, for that one we made a specific enhancement in the controller&lt;br/&gt;
&amp;gt; implemented by the bundlescanner and bundlescanner.implementation. Just FYI.&lt;br/&gt;
&amp;gt; Not sure what is your use case but be aware of it.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; (In reply to Tomas Olvecky from comment #2)&lt;br/&gt;
&amp;gt; &amp;gt; WAB imposes additional requirements on underlying infrastructure, namely a&lt;br/&gt;
&amp;gt; &amp;gt; fully compliant servlet container. For things like restconf we want to&lt;br/&gt;
&amp;gt; &amp;gt; experiment with switching to netty for performance reasons. This should be&lt;br/&gt;
&amp;gt; &amp;gt; significantly easier if we don&apos;t implement whole servlet specification.&lt;br/&gt;
&amp;gt; &amp;gt; WAB also exposes too much information that should be configurable, e.g. CORS&lt;br/&gt;
&amp;gt; &amp;gt; filter settings that might be dependent on distribution.&lt;br/&gt;
&amp;gt; &amp;gt; Third reason is that WAB does not work well with dynamic nature of services:&lt;br/&gt;
&amp;gt; &amp;gt; programmer of each WAB needs to:&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; This is not true, you can register and unregister WAB dynamically you can&lt;br/&gt;
&amp;gt; try it with existing northbounds modules.&lt;/p&gt;

&lt;p&gt;Not really, it is bound with bundle lifecycle, which services are not.&lt;/p&gt;

&lt;p&gt;&amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; 1.specify context under which web app will be available (and we have a use&lt;br/&gt;
&amp;gt; &amp;gt; case with multiple md-sals in system)&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; This can be relocated depending on the servlet container used. &lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; 2.provide a custom error handling if request comes before dependent services&lt;br/&gt;
&amp;gt; &amp;gt; are initialized (might not be an issue, but with &apos;SR whiteboard&apos; pattern&lt;br/&gt;
&amp;gt; &amp;gt; this can be avoided by registering only after dependencies are resolved.)&lt;br/&gt;
&amp;gt; &amp;gt; Of course I am open to discussion and I am not about to switch all JAX-RS&lt;br/&gt;
&amp;gt; &amp;gt; apps now, just restconf.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; As long as it&apos;s restconf i&apos;m fine.&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; Thanks,&lt;br/&gt;
&amp;gt; Giovanni&lt;br/&gt;
&amp;gt; &lt;br/&gt;
&amp;gt; &amp;gt; Tomas&lt;/p&gt;

&lt;p&gt;I have decided to wontwix it now, it is mainly a research that would allow optimizing away servlet container and using netty for JAX-RS directly. This turns out to be more complicated as I imagined and is not a priority for now.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10000">
                    <name>Blocks</name>
                                            <outwardlinks description="blocks">
                                        <issuelink>
            <issuekey id="24843">CONTROLLER-289</issuekey>
        </issuelink>
                            </outwardlinks>
                                                        </issuelinktype>
                    </issuelinks>
                <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_11400" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10208" key="com.atlassian.jira.plugin.system.customfieldtypes:textfield">
                        <customfieldname>External issue ID</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>674</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10201" key="com.atlassian.jira.plugin.system.customfieldtypes:url">
                        <customfieldname>External issue URL</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue><![CDATA[https://bugs.opendaylight.org/show_bug.cgi?id=674]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10202" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Priority</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10312"><![CDATA[High]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10000" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i02jfb:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>