Deployment problem with a simple EJB example
peacemaker88 Dec 7, 2004 8:32 AMHi,
I want to reproduce an EJB tutorial and want to deploy Konto.jar into JBoss 4.0.0. So, I put it into the default/deploy directoy and I got the following error message:
13:29:33,581 WARN [verifier] EJB spec violation:
Bean : KontoBean
Method : public abstract double abheben(int) throws RemoteException
Section: 6.10.5
Warning: The methods defined in the remote interface must have a matching method
in the bean's class with the same name and same number and types of arguments.
13:29:33,591 WARN [verifier] EJB spec violation:
Bean : KontoBean
Method : public abstract void einzahlen(int) throws RemoteException
Section: 6.10.5
Warning: The methods defined in the remote interface must have a matching method
in the bean's class with the same name and same number and types of arguments.
13:29:33,611 ERROR [MainDeployer] could not create deployment: file:/D:/jboss-4.
0.0/server/default/deploy/Konto.jar
org.jboss.deployment.DeploymentException: Verification of Enterprise Beans faile
d, see above for error messages.
at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:553)
at org.jboss.deployment.MainDeployer.create(MainDeployer.java:889)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:745)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:709)
at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
er.java:141)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractIntercept
or.java:119)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelM
BeanOperationInterceptor.java:131)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
java:242)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
at $Proxy8.deploy(Unknown Source)
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymen
tScanner.java:305)
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentS
canner.java:481)
at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
doScan(AbstractDeploymentScanner.java:204)
at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(A
bstractDeploymentScanner.java:277)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanS
upport.java:271)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMB
eanSupport.java:221)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
er.java:141)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
java:242)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceControl
ler.java:891)
at $Proxy0.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:416)
at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
er.java:141)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
java:242)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
at $Proxy4.start(Unknown Source)
at org.jboss.deployment.SARDeployer.start(SARDeployer.java:261)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:935)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:746)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:709)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:693)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatch
er.java:141)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractIntercept
or.java:119)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelM
BeanOperationInterceptor.java:131)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:74)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.
java:242)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:176)
at $Proxy5.deploy(Unknown Source)
at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:396)
at org.jboss.system.server.ServerImpl.start(ServerImpl.java:293)
at org.jboss.Main.boot(Main.java:151)
at org.jboss.Main$1.run(Main.java:405)
at java.lang.Thread.run(Thread.java:534)
13:29:33,991 INFO [TomcatDeployer] deploy, ctxPath=/jmx-console, warUrl=file:/D
:/jboss-4.0.0/server/default/deploy/jmx-console.war/
13:29:34,572 INFO [TomcatDeployer] deploy, ctxPath=/web-console, warUrl=file:/D
:/jboss-4.0.0/server/default/deploy/management/web-console.war/
13:29:36,535 ERROR [URLDeploymentScanner] Incomplete Deployment listing:
Incompletely deployed packages:
org.jboss.deployment.DeploymentInfo@98016448 { url=file:/D:/jboss-4.0.0/server/d
efault/deploy/Konto.jar }
deployer: org.jboss.ejb.EJBDeployer@f102d3
status: Deployment FAILED reason: Verification of Enterprise Beans failed, see
above for error messages.
state: FAILED
watch: file:/D:/jboss-4.0.0/server/default/deploy/Konto.jar
altDD: null
lastDeployed: 1102422573210
lastModified: 1102422573180
mbeans:
Here is my Konto.jar file structure:
KontoHome.class
Konto.class
KontoBean.class
META-INF\MANIFEST.MF
META-INF\ejb-jar.xml
"ejb-jar.xml" contains:
<?xml version="1.0"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd"> <ejb-jar> <display-name>Konto</display-name> <enterprise-beans> <session> <description>Ein einfaches Guthabenkonto</description> <ejb-name>KontoBean</ejb-name> <home>KontoHome</home> <remote>Konto</remote> <ejb-class>KontoBean</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container</transaction-type> </session> </enterprise-beans> </ejb-jar>
"Konto.java":
import javax.ejb.*; import java.rmi.RemoteException; public interface Konto extends EJBObject { public double abheben (int betrag) throws RemoteException; public void einzahlen (int betrag) throws RemoteException; public double getKontostand() throws RemoteException; }
"KontoHome.java":
import javax.ejb.*; import java.rmi.RemoteException; public interface KontoHome extends EJBHome { public Konto create() throws CreateException, RemoteException; }
"KontoBean.java":
import java.rmi.RemoteException; import javax.ejb.*; public class KontoBean implements SessionBean { // Globale Variablen private SessionContext context = null; private double kontostand; public void ejbCreate() { // Hier wird der Anfangskontostand (0) gesetzt. kontostand = 0; } public void ejbRemove() { System.out.println ("Bean entfernt."); } public void getSessionContext (SessionContext c) { // Session-Kontext vom Container entgegennehmen // und speichern context = c; } public void ejbActivate() { System.out.println ("Bean aktiviert."); } public void ejbPassivate() { System.out.println ("Bean passiviert."); } // Geschäftsmethoden public double abheben (double betrag)throws RemoteException { if (kontostand < betrag) return 0; kontostand -= betrag; return betrag; } public void einzahlen (double betrag)throws RemoteException { kontostand += betrag; } public double getKontostand()throws RemoteException { return kontostand; } public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException { this.context=arg0; } }
I don't know what's wrong with my code. Please help me to deploy this stuff.
Regards,
PeaceMaker88