Perhaps it would be more clear if detailed what I think is happening in this
particular example:

1) WebBeansFinder loads a single WebContextService per application (happens
during the Lifecycle init).
2) WebContextService calls "ConversationManager.getInstance();", which would
use the WebBeansFinder to load a single ConversationManager per class.
However, it then stores the result away in a static variable.

Once that ConversationManager is in a static variable of the WebBeansFinder,
its going to get used for ALL instances of the WebContextService, even
though each application will have its own instance.

Sincerely,

Joe

On Fri, May 7, 2010 at 10:54 AM, Joseph Bergmark <bergm...@apache.org>wrote:

> I'm not sure I understand the point you are trying to make here Gurkan.
> Are you saying you do not want to make changes that will allow OpenWebBeans
> to work in tiered classloading environments?  This isn't the first time an
> issue like that has come up, and we have made several changes already.
>
> As we already have requests to publish the build artifacts as OSGi bundles,
> so there are people attempting to use OWB in exactly this way.
>
> In this case it is probably a very simple fix.  The code just has to treat
> static variables as something that gets shared between applications, and
> instance variables as things that get shared within an application.
> WebBeansFinder already provides a way of loading one instance of a class per
> classloader, so you get the "one per app" level of loading already.  I'm not
> sure what the additional value we are getting from static variables in
> WebContextService (as an example).
>
> From my perspective, I don't think we can expect every consumer of OWB to
> be bundling the jars inside of their application.
>
> Sincerely,
>
> Joe
>
>
> On Fri, May 7, 2010 at 10:02 AM, Gurkan Erdogdu (JIRA) <j...@apache.org>wrote:
>
>>
>>    [
>> https://issues.apache.org/jira/browse/OWB-369?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12865159#action_12865159]
>>
>> Gurkan Erdogdu commented on OWB-369:
>> ------------------------------------
>>
>> Joe,
>>
>> As I said OWB not written for tiered-class loaders. So all of the loaded
>> classes must be loaded by each web application classloaders therefore does
>> not collide with each other.
>>
>> For example: Each web application has its own webbeans-finder class and
>> different ConversationManager.
>>
>> > Static ContextsService in ContextFactory causes wrong webContextService
>> used for multiple applications
>> >
>> ------------------------------------------------------------------------------------------------------
>> >
>> >                 Key: OWB-369
>> >                 URL: https://issues.apache.org/jira/browse/OWB-369
>> >             Project: OpenWebBeans
>> >          Issue Type: Bug
>> >    Affects Versions: M4
>> >            Reporter: YING WANG
>> >            Assignee: YING WANG
>> >             Fix For: 1.0.0
>> >
>> >
>> > To reproduce,
>> > Application A, which does not support conversation, installed and tested
>> without any issue. then stop and uninstalled.
>> > Application B, which support conversation, get installed and started.
>> > When test Application B, ApplicationA's contextService is used and
>> causes conversation scope is not found since it does not support
>> conversation.
>> > The problem is because of static variable used for contextsService in
>> ContextFactory which is JVM-wide and only init once. While
>> supportConversation flag is application-wide property.
>> > Probably we need contextService  variable to be  classloader based
>> instead of static variable. or need some change to supportsConversation
>> flag.
>>
>> --
>> This message is automatically generated by JIRA.
>> -
>> You can reply to this email to add a comment to the issue online.
>>
>>
>

Reply via email to