[jboss-user] [Beginners Corner] - A true newbie -- Please help!
rij
do-not-reply at jboss.com
Tue Mar 10 14:41:33 EDT 2009
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("world at peace.com");
| | usr.setId("us");
| | usr.setPassword("test");
| | usr.setAffiliation("world");
| |
| | dao.registerUser(usr);
| |
| | User res_usr = dao.findUser("world at 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
More information about the jboss-user
mailing list