You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by "Svetlin Zarev (JIRA)" <ji...@apache.org> on 2017/07/05 13:25:00 UTC

[jira] [Created] (TOMEE-2087) TomEE's naming binds objects in wrong contexts

Svetlin Zarev created TOMEE-2087:
------------------------------------

             Summary: TomEE's naming binds objects in wrong contexts
                 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

NameNode has some weird logic based on comparing hash codes,  which determines if the object has to be bound in lessTree, grtrTree, etc.  The issue is that it does not work correctly and binds the objects in the wrong contexts. For instance if lessTree/grtrTree is not  null and is a NameNode representing a subcontext, it will bind the object to that subcontext which is incorrect.

Context.lookup() seems to work because NameNode's bind()/resolve() follow the same logic, but if you inspect the naming context with Context.list() - which returns the correct information about the subcontexts, you'll see that some contexts have more name class pairs than should. 

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 bound in 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)