Packaging and deploying the bean
Creation of the EJB jar package involves building a JAR archive containing
the EJB classes and deployment descriptors. To build the EJB jar for the
Interest example simply cd to the examples/build directory of the documentation examples
source tree and execute the following ant command:
bash-2.04$ ant intro-interest-jar
Buildfile: build.xml
validate:
fail_if_not_valid:
init:
[echo] Using JBoss directory=/tmp/JBoss-2.2.2
[echo] Using classpath=/tmp/JBoss-2.2.2/client/ejb.jar:/tmp/JBoss-2.2.2/client/jaas.jar:/tmp/JBoss-2.2.2/client/jbosssx-client.jar:/tmp/JBoss-2.2.2/client/jboss-client.jar:/tmp/JBoss-2.2.2/client/jnp-client.jar:/tmp/tomcat/lib/servlet.jar:/tmp/examples/${build.classes.dir}
[echo] Using Source directory=/tmp/examples
[echo] Using Build directory=/tmp/examples/build-examples
intro-interest-jar:
compile:
[javac] Compiling 4 source files to /tmp/examples/build-examples/interest/classes
ejb-jar:
[mkdir] Created dir: /tmp/examples/build-examples/interest/META-INF
[copy] Copying 1 file to /tmp/examples/build-examples/interest/META-INF
[copy] Copying 1 file to /tmp/examples/build-examples/interest/META-INF
[jar] Building jar: /tmp/examples/build-examples/interest/interest.jar
BUILD SUCCESSFUL
Total time: 2 seconds
This has compiled the EJB classes and created the ejb-jar for deployment.
If got a java.lang.NoClassDefFoundError here instead of a successful created jar file try clearing your classpath.
The contents of the
interest.jar include the structure we discussed previously as shown by running the jar -tvf
command:
bash-2.04$ jar -tvf /tmp/examples/build-examples/interest/interest.jar
0 Sun Jun 24 22:55:52 PDT 2001 META-INF/
46 Sun Jun 24 22:55:52 PDT 2001 META-INF/MANIFEST.MF
0 Sun Jun 24 22:55:52 PDT 2001 org/
0 Sun Jun 24 22:55:52 PDT 2001 org/jboss/
0 Sun Jun 24 22:55:52 PDT 2001 org/jboss/docs/
0 Sun Jun 24 22:55:52 PDT 2001 org/jboss/docs/interest/
246 Sun Jun 24 22:55:52 PDT 2001 org/jboss/docs/interest/Interest.class
1177 Sun Jun 24 22:55:52 PDT 2001 org/jboss/docs/interest/InterestBean.class
296 Sun Jun 24 22:55:52 PDT 2001 org/jboss/docs/interest/InterestHome.class
599 Sun Jun 24 22:55:52 PDT 2001 META-INF/ejb-jar.xml
220 Sun Jun 24 22:55:52 PDT 2001 META-INF/jboss.xml
To deploy the Bean on the server, all that's necessary is to copy the
interest.jar file to the JBOSS_DIST/deploy directory of your JBoss installation.
You can do this as often as you like. The server will detect that the
file has changed and automatically re-deploy it. With the JBoss server running, deploy
the jar by running ant intro-interest-deploy from the examples/build
directory. During deployment you should see messages similar to the following on the server console:
[Auto deploy] Auto deploy of file:/tmp/JBoss-2.2.2/deploy/interest.jar
[J2EE Deployer Default] Deploy J2EE application: file:/tmp/JBoss-2.2.2/deploy/interest.jar
[J2EE Deployer Default] Create application interest.jar
[J2EE Deployer Default] install module interest.jar
[Container factory] Deploying:file:/tmp/JBoss-2.2.2/tmp/deploy/Default/interest.jar
[Verifier] Verifying file:/tmp/JBoss-2.2.2/tmp/deploy/Default/interest.jar/ejb1001.jar
[Container factory] Deploying Interest
[Container factory] Deployed application: file:/tmp/JBoss-2.2.2/tmp/deploy/Default/interest.jar
[J2EE Deployer Default] J2EE application: file:/tmp/JBoss-2.2.2/deploy/interest.jar is deployed.
If you see a message like this:
[Auto deploy] Auto deploy of file:/tmp/JBoss-2.2.2/deploy/interest.jar
[J2EE Deployer Default] Deploy J2EE application: file:/tmp/JBoss-2.2.2/deploy/interest.jar
...
[Auto deploy] Deployment failed:file:/tmp/JBoss-2.2.2/deploy/interest.jar
then no EJBs have been deployed -- the server always reports the EJBs
that it detects. This usually means that the deployment descriptor ejb-jar.xml
is badly structured, or missing, or in the wrong directory.
You should now have the Interest EJB deployed on the server. We will now go over a
simple test client that runs one of its methods, just to verify that it's working.