[
https://issues.apache.org/struts/browse/STR-2154?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul Benedict closed STR-2154.
------------------------------
Resolution: Won't Fix
Assignee: (was: Struts Developers)
Craig's and Niall's comments are sufficient. J2EE, Spring, and Struts plug-ins
provide ample opportunities to perform the proposed tasks.
> possible enhancement on bootup (or proving how little I know)...
> ----------------------------------------------------------------
>
> Key: STR-2154
> URL: https://issues.apache.org/struts/browse/STR-2154
> Project: Struts 1
> Issue Type: Improvement
> Components: Core
> Affects Versions: 1.1 Final
> Environment: Operating System: other
> Platform: All
> Reporter: Nathan F Syfrig
> Priority: Minor
>
> Sorry, this is going to get a bit long, and is part of your directions to
> submit
> proposed enhancements/patches via Bugzilla.
> Preamble:
> I know this violates the letter of the "framework". However, I submit
> that it does not violate the spirit and provides an extension that
> cleanly solves some issues, especially at boot-time.
> Description:
> I am developing a sub-framework for a project that looks like it's
> going to be 95% reusable for another project that's also on my plate.
> It involves creating singleton support objects that all aspects of
> my solution wants to access, often-times for performance reasons (so
> far, my actions, formbeans, and even business logic have accessed these
> application-specific "infrastructure" components).
> It became obvious that I wanted to configure these singleton objects
> from a resource (I got lazy and used .properties - I should have used
> .xml but didn't want to put the thought into organization and dtd
> specification yet. Yeah, lame excuse). At this juncture, I ran into
> the problem of initializing my singleton through a static block, and
> I was not in the normal framework of execute(). As a result, I did not
> have access to the initialization parameters through the ServletConfig/
> Servlet/Context.
> Proposed Solution:
> Two static methods from the servlet entry point, ActionServlet:
> public static String getAppInitParameter(String key);
> public static Enumeration getAppInitParameterNames();
> Note: There are no namespace collisions as you will see in the
> javadoc further on down this post.
> Patch (all additions to ServletAction.java, from stable release 1.1):
> import java.util.Hashtable;
> protected static Hashtable appInitParameters = new Hashtable();
> /**
> * ActionServlet.getAppInitParameterNames() returns an Enumeration of
> * all the application initialization parameters.
> *
> * @return java.util.Enumeration
> */
> public static Enumeration getAppInitParameterNames() {
> return(appInitParameters.keys());
> }
> /**
> * ActionServlet.getAppInitParameter(String key) is designed to
> allow
> * struts-based applications to set and obtain their own
> initialization
> * parameters that they can set in the <init-param> block within
> the
> * <servlet> specification in <i>web.xml</i>. It works as follows:
> *
> * All application-specific entry names must start with the
> * same name as the "application" <init-param> name,
> followed by a
> * slash. Note: this "application" name is also the
> entry that
> * specifies the name of your internationalization
> resource files
> * with Struts. Example: If if you had the following in
> your
> * <i>web.xml</i> file's servlet specification:
> *
> * <init-param>
> * <param-name>application</param-name>
> * <param-value>example</param-value>
> * </init-param>
> *
> * You could now make the following entry into the web.xml
> * servlet configuration block and it would be
> * accessible from any part of your application.
> *
> * <init-param>
> *
> <param-name>example/exampleParam</param-name>
> * <param-value>example-value</param-value>
> * </init-param>
> *
> * Note: everything is case-sensitive.
> *
> * Note: The resulting initialization parameter name consists of
> the
> * contents <i>after</i> the separating slash, '/'. Example:
> *
> * ActionServlet.getAppInitParameter("exampleParam")
> returns
> * "example-value".
> *
> * This is primarily useful in the situations where you are
> initializing
> * helper parts of your application that's outside of the Action
> and
> * Form components of the framework, such as initializing singleton
> * support options as part of the initialization of your
> application's
> * base Action class extension. At this juncture, you were not
> called
> * as part of the normal "execute" path and therefore do not have
> access to
> * the complete normal Struts framework.
> *
> * @param java.lang.String key
> * @return java.lang.String
> */
> public static String getAppInitParameter(String key) {
> return((String) appInitParameters(key));
> }
> // in init()
> String appName = getServletConfig().getInitParameter("application");
> // within "while (names.hasMoreElements()) {
> // String name = names.nextElement();
> if (appName != null && name.startsWith(appName + "/"))
> {
> appInitParameters.put(name.substring(appName.length() + 1),
> getServletConfig().getInitParameter(name));
> continue;
> }
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.