2014-11-30 7 views
5

Ich versuche, Spring-Beans in eine EJB zu injizieren mit @Interceptors (SpringBeanAutowiringInterceptor.class)EJB3 Abfangjäger nicht Kontext Bootstrap

Hier ist meine 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 
    } 
} 

Und beanRefContext.xml wie

folgt
<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 befinden sich im Ordner META-INF.

wenn startProcessing ist für alle 5 Minuten genannt, und wir sind die unten Ausnahme bekommen

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 

finden Sie die vollständige Ausnahme wie unten

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) 

Bitte leite mich, wie diese Fehler zu beheben

+0

Hat jemand eine Lösung für dieses Problem? –

+0

Ping. Hat jemand eine Lösung für dieses Problem? – dikkini

Antwort

0

Der ContextSingletonBeanFactoryLocator sucht nach dem Ressourcenklassenpfad *: beanRefContext.xml, daher muss die Datei "beanRefContext.xml" in den Klassen enthalten sein spath, ref this link,

Verschieben Sie beanRefContext.xml in einen Ordner, der im Klassenpfad ist und das das Problem lösen sollte.

0

Zunächst einmal, ich denke, das Entfernen von META-INF sollte helfen. Außerdem habe ich gerade das gleiche Problem gelöst, indem ich den in Frage stehenden Kontext in das Verzeichnis/resources verschoben habe