2

Je crée un Enterprise ApplicationCustomerApp qui a également généré deux projets CustomerApp-ejb et CustomerApp-war. Dans le CustomerApp-ejb, je crée un appel SessionBean CustomerSessionBean.java comme ci-dessous.Java EE 6 + JPA - Exception: Bean géré par message ne peut pas être géré bean

package com.customerapp.ejb; 

import javax.ejb.Stateless; 
import javax.ejb.LocalBean; 
import javax.persistence.EntityManager; 
import javax.persistence.PersistenceContext; 

@Stateless 
@LocalBean 
public class CustomerSessionBean { 
    @PersistenceContext(unitName = "CustomerApp-ejbPU") 
    private EntityManager em; 

    public void persist(Object object) { 
     em.persist(object); 
    } 
} 

Maintenant, je peux déployer CustomerApp-war très bien. Mais dès que je crée un Message Driven Bean, je ne peux plus déployer CustomerApp-war. Lorsque je crée NotificationBean.java (bean géré par message), dans l'option project destination, je clique sur ajouter, et j'ai NotificationQueue pour le Destination Name et Destination Type est la file d'attente. Voici le code

package com.customerapp.mdb; 

import javax.ejb.ActivationConfigProperty; 
import javax.ejb.MessageDriven; 
import javax.jms.Message; 
import javax.jms.MessageListener; 

@MessageDriven(mappedName = "jms/NotificationQueue", activationConfig = { 
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"), 
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue") 
}) 
public class NotificationBean implements MessageListener { 

    public NotificationBean() { 
    } 

    public void onMessage(Message message) { 
    } 

} 

Le journal du serveur a indiqué Message Driven Bean cant be managed bean. Eh bien, je ne voulais pas que ce soit géré par le haricot. Je n'ai pas eu @ManagedBean dans le code ????

EDIT: Voici le journal du serveur

[#|2010-06-03T10:02:08.172-0400|SEVERE|glassfishv3.0|javax.enterprise.system.core.com.sun.enterprise.v3.server|_ThreadID=24;_ThreadName=Thread-1;|Exception while loading the app org.glassfish.deployment.common.DeploymentException: Message Driven Beans can't be Managed Beans 
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:169) 
at org.glassfish.kernel.event.EventsImpl.send(EventsImpl.java:125) 
at org.glassfish.internal.data.ApplicationInfo.load(ApplicationInfo.java:224) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:338) 
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:183) 
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:272) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:305) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:320) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1176) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$900(CommandRunnerImpl.java:83) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235) 
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1224) 
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:365) 
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:204) 
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:166) 
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:100) 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:245) 
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791) 
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) 
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) 
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170) 
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102) 
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88) 
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76) 
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53) 
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57) 
at com.sun.grizzly.ContextTask.run(ContextTask.java:69) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330) 
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309) 
at java.lang.Thread.run(Thread.java:637) 
Caused by: org.jboss.weld.DefinitionException: Message Driven Beans can't be Managed Beans 
at org.jboss.weld.bean.SessionBean.checkEJBTypeAllowed(SessionBean.java:313) 
at org.jboss.weld.bean.SessionBean.initialize(SessionBean.java:122) 
at org.jboss.weld.bootstrap.AbstractBeanDeployer.deploy(AbstractBeanDeployer.java:111) 
at org.jboss.weld.bootstrap.BeanDeployment.deployBeans(BeanDeployment.java:151) 
at org.jboss.weld.bootstrap.WeldBootstrap.deployBeans(WeldBootstrap.java:367) 
at org.glassfish.weld.WeldDeployer.event(WeldDeployer.java:167) 
... 30 more 

Répondre

2

L'exception est DeploymentException: Message Driven Beans can't be Managed Beans

C'est a bug in GlassFish 3.0 qui est fixé à 3.0.1.

  • solution: supprimer le beans.xml (mais cela désactive CDI)
  • vraie solution: télécharger a promoted build de GlassFish 3.0.1 (le problème est signalé comme étant corrigé dans la version 3.0.1-B9 donc une version supérieure devrait fonctionner)

Ci-dessous la réponse initiale:


  • Où se trouve la MDB? L'avez-vous mis dans le CustomerApp-ejb?
  • Que voulez-vous dire par Maintenant, je peux déployer CustomerApp-war juste bien? Vous êtes supposé déployer l'application Enterprise (CustomerApp).
  • Que voyez-vous dans les journaux GlassFish lorsque le déploiement échoue?
+0

@Harry ** Vérifiez les journaux du serveur ** ... –

+0

Je viens de mettre à jour mon message avec le journal du serveur. Merci beaucoup. L'exception est 'Message Driven Bean ne peut pas être géré Bean' –

+0

Super. Cela le corrige. J'ai une dernière question si cela ne vous dérange pas. Sur votre site web, vous avez glassfish et glassfish-web. Quels sont les différents entre ces deux? –