[ https://issues.apache.org/jira/browse/TOMEE-2087?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Svetlin Zarev updated TOMEE-2087: --------------------------------- Description: MyNamingEnumeration.gatherNodes() adds the wrong federated context entries in the result set (related to TOMEE-2086 - it was indeed a typo, but we "fixed" it with the wrong NameNode). Another issue is with MyNamingEnumeration.isMyChild() which considers entries that are NOT children to the "parent" tree as such One more issue is that the wrong parentNode is passed as argument to gatherNodes in case we are listing the context for any "IvmContext != this" To give an example: Expected context content: {code} ### Context: /module Name: TestEJB!org.example.TestEJB Class=org.apache.openejb.assembler.classic.JndiBuilder$ContextualEjbLookup [looking up: TestEJB!org.example.TestEJB] [Value]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: TestEJB Class=org.apache.openejb.assembler.classic.JndiBuilder$ContextualEjbLookup [looking up: TestEJB] [Value]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: ModuleName Class=java.lang.String [looking up: ModuleName] [Value]: Name: env Class=org.apache.naming.NamingContext [looking up: env] [Value]: org.apache.naming.NamingContext@1bb2d0a8 ### Context: /module/env Name: name Class=java.lang.String [looking up: name] [Value]: module-env {code} Actual context content: {code} ### Context: /module Name: global Class=org.apache.openejb.core.ivm.naming.IvmContext [looking up: global] > Failed to lookup: global Name: dummy Class=java.lang.String [looking up: dummy] > Failed to lookup: dummy Name: TestEJB!org.example.TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB!org.example.TestEJB] [Reference]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB] [Reference]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: ModuleName Class=java.lang.String [looking up: ModuleName] [Value]: Name: env Class=org.apache.openejb.core.ivm.naming.IvmContext [looking up: env] [Value]: IvmContext{mynode=} Name: TestEJB!org.example.TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB!org.example.TestEJB] [Reference]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB] [Reference]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null ### Context: /module/env Name: TestEJB!org.example.TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB!org.example.TestEJB] > Failed to lookup: TestEJB!org.example.TestEJB Name: TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB] > Failed to lookup: TestEJB Name: name Class=java.lang.String [looking up: name] [Value]: module-env {code} Note the "failed too lookup..." messages - these are all objects that MUST NOT be listed as part of that context. I'm attaching an application that reproduces the issue. Requesting it like "http://localhost:8080/?ejb" will print tomee's naming tree Requesting it like "http://localhost:8080" will print tomcat's naming tree was: MyNamingEnumeration.gatherNodes() adds the wrong federated context entries in the result set (related to TOMEE-2086 - it was indeed a typo, but we "fixed" it with the wrong NameNode). The other issue is with MyNamingEnumeration.isMyChild() which considers entries that are NOT children to the "parent" tree as such To give an example: Expected context content: {code} ### Context: /module Name: TestEJB!org.example.TestEJB Class=org.apache.openejb.assembler.classic.JndiBuilder$ContextualEjbLookup [looking up: TestEJB!org.example.TestEJB] [Value]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: TestEJB Class=org.apache.openejb.assembler.classic.JndiBuilder$ContextualEjbLookup [looking up: TestEJB] [Value]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: ModuleName Class=java.lang.String [looking up: ModuleName] [Value]: Name: env Class=org.apache.naming.NamingContext [looking up: env] [Value]: org.apache.naming.NamingContext@1bb2d0a8 ### Context: /module/env Name: name Class=java.lang.String [looking up: name] [Value]: module-env {code} Actual context content: {code} ### Context: /module Name: global Class=org.apache.openejb.core.ivm.naming.IvmContext [looking up: global] > Failed to lookup: global Name: dummy Class=java.lang.String [looking up: dummy] > Failed to lookup: dummy Name: TestEJB!org.example.TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB!org.example.TestEJB] [Reference]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB] [Reference]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: ModuleName Class=java.lang.String [looking up: ModuleName] [Value]: Name: env Class=org.apache.openejb.core.ivm.naming.IvmContext [looking up: env] [Value]: IvmContext{mynode=} Name: TestEJB!org.example.TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB!org.example.TestEJB] [Reference]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null Name: TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB] [Reference]: proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null ### Context: /module/env Name: TestEJB!org.example.TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB!org.example.TestEJB] > Failed to lookup: TestEJB!org.example.TestEJB Name: TestEJB Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference [looking up: TestEJB] > Failed to lookup: TestEJB Name: name Class=java.lang.String [looking up: name] [Value]: module-env {code} Note the "failed too lookup..." messages - these are all objects that MUST NOT be listed as part of that context. I'm attaching an application that reproduces the issue. Requesting it like "http://localhost:8080/?ejb" will print tomee's naming tree Requesting it like "http://localhost:8080" will print tomcat's naming tree > IvmContext.list() does not correctly list the context content > ------------------------------------------------------------- > > Key: TOMEE-2087 > URL: https://issues.apache.org/jira/browse/TOMEE-2087 > Project: TomEE > Issue Type: Bug > Reporter: Svetlin Zarev > Priority: Critical > Attachments: sample.zip > > > MyNamingEnumeration.gatherNodes() adds the wrong federated context entries in > the result set (related to TOMEE-2086 - it was indeed a typo, but we "fixed" > it with the wrong NameNode). > Another issue is with MyNamingEnumeration.isMyChild() which considers entries > that are NOT children to the "parent" tree as such > One more issue is that the wrong parentNode is passed as argument to > gatherNodes in case we are listing the context for any "IvmContext != this" > To give an example: > Expected context content: > {code} > ### Context: /module > Name: TestEJB!org.example.TestEJB > Class=org.apache.openejb.assembler.classic.JndiBuilder$ContextualEjbLookup > [looking up: TestEJB!org.example.TestEJB] [Value]: > proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null > Name: TestEJB > Class=org.apache.openejb.assembler.classic.JndiBuilder$ContextualEjbLookup > [looking up: TestEJB] [Value]: > proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null > Name: ModuleName Class=java.lang.String [looking up: ModuleName] > [Value]: > Name: env Class=org.apache.naming.NamingContext [looking up: env] > [Value]: org.apache.naming.NamingContext@1bb2d0a8 > ### Context: /module/env > Name: name Class=java.lang.String [looking up: name] [Value]: > module-env > {code} > Actual context content: > {code} > ### Context: /module > Name: global Class=org.apache.openejb.core.ivm.naming.IvmContext > [looking up: global] > Failed to lookup: global > Name: dummy Class=java.lang.String [looking up: dummy] > Failed to > lookup: dummy > Name: TestEJB!org.example.TestEJB > Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference > [looking up: TestEJB!org.example.TestEJB] [Reference]: > proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null > Name: TestEJB > Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference > [looking up: TestEJB] [Reference]: > proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null > Name: ModuleName Class=java.lang.String [looking up: ModuleName] > [Value]: > Name: env Class=org.apache.openejb.core.ivm.naming.IvmContext > [looking up: env] [Value]: IvmContext{mynode=} > Name: TestEJB!org.example.TestEJB > Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference > [looking up: TestEJB!org.example.TestEJB] [Reference]: > proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null > Name: TestEJB > Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference > [looking up: TestEJB] [Reference]: > proxy=org.example.TestEJB;deployment=ROOT//TestEJB;pk=null > ### Context: /module/env > Name: TestEJB!org.example.TestEJB > Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference > [looking up: TestEJB!org.example.TestEJB] > Failed to lookup: > TestEJB!org.example.TestEJB > Name: TestEJB > Class=org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference > [looking up: TestEJB] > Failed to lookup: TestEJB > Name: name Class=java.lang.String [looking up: name] [Value]: > module-env > {code} > Note the "failed too lookup..." messages - these are all objects that MUST > NOT be listed as part of that context. > I'm attaching an application that reproduces the issue. > Requesting it like "http://localhost:8080/?ejb" will print tomee's naming tree > Requesting it like "http://localhost:8080" will print tomcat's naming tree -- This message was sent by Atlassian JIRA (v6.4.14#64029)