Hello,

I am new to the whole world of Java, JEE, EJB, XML, JBoss. I am trying to code 
up the simple example that is provided in Chapter 4 of the book Enterprise 
JavaBeans 3.0. I am having a few problems. I hope to get some pointers here.

The project has 4 files:
a) An entity bean: User
b) A stateless session bean: UserRegistrationSessionBean
c) A remote interface: UserRegistrationRemote
d) A client file that creates and then looks up a user. 

--------------------------------------------------------------------------

First my setup:
Java: jdk1.6.0_12
JBoss: jboss-5.0.0-GA
Ant: apache-ant-1.7.1
OS: Windows XP
All my java files, build files are in the same directory. 

--------------------------------------------------------------------------

Second, the problem.
When I use the build.xml file, the compiler complains: 

  | jo\ejb\build.xml:21: The element type "path" must be terminated by the 
matching end-tag "<//path>".
  | 
  | 
  | The corresponding XML code snippet in build.xml (copied from book) is:
  | 
  |   |         <path id="classpath">
  |   |              <fileset dir="${basedir}"/>
  |   |                     <include name="*.jar"/>
  |   |                 </fileset>
  |   |             <pathelement location="${build.classes.dir}"/>
  |   |             <pathelement location="${basedir}/client-config"/>
  |   |         </path>
  |   | 
  | 
  | Now, when I change the above to:
  | 
  |   |         <path id="classpath">
  |   |             <pathelement location="${basedir}"/>  <=== Changed this
  |   |             <pathelement location="${build.classes.dir}"/>
  |   |             <pathelement location="${basedir}/client-config"/>
  |   |         </path>
  |   | 
  | The build proceeds but I get the following compiler errors. 
  | 
  |   | C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.0.GA\apps\mo
  |   | jo\ejb>ant
  |   | Buildfile: build.xml
  |   | 
  |   | prepare:
  |   |     [mkdir] Created dir: C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jd
  |   | k6\jboss-5.0.0.GA\apps\mojo\ejb\build
  |   |     [mkdir] Created dir: C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jd
  |   | k6\jboss-5.0.0.GA\apps\mojo\ejb\build\classes
  |   | 
  |   | compile:
  |   |     [javac] Compiling 4 source files to C:\Documents and 
Settings\Dan\Desktop\jb
  |   | oss-5.0.0.GA-jdk6\jboss-5.0.0.GA\apps\mojo\ejb\build\classes
  |   |     [javac] C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.
  |   | 0.GA\apps\mojo\ejb\UserRegistrationRemote.java:5: '.' expected
  |   |     [javac] import User;
  |   |     [javac]            ^
  |   |     [javac] C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.
  |   | 0.GA\apps\mojo\ejb\UserRegistrationRemote.java:5: ';' expected
  |   |     [javac] import User;
  |   |     [javac]             ^
  |   |     [javac] C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.
  |   | 0.GA\apps\mojo\ejb\UserRegistrationRemote.java:7: class, interface, or 
enum expe
  |   | cted
  |   |     [javac] @Remote
  |   |     [javac]  ^
  |   |     [javac] C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.
  |   | 0.GA\apps\mojo\ejb\UserRegistrationSessionBean.java:8: '.' expected
  |   |     [javac] import Cabin;
  |   |     [javac]             ^
  |   |     [javac] C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.
  |   | 0.GA\apps\mojo\ejb\UserRegistrationSessionBean.java:8: ';' expected
  |   |     [javac] import Cabin;
  |   |     [javac]              ^
  |   |     [javac] C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.
  |   | 0.GA\apps\mojo\ejb\UserRegistrationSessionBean.java:10: class, 
interface, or enu
  |   | m expected
  |   |     [javac] @Stateless
  |   |     [javac]  ^
  |   |     [javac] C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.
  |   | 0.GA\apps\mojo\ejb\client.java:1: '.' expected
  |   |     [javac] import UserRegistrationRemote;
  |   |     [javac]                              ^
  |   |     [javac] C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.
  |   | 0.GA\apps\mojo\ejb\client.java:1: ';' expected
  |   |     [javac] import UserRegistrationRemote;
  |   |     [javac]                               ^
  |   |     [javac] C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.
  |   | 0.GA\apps\mojo\ejb\client.java:2: class, interface, or enum expected
  |   |     [javac] import User;
  |   |     [javac]        ^
  |   |     [javac] 9 errors
  |   | 
  |   | BUILD FAILED
  |   | C:\Documents and 
Settings\Dan\Desktop\jboss-5.0.0.GA-jdk6\jboss-5.0.0.GA\apps\mo
  |   | jo\ejb\build.xml:38: Compile failed; see the compiler error output for 
details.
  |   |  
  | --------------------------------------------------------------------------
  | 
  | Finally the code:
  | 
  | There are 5 files:
  | 
  | 1) User.java:
  | 
  |   | import javax.persistence.*;
  |   | @Entity
  |   | @Table(name="USER")
  |   | 
  |   | public class User implements java.io.Serializable {
  |   |         private String id;
  |   |         private String email;
  |   |         private String password;
  |   |         private String affiliation;
  |   | 
  |   |         @Id
  |   |         @Column(name="EMAIL")
  |   |         public String getEmail() { return email; }
  |   |         public void setEmail(String new_email) { email = new_email; }
  |   | 
  |   |         @Column(name="ID")
  |   |         public String getId() { return id; }
  |   |         public void setId(String new_id) { id = new_id; }
  |   | 
  |   |         @Column(name="PASSWORD")
  |   |         public String getPassword() { return password; }
  |   |         public void setPassword(String new_password) { password = 
new_password; }
  |   | 
  |   |         @Column(name="AFFILIATION")
  |   |         public String getAffiliation() { return affiliation; }
  |   |         public void setAffiliation(String new_affiliation) { 
affiliation = new_affiliation; }
  |   | 
  |   | }
  |   | 
  | --------------------------------------------------------------------------
  | 
  | 2) UserRegistrationRemote.java
  | 
  |   | import javax.ejb.Remote;
  |   | import User;
  |   | 
  |   | @Remote
  |   | public interface UserRegistrationRemote {
  |   |         public void registerUser(User user);
  |   |         public User findUser(String email);
  |   | }
  |   | 
  | --------------------------------------------------------------------------
  | 
  | 3) UserRegistrationSessionBean.java
  | 
  |   | import javax.ejb.Stateless;
  |   | import javax.persistence.EntityManager;
  |   | 
  |   | import javax.persistence.PersistenceContext;
  |   | import User;
  |   | 
  |   | @Stateless
  |   | public class UserRegistrationSessionBean implements 
UserRegistrationRemote {
  |   |         @PersistenceContext
  |   | (unitName="user")
  |   | private EntityManager manager;
  |   | 
  |   |         public void registerUser(User user) {
  |   |                 manager.persist(user);
  |   |         }
  |   | 
  |   |         public User findUser(String email) {
  |   |                 return manager.find(User.class, email);
  |   |         }
  |   | }
  |   | 
  | --------------------------------------------------------------------------
  | 
  | 4) client.java
  | 
  |   | import UserRegistrationRemote;
  |   | import User;
  |   | 
  |   | import javax.naming.IntialContext;
  |   | import javax.naming.Context;
  |   | import javax.naming.NamingException;
  |   | 
  |   | import javax.rmi.PortableRemoteObject;
  |   | 
  |   | public class Client {
  |   |         public static void main (String[] args) {
  |   |                 try {
  |   |                         Context jndiContext = getInitialContext();
  |   |                         Object ref = 
jndiContext.lookup("UserRegistrationSessionBean/remote");
  |   |                         UserRegistrationRemote dao = 
(UserRegistrationRemote)PortableRemoteObject.narrow(ref, 
UserRegistrationRemote.class);
  |   | 
  |   |                         User usr = new User();
  |   |                         usr.setEmail("wo...@peace.com");
  |   |                         usr.setId("us");
  |   |                         usr.setPassword("test");
  |   |                         usr.setAffiliation("world");
  |   | 
  |   |                         dao.registerUser(usr);
  |   | 
  |   |                         User res_usr = dao.findUser("wo...@peace.com");
  |   |                         System.out.println("Email: " + 
res_usr.getEmail());
  |   |                         System.out.println("Id: " + res_usr.getId());
  |   |                         System.out.println("Password: " + 
res_user.getPassword());
  |   |                         System.out.println("Affiliation: " + 
res_usr.getAffiliation());
  |   |                 }
  |   |                 catch (javax.naming.NamingException ne) {
  |   |                         ne.printStackTrace();
  |   |                 }
  |   |         }
  |   | 
  |   |         public static Context getInitialContext() throws 
javax.naming.NamingException {
  |   |                 return new javax.naming.InitialContext();
  |   |         }
  |   | }
  |   | 
  | --------------------------------------------------------------------------
  | 
  | 5) build.xml
  | 
  |   | <?xml version="1.0"?>
  |   |     
  |   |     <!-- Build file for first project for of JBoss -->
  |   |     <project name="EJB Build for Mojo" default="ejbjar" basedir=".">
  |   |         
  |   |         <!-- Standard Properties -->
  |   |         <property environment="env"/>
  |   |         <property name="src.dir" value="${basedir}"/>
  |   |         <property name="lib.dir" value="${basedir}/lib"/>
  |   |         <property name="jboss.dir" value="${env.JBOSS_HOME}"/>
  |   |         <property name="jboss.deploy.dir" 
value="${jboss.dir}/server/default/deploy"/>
  |   |         <property name="build.dir" value="${basedir}/build"/>
  |   |         <property name="build.classes.dir" 
value="${build.dir}/classes"/>    
  |   | 
  |   |         
  |   |         
  |   |         <!-- Next, specify where the client app is. client-config which 
has JNDI properties -->
  |   |   <path id="classpath">
  |   |     <pathelement location="${basedir}"/>
  |   |     <pathelement location="${build.classes.dir}"/>
  |   |     <pathelement location="${basedir}/client-config"/>
  |   |   </path>       
  |   |         
  |   |         <!-- Create directories to place compiled files -->
  |   |         <property name="build.classpath" refid="classpath"/>    
  |   |         <target name="prepare" >
  |   |           <mkdir dir="${build.dir}"/>
  |   |           <mkdir dir="${build.classes.dir}"/>
  |   |         </target>
  |   |         
  |   |         
  |   |         <!-- Now compile -->
  |   |         <target name="compile" depends="prepare">
  |   |             <javac srcdir="${src.dir}"
  |   |                    destdir="${build.classes.dir}"
  |   |                    debug="on"
  |   |                    deprecation="on"
  |   |                    optimize="off"
  |   |                    includes="**">
  |   |                     <classpath refid="classpath"/>
  |   |             </javac>
  |   |         </target>
  |   |         
  |   |         
  |   |         <!-- Create EJB-JAR and place it in deploy directory of JBoss 
server -->
  |   |         <target name="ejbjar" depends="compile">
  |   |           <jar jarfile="build/mojo.jar">
  |   |             <fileset dir="${build.classes.dir}">
  |   |                   <include name="*.class"/>
  |   |                   <include name="*.class"/>
  |   |             </fileset>
  |   |             <fileset dir="${src.resources}/">
  |   |                 <include name="**/*.xml"/>
  |   |             </fileset>
  |   |            </jar>
  |   |            <copy file="build/mojo.jar "
  |   |                  todir="${jboss.home}/server/default/deploy"/>
  |   |         </target>
  |   |         
  |   |         
  |   |         <!-- Now run the client -->
  |   |         <target name="run.client" depends="ejbjar">
  |   |           <java classname="Client" fork="yes" dir=".">
  |   |             <classpath refid="classpath"/>
  |   |           </java>
  |   |         </target>
  |   |         
  |   |         <!-- Clean the database - only when JBoss is not running -->
  |   |         <target name="clean.db">
  |   |           <delete dir="${jboss.home}/server/default/db/hypersonic"/>
  |   |         </target>
  |   |         
  |   |         <!-- Clean up and undeploy -->
  |   |         <target name="clean">
  |   |           <delete dir="${build.dir}"/>
  |   |           <delete file="${jboss.home}/server/default/deploy/mojo.jar"/>
  |   |         </target>
  |   |     
  |   |     </project>
  |   | 
  |   | 
  | --------------------------------------------------------------------------
  | 

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4216701#4216701

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4216701
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to