Results 1 to 2 of 2

Thread: @Stateless don't recognize "name" attribute

  1. #1
    Join Date
    Jun 2011
    Location
    João Pessoa, Paraíba, Brasil
    Posts
    2

    Default @Stateless don't recognize "name" attribute

    I'm implementing the migration task from an ear JBoss application to Spring stand-alone jar application. The problem is: the value of "name" attribute in @Stateless(name="Bean") is not recognized in the Bean Factory when the annotation @EJB(name="Bean") verifies this reference in another EJB.

    This problem is resolved when the annotations (@EJB) contains no "name" attribute. What is happen? The pitchfork project (http://www.springsource.com/pitchfork) also uses the annotations without the "name" attributes. I have tested with 2.5.6 and 3.1.0 versions. Some idea?

    This example shown the problem:

    @Stateless(name = "BeanA")
    public class BeanA implements IBeanA {

    @EJB(name="BeanB")
    private BeanB b;

    ...
    }

    @Stateless(name = "BeanB")
    public class BeanB implements IBeanB {
    ...
    }



    Caused by: org.springframework.beans.factory.NoSuchBeanDefini tionException: No bean named 'BeanB' is defined
    at org.springframework.beans.factory.support.DefaultL istableBeanFactory.getBeanDefinition(DefaultListab leBeanFactory.java:527)
    at org.springframework.beans.factory.support.Abstract BeanFactory.getMergedLocalBeanDefinition(AbstractB eanFactory.java:1087)
    at org.springframework.beans.factory.support.Abstract BeanFactory.doGetBean(AbstractBeanFactory.java:278 )
    at org.springframework.beans.factory.support.Abstract BeanFactory.getBean(AbstractBeanFactory.java:198)
    at org.springframework.context.annotation.CommonAnnot ationBeanPostProcessor.autowireResource(CommonAnno tationBeanPostProcessor.java:440)
    at org.springframework.context.annotation.CommonAnnot ationBeanPostProcessor.getResource(CommonAnnotatio nBeanPostProcessor.java:414)
    at org.springframework.context.annotation.CommonAnnot ationBeanPostProcessor$EjbRefElement.getResourceTo Inject(CommonAnnotationBeanPostProcessor.java:696)
    at org.springframework.beans.factory.annotation.Injec tionMetadata$InjectedElement.inject(InjectionMetad ata.java:147)
    at org.springframework.beans.factory.annotation.Injec tionMetadata.inject(InjectionMetadata.java:84)
    at org.springframework.context.annotation.CommonAnnot ationBeanPostProcessor.postProcessPropertyValues(C ommonAnnotationBeanPostProcessor.java:302)
    ... 29 more

  2. #2
    Join Date
    Jun 2006
    Location
    The Netherlands
    Posts
    13,624

    Default

    And how is this related to spring? Spring isn't an EJB container and as such isn't picking up any of the EJB annotations, you will need to use either @Component or @Service to make it work with spring. I fyou need EJBs deploy it to an EJB container and use spring to get a reference to that bean by doing a JNDI lookup...
    Marten Deinum
    Java Consultant / Pragmatist / Open Source Enthousiast / Author


    Pro Spring MVC: With Web Flow
    Conspect

    Have you read the reference guide.
    Use the [ code ] tags, young padawan

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •