[
https://issues.jboss.org/browse/AS7-4240?page=com.atlassian.jira.plugin.s...
]
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