Only BeanFactories that are constructed by SpringDeployer can reference beans 
from parent BeanFactories.
In your case parent BF is constructed by SpringDeployer, but your child BF is 
constructed by regular Spring ContextLoader.
And only SpringDeployer knows about parent=(<some_parent>) notion.

You can use something like this:

  | public abstract class AbstractJndiContextLoader extends ContextLoader {
  | 
  |     protected String getJndiName(ServletContext servletContext) {
  |         String jndiName = DEFAULT_ROOT_APP_CONTEXT_JNDI_NAME;
  |         if (servletContext.getInitParameter(ROOT_JNDI_APP_CONTEXT_KEY) != 
null) {
  |             jndiName = 
servletContext.getInitParameter(ROOT_JNDI_APP_CONTEXT_KEY);
  |         }
  |         return jndiName;
  |     }
  | 
  |     protected Context createContext() throws BeansException {
  |         try {
  |             return new InitialContext();
  |         } catch (Exception e) {
  |             throw new ApplicationContextException("Cannot create naming 
context!", e);
  |         }
  |     }
  | 
  | }
  | 
  | public abstract class JndiContextSaver extends AbstractJndiContextLoader {
  | 
  |     @Override
  |     protected WebApplicationContext 
createWebApplicationContext(ServletContext servletContext, ApplicationContext 
parent) throws BeansException {
  |         try {
  |             WebApplicationContext wac = 
super.createWebApplicationContext(servletContext, parent);
  |             bindApplicationContext(getJndiName(servletContext), wac);
  |             return wac;
  |         } catch (Exception e) {
  |             throw new ApplicationContextException("Cannot bind application 
context.", e);
  |         }
  |     }
  | 
  |     protected abstract void bindApplicationContext(String jndiName, 
ApplicationContext applicationContext) throws Exception;
  | 
  |     @Override
  |     public void closeWebApplicationContext(ServletContext servletContext) {
  |         unbindApplicationContext(getJndiName(servletContext));
  |         super.closeWebApplicationContext(servletContext);
  |     }
  | 
  |     protected abstract void unbindApplicationContext(String jndiName);
  | 
  | }
  | 
  | public class JBossJndiContextSaver extends JndiContextSaver {
  | 
  |     protected void bindApplicationContext(String jndiName, 
ApplicationContext applicationContext) throws Exception {
  |         NonSerializableFactory.bind(createContext(), jndiName, 
applicationContext);
  |     }
  | 
  |     protected void unbindApplicationContext(String jndiName) {
  |         try {
  |             NonSerializableFactory.unbind(createContext(), jndiName);
  |         } catch (NamingException e) {
  |             LogFactory.getLog(getClass()).warn("Exception unbinding 
application context.", e);
  |         }
  |     }
  | 
  | }
  | 
  | public class JndiContextSaverListener extends 
InitializerContextLoaderListener {
  | 
  |     @Override
  |     protected ContextLoader createContextLoader() {
  |         return new JBossJndiContextSaver();
  |     }
  | 
  | }
  | 
  |     <listener>
  |         
<listener-class>com.alesj.acme.webcommon.context.JndiContextSaverListener</listener-class>
  |     </listener>
  | 
  | 

HTH,
         Ales

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4056211#4056211

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4056211
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to