vRaptor + CDI funciona?

Procurei encontrei pessoas falando que iam contribuir para que o vRaptor fosse compatível com CDI. mas não consegui fazer funcionar e nem sei se funciona rsrs.

obrigado

Você colocou o beans.xml no meta-inf do projeto web?

meta-inf o-O sry coloquei no web-inf kkkk vou ver se resolve.

org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘productGroupController’: Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.hungroo.ejb.beans.establishment.product.ProductGroupBean com.hungroo.controlpanel.web.controllers.menu.product.group.ProductGroupController.productGroupBean; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [com.hungroo.ejb.beans.establishment.product.ProductGroupBean] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@javax.inject.Inject()}

esse ProductGroupBean está fora do VRaptor e do Spring?

seguinte…

tenho 2 projetos ejb 2 client(ficam interfaces dos ejbs e entities) e tenho o web tudo empacotado no ear, o spring e vraptor estão no lib do war (WEB-INF/lib)

única coisa é que meu projeto começou implementando os @Local e @Remote que não são mais necessários no EJB3.1 será que é por isso que eu não consigo utilizar o CDI ?

abraços

@Local e @Remote são sim necessários no EJB 3.1. Com ele que você define quem é local e quem é remoto. O que você não precisa mais é uma interface para cada EJB, sendo que a @LocalBean funciona apenas para EJBs locais e stateless.

As entidades e a implementação dos EJBs devem ficar dentro do módulo EJB, e não do EJB Client.

@Local e @Remote são sim necessários no EJB 3.1. Com ele que você define quem é local e quem é remoto. O que você não precisa mais é uma interface para cada EJB, sendo que a @LocalBean funciona apenas para EJBs locais e stateless.

As entidades e a implementação dos EJBs devem ficar dentro do módulo EJB, e não do EJB Client.[/quote]

a implementação dos EJBS estão dentro do módulo ejb, no client so tem as interfaces… e as entities no EBJ3.1 não são feitas para serem POJOS ? eliminando a necessidade de DTO’s ?

então deveria funcionar CDI com a configuração @Local(InterfaceLocal.class) ?

Você está fazendo confusão de Entity Beans e Session Beans. Session Beans é que usam @Local e @Remote, incluindo @LocalBean.

Não. DTO você ainda vai precisar, pois suas entidades não são visíveis na camada web, já que elas estão enjauladas no módulo EJB. Você vai ter que fazer DTOs para poder exportar os dados para qualquer módulo externo ao EJB.

A menos que você use um container com web-profiler, que aí você não tem mais um EAR e nem módulo EJB e nem EJB-client, e sim apenas um WAR com tudo lá dentro. Digamos que o EJB com web-profile é a mesma coisa que um Spring + Hibernate.

Você está fazendo confusão de Entity Beans e Session Beans. Session Beans é que usam @Local e @Remote, incluindo @LocalBean.

Não. DTO você ainda vai precisar, pois suas entidades não são visíveis na camada web, já que elas estão enjauladas no módulo EJB. Você vai ter que fazer DTOs para poder exportar os dados para qualquer módulo externo ao EJB.

A menos que você use um container com web-profiler, que aí você não tem mais um EAR e nem módulo EJB e nem EJB-client, e sim apenas um WAR com tudo lá dentro. Digamos que o EJB com web-profile é a mesma coisa que um Spring + Hibernate.[/quote]

Confundi não… eu tenho Entity Beans no client… pq eu exporto eles para a camada web invés de ter DTO’s.

em relação ao CDI tenho que fazer algo diferente no vRaptor ?

Isso é errado se você está usando módulos separados. Até porque você ganhará de presente vários “lazy load exception”. Se você quer mais liberdade de usar entities na livremente na camada web, dê uma olhada no web-profile.

Não sei te dizer sobre isso. O Spring usado pelo Vraptor é da familia 3x, que suporta a annotation javax.inject. Creio que basta você colocar um beans.xml vazio no seu projeto web e deve funcionar corretamente. Porém usando módulo EJB separado do modulo WEB creio que você nunca vai conseguir injetar um Session Bean. No web-profile eu sei que dá, pois o JBoss Seam 3 faz isso.

Isso é errado se você está usando módulos separados. Até porque você ganhará de presente vários “lazy load exception”. Se você quer mais liberdade de usar entities na livremente na camada web, dê uma olhada no web-profile.

Não sei te dizer sobre isso. O Spring usado pelo Vraptor é da familia 3x, que suporta a annotation javax.inject. Creio que basta você colocar um beans.xml vazio no seu projeto web e deve funcionar corretamente. Porém usando módulo EJB separado do modulo WEB creio que você nunca vai conseguir injetar um Session Bean. No web-profile eu sei que dá, pois o JBoss Seam 3 faz isso.[/quote]

Obrigado, no projeto que está iniciando vamos utilizar web-profile, mas neste eu tenho mais de 1 website acessando os ejb’s então é melhor deixa-los fora mesmo