ask questions of java
Hi,
I have written the code to read messages from queue.But when I deploy this in weblogic 9.2 after creating a jar file it is showing unmarshaller failed
Below is the code
MyMdb.java
package com.mdb.ejb;
import javax.ejb.EJBException;
import javax.ejb.MessageDrivenBean;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
/**
* Message-Driven Bean implementation class for: MyMdb
*
*/
public class MyMdb implements javax.ejb.MessageDrivenBean,javax.jms.MessageListe ner {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* Default constructor.
*/
public MyMdb() {
// TODO Auto-generated constructor stub
}
/**
* @see MessageListener#onMessage(Message)
*/
public void onMessage(Message message) {
// TODO Auto-generated method stub
System.out.println("on two thtr ");
TextMessage textMessage = (TextMessage) message;
try {
System.out.println("\n\n\t(mdb) MyMDB Received \n"+ textMessage.getText());
SendMail.sendMail(textMessage.getText());
}
catch (JMSException e)
{
e.printStackTrace();
}
}
public void ejbRemove() throws EJBException {
// TODO Auto-generated method stub
}
public void setMessageDrivenContext(MessageDrivenContext arg0)
throws EJBException {
// TODO Auto-generated method stub
}
}
ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
version="2.1">
<enterprise-beans>
<message-driven>
<ejb-name>MyMdb</ejb-name>
<ejb-class>com.mdb.ejb.MyMdb</ejb-class>
<transaction-type>Container</transaction-type>
<activation-config>
<activation-config-property>
<activation-config-property-name>destinationType</activation-config-property-name>
<activation-config-property-value>javax.jms.Queue</activation-config-property-value>
</activation-config-property>
</activation-config>
<env-entry>
<env-entry-name>isTransacted</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>true</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>isJmsRedeliveredBroken</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>false</env-entry-value>
</env-entry>
</message-driven>
</enterprise-beans>
<assembly-descriptor>
<container-transaction>
<method>
<ejb-name>MyMdb</ejb-name>
<method-name>onMessage</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
weblogic-ejb-jar.xml
<weblogic-ejb-jar
xmlns="http://www.bea.com/ns/weblogic/90"
xmlns:j2ee="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-ejb-jar.xsd">
<weblogic-enterprise-bean>
<ejb-name>MyMdb</ejb-name>
<message-driven-descriptor>
<pool>
<max-beans-in-free-pool>10</max-beans-in-free-pool>
<initial-beans-in-free-pool>10</initial-beans-in-free-pool>
</pool>
<destination-jndi-name>qjndi</destination-jndi-name>
<connection-factory-jndi-name>cfjndi</connection-factory-jndi-name>
</message-driven-descriptor>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
It is shwoing below mentioned exception
An error occurred during activation of changes, please see the log for details.
?? Exception preparing module: EJBModule(MessageDrivenBeanProject) Unable to deploy EJB: MessageDrivenBeanProject.jar from MessageDrivenBeanProject.jar: There are 2 nested errors: weblogic.ejb.container.compliance.ComplianceExcept ion: In EJB MyMdb, the message-driven bean class must implement the javax.ejb.MessageDrivenBean interface. At weblogic.ejb.container.compliance.MessageDrivenBea nClassChecker.checkMessageDrivenImplementsMDB(Mess ageDrivenBeanClassChecker.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at weblogic.ejb.container.compliance.EJBComplianceChe cker.check(EJBComplianceChecker.java:262) at weblogic.ejb.container.compliance.EJBComplianceChe cker.checkDeploymentInfo(EJBComplianceChecker.java :216) at weblogic.ejb.container.ejbc.EJBCompiler.compliance CheckJar(EJBCompiler.java:875) at weblogic.ejb.container.ejbc.EJBCompiler.checkCompl iance(EJBCompiler.java:843) at weblogic.ejb.container.ejbc.EJBCompiler.doCompile( EJBCompiler.java:229) at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB (EJBCompiler.java:497) at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB (EJBCompiler.java:464) at weblogic.ejb.container.deployer.EJBDeployer.runEJB C(EJBDeployer.java:432) at weblogic.ejb.container.deployer.EJBDeployer.compil eJar(EJBDeployer.java:754) at weblogic.ejb.container.deployer.EJBDeployer.compil eIfNecessary(EJBDeployer.java:657) at weblogic.ejb.container.deployer.EJBDeployer.prepar e(EJBDeployer.java:1201) at weblogic.ejb.container.deployer.EJBModule.prepare( EJBModule.java:355) at weblogic.application.internal.flow.ModuleListenerI nvoker.prepare(ModuleListenerInvoker.java:93) at weblogic.application.internal.flow.DeploymentCallb ackFlow$1.next(DeploymentCallbackFlow.java:360) at weblogic.application.utils.StateMachineDriver.next State(StateMachineDriver.java:26) at weblogic.application.internal.flow.DeploymentCallb ackFlow.prepare(DeploymentCallbackFlow.java:56) at weblogic.application.internal.flow.DeploymentCallb ackFlow.prepare(DeploymentCallbackFlow.java:46) at weblogic.application.internal.BaseDeployment$1.nex t(BaseDeployment.java:615) at weblogic.application.utils.StateMachineDriver.next State(StateMachineDriver.java:26) at weblogic.application.internal.BaseDeployment.prepa re(BaseDeployment.java:191) at weblogic.application.internal.DeploymentStateCheck er.prepare(DeploymentStateChecker.java:147) at weblogic.deploy.internal.targetserver.AppContainer Invoker.prepare(AppContainerInvoker.java:61) at weblogic.deploy.internal.targetserver.operations.A ctivateOperation.createAndPrepareContainer(Activat eOperation.java:189) at weblogic.deploy.internal.targetserver.operations.A ctivateOperation.doPrepare(ActivateOperation.java: 87) at weblogic.deploy.internal.targetserver.operations.A bstractOperation.prepare(AbstractOperation.java:21 7) at weblogic.deploy.internal.targetserver.DeploymentMa nager.handleDeploymentPrepare(DeploymentManager.ja va:718) at weblogic.deploy.internal.targetserver.DeploymentMa nager.prepareDeploymentList(DeploymentManager.java :1185) at weblogic.deploy.internal.targetserver.DeploymentMa nager.handlePrepare(DeploymentManager.java:247) at weblogic.deploy.internal.targetserver.DeploymentSe rviceDispatcher.prepare(DeploymentServiceDispatche r.java:157) at weblogic.deploy.service.internal.targetserver.Depl oymentReceiverCallbackDeliverer.doPrepareCallback( DeploymentReceiverCallbackDeliverer.java:157) at weblogic.deploy.service.internal.targetserver.Depl oymentReceiverCallbackDeliverer.access$000(Deploym entReceiverCallbackDeliverer.java:12) at weblogic.deploy.service.internal.targetserver.Depl oymentReceiverCallbackDeliverer$1.run(DeploymentRe ceiverCallbackDeliverer.java:45) at weblogic.work.ServerWorkManagerImpl$WorkAdapterImp l.run(ServerWorkManagerImpl.java:518) at weblogic.work.ExecuteThread.execute(ExecuteThread. java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java :181) and weblogic.ejb.container.compliance.ComplianceExcept ion: In EJB MyMdb, a Message-driven EJB must define an ejbCreate method that takes no parameters. At weblogic.ejb.container.compliance.MessageDrivenBea nClassChecker.checkEjbCreateMethod(MessageDrivenBe anClassChecker.java:401) at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:592) at weblogic.ejb.container.compliance.EJBComplianceChe cker.check(EJBComplianceChecker.java:262) at weblogic.ejb.container.compliance.EJBComplianceChe cker.checkDeploymentInfo(EJBComplianceChecker.java :216) at weblogic.ejb.container.ejbc.EJBCompiler.compliance CheckJar(EJBCompiler.java:875) at weblogic.ejb.container.ejbc.EJBCompiler.checkCompl iance(EJBCompiler.java:843) at weblogic.ejb.container.ejbc.EJBCompiler.doCompile( EJBCompiler.java:229) at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB (EJBCompiler.java:497) at weblogic.ejb.container.ejbc.EJBCompiler.compileEJB (EJBCompiler.java:464) at weblogic.ejb.container.deployer.EJBDeployer.runEJB C(EJBDeployer.java:432) at weblogic.ejb.container.deployer.EJBDeployer.compil eJar(EJBDeployer.java:754) at weblogic.ejb.container.deployer.EJBDeployer.compil eIfNecessary(EJBDeployer.java:657) at weblogic.ejb.container.deployer.EJBDeployer.prepar e(EJBDeployer.java:1201) at weblogic.ejb.container.deployer.EJBModule.prepare( EJBModule.java:355) at weblogic.application.internal.flow.ModuleListenerI nvoker.prepare(ModuleListenerInvoker.java:93) at weblogic.application.internal.flow.DeploymentCallb ackFlow$1.next(DeploymentCallbackFlow.java:360) at weblogic.application.utils.StateMachineDriver.next State(StateMachineDriver.java:26) at weblogic.application.internal.flow.DeploymentCallb ackFlow.prepare(DeploymentCallbackFlow.java:56) at weblogic.application.internal.flow.DeploymentCallb ackFlow.prepare(DeploymentCallbackFlow.java:46) at weblogic.application.internal.BaseDeployment$1.nex t(BaseDeployment.java:615) at weblogic.application.utils.StateMachineDriver.next State(StateMachineDriver.java:26) at weblogic.application.internal.BaseDeployment.prepa re(BaseDeployment.java:191) at weblogic.application.internal.DeploymentStateCheck er.prepare(DeploymentStateChecker.java:147) at weblogic.deploy.internal.targetserver.AppContainer Invoker.prepare(AppContainerInvoker.java:61) at weblogic.deploy.internal.targetserver.operations.A ctivateOperation.createAndPrepareContainer(Activat eOperation.java:189) at weblogic.deploy.internal.targetserver.operations.A ctivateOperation.doPrepare(ActivateOperation.java: 87) at weblogic.deploy.internal.targetserver.operations.A bstractOperation.prepare(AbstractOperation.java:21 7) at weblogic.deploy.internal.targetserver.DeploymentMa nager.handleDeploymentPrepare(DeploymentManager.ja va:718) at weblogic.deploy.internal.targetserver.DeploymentMa nager.prepareDeploymentList(DeploymentManager.java :1185) at weblogic.deploy.internal.targetserver.DeploymentMa nager.handlePrepare(DeploymentManager.java:247) at weblogic.deploy.internal.targetserver.DeploymentSe rviceDispatcher.prepare(DeploymentServiceDispatche r.java:157) at weblogic.deploy.service.internal.targetserver.Depl oymentReceiverCallbackDeliverer.doPrepareCallback( DeploymentReceiverCallbackDeliverer.java:157) at weblogic.deploy.service.internal.targetserver.Depl oymentReceiverCallbackDeliverer.access$000(Deploym entReceiverCallbackDeliverer.java:12) at weblogic.deploy.service.internal.targetserver.Depl oymentReceiverCallbackDeliverer$1.run(DeploymentRe ceiverCallbackDeliverer.java:45) at weblogic.work.ServerWorkManagerImpl$WorkAdapterImp l.run(ServerWorkManagerImpl.java:518) at weblogic.work.ExecuteThread.execute(ExecuteThread. java:209) at weblogic.work.ExecuteThread.run(ExecuteThread.java :181)??
?? There are 2 nested errors: weblogic.ejb.container.compliance.ComplianceExcept ion: In EJB MyMdb, the message-driven bean class must implement the javax.ejb.MessageDrivenBean interface.?
|