The following worked for me. Comments and corrections are welcome. I assume that you have previously deployed the Advice application using the Reference Implementation (RI) of J2EE, and you have obtained a jar file AdviceAppClient.jar for the client application's use. Why? Because we are going to cheat a little to get hold of the ejb-jar.xml file which is the AdviceBean's deployment descriptor. I also assume that you have installed JBoss. I'm using 3.2.3 on Windows XP. I'm also assuming you have an environment variable JBOSS_HOME correctly set up.
Let's take a look at the directory structure:
Add a lib directory to this to get:
Into the lib directory copy jboss-j2ee.jar and jbossall-client.jar. These two jars are to be found in %JBOSS_HOME%\client. jboss-j2ee.jar is JBoss's version of j2ee.jar and jbossall-client.jar contains classes required by the client.
Copy the previously generated (by the RI deploytool) AdviceAppClient.jar file into HFEJBCODE\advice\classes and extract the file ejb-jar-ic.jar which contains the Advice bean:
Now extract the Advice Bean's ejb-jar.xml deployment description from ejb-jar-ic.jar:
Delete the two jars to destroy all evidence of cheating:
Hi Barry, This is good and nice tutorial for simple session bean but as for Entity bean,also have to include standardjbosscmp-jdbc.xml and also the driver jar file in order to access the database. I'm using currently jboss 3.2.1 and jnet.jar is in my classpath but if i set only jboss-j2ee.jar,my client won't interact with the bean on the server.Hence I set couple of more jar file in my classpath. and now it's working fine. There is one more thing regarding Jboss, right now I deployed my entity bean class and it is working fine with the database but that entity bean is CMP and it's not abstract class.So that is the violation of the EJB spec but it is working fine. I also wrote abstract class for entity bean and I'm deploying it but it's throwing exception and warning during deployment such as
-3.2.1_tomcat-4.1.24/server/default/deploy/customer.jar 22:04:29,897 WARN [verifier] EJB spec violation: Bean : CustomerBeanCMP Section: 9.2.2 Warning: The entity bean class must not be defined as abstract. 22:04:29,907 WARN [verifier] EJB spec violation: Bean : CustomerBeanCMP Section: 18.104.22.168 Warning: The primkey-field element must name a public field in the bean implemen tation class. 22:04:29,907 ERROR [MainDeployer] could not create deployment: file:/C:/jboss-3. 2.1_tomcat-4.1.24/server/default/deploy/customer.jar org.jboss.deployment.DeploymentException: Verification of Enterprise Beans faile d, see above for error messages. at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:487) ..........so on
please put some shed on it if you know. Regards,
Nauman Khan <br />SCJP,MCSE,SCWCD,SCBCD,SCWCD1.4
posted 16 years ago
Nauman, the point of the exercise is to get the first simple stateless session AdviceBean deployed on JBoss. As you said entity beans have to be deployed differently.
Hello, Okay, I have tried this one out, however, I have found several errors: 1) In jboss.xml, under <enterprise-beans>, there is <entity>, however, it should be <session> 2) When you run the client: instead of using jboss-all.jar, use jbossall-client.jar Overall, this is a great tutorial!!! I like it a lot. Thanks for concurring my request!!! Thanks again, John
=====================================<br />John Liang<br />SCJP2 1.4, SCWCD, SCBCD<br />Working on: WebLogic Architect, IBM Certified Enterprise Developer and Sun Certified Enterprise Architect