2014-11-30 28 views
5

Próbuję wstrzyknąć Wiosenne fasolę do EJB przy użyciu @Interceptors (SpringBeanAutowiringInterceptor.class)EJB3 Interceptor nie może bootstrap kontekst

Oto mój EJB:

@Stateless 
@Interceptors(SpringBeanAutowiringInterceptor.class) 
public class processMethodService implements 
    processMethodService { 

    @Autowired 
    private SomeBean bean; 

    @Schedule(minute = "*/5", hour = "*", persistent = false) 
    @TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) 
    public void startProcessing() { 
     //businesslogic 
    } 
} 

I beanRefContext.xml następująco

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.2.xsd"> 

<bean id="ejb-businesslayer.application.context" lazy-init="true" 
    class="org.springframework.context.support.ClassPathXmlApplicationContext"> 
    <constructor-arg> 
     <list> 
      <value>classpath:/META-INF/spring-config.xml</value> 
     </list> 
    </constructor-arg> 
</bean> ` 

beanRefContext.xml, spring-config.xml znajdują się w folderze META-INF.

gdy startProcessing nazywa za każde 5 minut i jesteśmy coraz poniższy wyjątek

Exception data: javax.ejb.EJBException: session bean lifecycle interceptor failure;nested exception is:org.springframework.beans.factory.access.BootstrapException: Unable to return specified BeanFactory instance: factory key [null], 
from group with resource name [classpath*:beanRefContext.xml]; 
nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: 
No qualifying bean of type [org.springframework.beans.factory.BeanFactory] is defined 

Proszę znaleźć kompletny wyjątek jak poniżej

Exception data: javax.ejb.EJBException: session bean lifecycle interceptor failure;nested exception is: org.springframework.beans.factory.access.BootstrapException: Unable to return specified BeanFactory instance: factory key [null], from group with resource name [classpath*:beanRefContext.xml]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.beans.factory.BeanFactory] is defined`enter code here` 
at com.ibm.ejs.container.util.ExceptionUtil.EJBException(ExceptionUtil.java:466) 
at com.ibm.ejs.container.SessionBeanO.callLifecycleInterceptors(SessionBeanO.java:288) 
at com.ibm.ejs.container.StatelessBeanO.initialize(StatelessBeanO.java:399) 
at com.ibm.ejs.container.BeanOFactory.create(BeanOFactory.java:147) 
at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1238) 
at com.ibm.ejs.container.EJSHome.createBeanO(EJSHome.java:1356) 
at com.ibm.ejs.container.activator.UncachedActivationStrategy.atActivate(UncachedActivationStrategy.java:88) 
at com.ibm.ejs.container.activator.Activator.preInvokeActivateBean(Activator.java:615) 
at com.ibm.ejs.container.EJSContainer.preInvokeActivate(EJSContainer.java:4205) 
at com.ibm.ejs.container.EJSContainer.EjbPreInvoke(EJSContainer.java:3535) 
at com.ibm.ejs.container.TimedObjectWrapper.invokeCallback(TimedObjectWrapper.java:110) 
at com.ibm.ejs.container.TimerNpListener.doWork(TimerNpListener.java:293) 
at com.ibm.ejs.container.TimerNpListener.doWorkWithRetries(TimerNpListener.java:171) 
at com.ibm.ejs.container.TimerNpListener.fired(TimerNpListener.java:141) 
at com.ibm.ws.asynchbeans.AlarmImpl.callListenerMethod(AlarmImpl.java:427) 
at com.ibm.ws.asynchbeans.timer.GenericTimer.run(GenericTimer.java:228) 
at com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:1178) 
at com.ibm.ws.asynchbeans.AlarmImpl.runListenerAsCJWork(AlarmImpl.java:249) 
at com.ibm.ws.asynchbeans.am._Alarm.fireAlarm(_Alarm.java:333) 
at com.ibm.ws.asynchbeans.am._Alarm.run(_Alarm.java:230) 
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1783) 

Caused by: org.springframework.beans.factory.access.BootstrapException: Unable to return specified BeanFactory instance: factory key [null], from group with resource name [classpath*:beanRefContext.xml]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.springframework.beans.factory.BeanFactory] is defined 
at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:402) 
at org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor.getBeanFactoryReference(SpringBeanAutowiringInterceptor.java:160) 
at org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor.getBeanFactory(SpringBeanAutowiringInterceptor.java:141) 
at org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor.doAutowireBean(SpringBeanAutowiringInterceptor.java:121) 
at org.springframework.ejb.interceptor.SpringBeanAutowiringInterceptor.autowireBean(SpringBeanAutowiringInterceptor.java:95) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:88) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55) 
at java.lang.reflect.Method.invoke(Method.java:613) 
at com.ibm.ejs.container.interceptors.InterceptorProxy.invokeInterceptor(InterceptorProxy.java:227) 
at com.ibm.ejs.container.interceptors.InvocationContextImpl.proceed(InvocationContextImpl.java:548) 
at com.ibm.ejs.container.interceptors.InvocationContextImpl.doLifeCycle(InvocationContextImpl.java:273) 
at com.ibm.ejs.container.SessionBeanO.callLifecycleInterceptors(SessionBeanO.java:274) 

proszę kierować do mnie, w jaki sposób rozwiązać ten błąd

+0

Ktoś ma rozwiązania tego problemu? –

+0

Ping. Ktoś ma rozwiązanie tego problemu? – dikkini

Odpowiedz

0

Obiekt ContextSingletonBeanFactoryLocator szuka zasobu ścieżka klasy *: beanRefContext.xml, więc plik beanRefContext.xml musi znajdować się w klasach Spath, nr ref: this link,

Przenieś beanRefContext.xml do folderu znajdującego się w ścieżce klasy i powinno to rozwiązać problem.

0

Po pierwsze, myślę, że usunięcie META-INF powinno pomóc. Po prostu rozwiązałem ten sam problem przez przeniesienie kontekstu do katalogu/resources

Powiązane problemy