[jboss-jira] [JBoss JIRA] (AS7-4240) NameNotFoundException thrown when trying to read java:*/env context in Servlet container.

Robert Edgecombe (JIRA) jira-events at lists.jboss.org
Wed Mar 21 02:08:47 EDT 2012


    [ https://issues.jboss.org/browse/AS7-4240?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12678211#comment-12678211 ] 

Robert Edgecombe commented on AS7-4240:
---------------------------------------

using a @Resource in java:global forces the servlet developer to make assumptions about how it is packaged into an application and how that application is deployed on a server. These are assumptions that the servlet develper should not be making.

Section 5.2.1 of the4 JAvaEE6 soecification states
2.The container provides an implementation of the JNDI naming context that stores the application component environment. The container also provides the tools that allow the Deployer to create and manage the environment of each application component.

the component provide CAN use the web.xml to specify a value (at their own choice) but the container must provide tools to override this or supply a value if that is not done by the component provider.

jboss-web.xml is not a tool.

The very least you can do is provide access to java:app/env as then the packager can use alternade deployment descriptor entries in the application to map java:comp to java:app


                
> NameNotFoundException thrown when trying to read java:*/env context in Servlet container.
> -----------------------------------------------------------------------------------------
>
>                 Key: AS7-4240
>                 URL: https://issues.jboss.org/browse/AS7-4240
>             Project: Application Server 7
>          Issue Type: Bug
>          Components: Naming
>    Affects Versions: 7.1.1.Final
>         Environment: Windows7 Enterprise x64
> Intel Core 2 Duo
> Oracle Java jdk1.6.0_29
>            Reporter: Robert Edgecombe
>            Assignee: Stuart Douglas
>             Fix For: 7.1.2.Final
>
>
> We have many J2EE 1.4 apps that need to be migrated from Oracle Application Server
> These applications rely on configuration using Environment Entries 
> Most of the answers to issues I have read indicate that this is done using jboss-web.xml but this is not an acceptable solutin as it requires repackaging of the deployment artifact for different servers and different environments and is therefor contrary to the spirit (and I believe the letter) of the JavaEE spec.
> The documentation on this capability is either hidden or missing.
> I was tasked with working out how to use the JBOSS tools to configure these values and have been unable to do so.
> I modified the quickstart helloworld example to accept a value using the @Resource annotation and attempted to set this value using jboss-cli.
> After several attempts to guess how to do this I modified the servlet to walk down the context tree.
> This servlet throws a NameNotFoundException when trying to list the bindings at:
> * java:comp/env
> * java:app/env
> * java:module/env
> I have written the servlet to perform this walk in the following contexts:
> * Ithe initial context
> * java:
> * java:jboss
> * java:comp
> * java:module
> * java:app
> * java:global
> java:global seems to be able to accept values added using jboss-cli (not surprising)
> java:comp, java:module and java:app seem to return some of the expected values (eg ModuleName and AppName) but throw the exception when trying to list entries under */env
> The initial context and java: seem to display the entries added through jboss-cli
> Adding a Deployment descriptor (web.xml), that provides values for these entries, results in no entries that are visible through jboss-cli or any of the contexts listed in the servlet.
> I then ran the following command through jboss-cli and restarted the app
> /profile=full/subsystem=naming/binding=\/java\:app\/jboss-as-helloworld-ear\/env\/GREETING_TEXT:add(binding-type="simple",value="RE")
> This resulted in the same NameNotFoundException being thrown at java:app/env when walking the initial context as has been thrown all along when listing env in java:app 
> It also resulted in java:app appearing in the java: context but being empty.
> Prior to running the add command, java:app did not appear in the initial context or java: context at all.
> I then ran the following command through jboss-cli and restarted the app
> /profile=full/subsystem=naming/binding=\/java\:module\/jboss-as-helloworld-ear\/jboss-as-helloworld\/env\/GREETING_TEXT:add(binding-type="simple",value="SJM")
> This resulted in the same NameNotFoundException being thrown at java:module/env when walking the initial context as has been thrown all along when listing env in java:module
> It also resulted in java:module appearing in the java: context but being empty.
> Prior to running the add command, java:module did not appear in the initial context or java: context at all.
> My conclusion is that my commands in jboss-cli may be the appropriate ones to add the correct entries but that the servlet cannot reach the java:module/env or java:app/env contexts that should be available to it according to the javaEE6 spec. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the jboss-jira mailing list