[jboss-user] [Spring Integration] - Unabled to return specified bean factory in web application

ivanyuan do-not-reply at jboss.com
Thu Nov 19 16:52:44 EST 2009


Hi,

I am using jboss JBoss 4.2.2GA release, and want to deploy some common spring beans and make them available to all other web services or EJBs within same jboss environment.

It seems that jboss spring deployer is a good choice. I downloaded deployer version 2, then created some simple test. The MySrpingBean.spring can be deployed on jboss properly proved by the following lines in jboss log:
     Bean factory [MySpringBean] binded to local JNDI

And I also saw the following information from jboss jmx-console JNDI view:

     MySpringBean
     org.jboss.spring.factory.NamedXmlApplicationContext

Basically, all above indicated my spring has been deployed and registered into local JDNI.

However, when I created a simple web application to retrieve it. I got the following exception:

org.springframework.beans.factory.access.BootstrapException: Unable to return specified BeanFactory instance: factory key [mainApplicationContext], from group with resource name [classpath*:beanRefContext.xml]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'mainApplicationContext' is defined

	at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:410)

	at org.springframework.web.context.ContextLoader.loadParentContext(ContextLoader.java:341)

	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:195)

	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)

	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3856)

	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4361)

	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:790)

	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:770)

	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:553)

	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

	at java.lang.reflect.Method.invoke(Method.java:585)

	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296)

	at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)

	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)

	at org.apache.catalina.core.StandardContext.init(StandardContext.java:5312)

	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

	at java.lang.reflect.Method.invoke(Method.java:585)

	at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296)

	at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)

	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)

	at org.jboss.web.tomcat.service.TomcatDeployer.performDeployInternal(TomcatDeployer.java:301)

	at org.jboss.web.tomcat.service.TomcatDeployer.performDeploy(TomcatDeployer.java:104)

	at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:375)

	at org.jboss.web.WebModule.startModule(WebModule.java:83)

	at org.jboss.web.WebModule.startService(WebModule.java:61)

	at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)

	at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)

	at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

	at java.lang.reflect.Method.invoke(Method.java:585)

	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)

	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)

	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)

	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)

	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)

	at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)

	at $Proxy0.start(Unknown Source)

	at org.jboss.system.ServiceController.start(ServiceController.java:417)

	at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

	at java.lang.reflect.Method.invoke(Method.java:585)

	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)

	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)

	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)

	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)

	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)

	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)

	at $Proxy45.start(Unknown Source)

	at org.jboss.web.AbstractWebContainer.start(AbstractWebContainer.java:466)

	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

	at java.lang.reflect.Method.invoke(Method.java:585)

	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)

	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)

	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)

	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)

	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)

	at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97)

	at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238)

	at org.jboss.wsf.container.jboss42.DeployerInterceptor.start(DeployerInterceptor.java:87)

	at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.start(SubDeployerInterceptorSupport.java:188)

	at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:95)

	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)

	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)

	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)

	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)

	at $Proxy46.start(Unknown Source)

	at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)

	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)

	at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)

	at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

	at java.lang.reflect.Method.invoke(Method.java:585)

	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)

	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)

	at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)

	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)

	at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)

	at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)

	at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)

	at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)

	at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)

	at $Proxy9.deploy(Unknown Source)

	at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)

	at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)

	at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.doScan(AbstractDeploymentScanner.java:263)

	at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)

	at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)

	at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)

	at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)

	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

	at java.lang.reflect.Method.invoke(Method.java:585)

	at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)

	at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)

	at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
 

There is no detailed information about how to retrieve the deployed bean from web service. Not sure where I did wrong. Here is how I did.

my web.xml file is as below:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath*:*.xml</param-value>       
	</context-param>
	
	<context-param>
   		<param-name>parentContextKey</param-name>
   		<param-value>mainApplicationContext</param-value>
	</context-param>
	
   		<listener-class>
      		org.springframework.web.context.ContextLoaderListener
   		</listener-class>
	   
  	
  		<display-name>JAX-RS REST Servlet</display-name>
  		<servlet-name>JAX-RS REST Servlet</servlet-name>
  		<servlet-class>
  			org.apache.cxf.transport.servlet.CXFServlet
  		</servlet-class>
  		<load-on-startup>1</load-on-startup>
  	
  	<servlet-mapping>
  		<servlet-name>JAX-RS REST Servlet</servlet-name>
  		<url-pattern>/services/*</url-pattern>
  	</servlet-mapping>
	<welcome-file-list>
    	<welcome-file>index.jsp</welcome-file>
  	</welcome-file-list>
</web-app>


And my spring context in web application is as below:

  | <beans xmlns="http://www.springframework.org/schema/beans"
  |     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |     xmlns:jaxrs="http://cxf.apache.org/jaxrs"
  |     xmlns:aop="http://www.springframework.org/schema/aop"
  |     xmlns:jee="http://www.springframework.org/schema/jee"
  |     xsi:schemaLocation="http://www.springframework.org/schema/beans
  |     	http://www.springframework.org/schema/beans/spring-beans-2.0.xsd 
  |     	http://cxf.apache.org/jaxrs
  | 	http://cxf.apache.org/schemas/jaxrs.xsd
  | 	http://www.springframework.org/schema/aop
  |     	http://www.springframework.org/schema/aop/spring-aop.xsd
  |     	http://www.springframework.org/schema/jee
  |     	http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
  | 
  |     
  |     
  |     
  |     
  | 
  |     <!-- retrieve spring factory MySpringBean from JNDI  and it is referenced in my web.xml file -->
  |     <jee:jndi-lookup id="mainApplicationContext" jndi-name="MySpringBean"/>
  | 
  | <!-- mySrpingBean is the bean reference name defined in the deployed spring context -->
  | 
  |     
  | 
  |     
  |          
  |     
  |     
  |     <jaxrs:server id="testWSEndpoint" address="/">
  |         <jaxrs:serviceBeans>
  |               
  |         </jaxrs:serviceBeans>
  |     </jaxrs:server>
  | 
  | 
  | 
  | I'm struggling on this problem for a while. Can you please take? Any suggestion or advice will be really appreciated.
  | 
  | Thank you in advance!
  | 
  | 
  | 

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

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4266663



More information about the jboss-user mailing list