EJB3 Client, exception: java.lang.NoSuchFieldError
mrducnguyen Jan 15, 2008 8:01 PMI'm trying to use EBJ3 to manage a table in my database, when I ran my test client, I always received this:
Exception in thread "main" java.lang.NoSuchFieldError: TRACE at org.jboss.logging.Log4jLoggerPlugin.isTraceEnabled(Log4jLoggerPlugin.java:85) at org.jboss.logging.Logger.isTraceEnabled(Logger.java:122) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:660) at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627) at javax.naming.InitialContext.lookup(InitialContext.java:392) at TestEJBClient.main(TestEJBClient.java:31)
Although I have created two properties files and referenced all the jar in the JBOSS_HOME/client directory... I'm stuck
Anyone please help! I need to do this urgently.
Below is all the code:
// Table ADMIN: // Username nvarchar(20) PK // Password nvarchar(20) **** Entity bean: Admin **** @Entity @Table(name = "Admin", schema = "dbo", catalog = "TungaRestaurant", uniqueConstraints = {}) public class Admin implements java.io.Serializable { private String username; private String password; public Admin(String username, String password) { this.username = username; this.password = password; } @Id @Column(name = "Username", unique = true, nullable = false, insertable = true, updatable = true, length = 20) public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } @Column(name = "Password", unique = false, nullable = false, insertable = true, updatable = true, length = 20) public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } } *** Session Bean to manage Admin Entity: AdminBean *** @Stateless public class AdminBean implements Serializable, AdminMan, AdminBeanLocal, AdminBeanRemote { @PersistenceContext EntityManager em; public int delete(Admin admin) { return delete (admin.getUsername()); } public int delete(String usr) { int retVal = 0; Admin admin = em.find(Admin.class, usr); try { em.remove(admin); } catch (Exception ex) { retVal = -1; } return retVal; } public Admin findAdmin(String usr) { return em.find(Admin.class, usr); } public int save(Admin admin) { int retVal = 0; try { Admin dbadmin = em.find(Admin.class, admin.getUsername()); if (dbadmin == null) em.persist(admin); else { dbadmin.setPassword(admin.getPassword()); em.flush(); } } catch (Exception ex) { retVal = -1; } return retVal; } } *** Interface AdminMan **** public interface AdminMan { /* * Return an the Admin with username * @param String username * @return a tunga.ejb.Admins object */ public Admin findAdmin(String usr); /* * Save the Admin's information to database, if the Admin is existed, the info * will be update, if not, a new Admin will be inserted to database. * @param tunga.ejb.Admin the Admin object that holds information * @return 0 if ok, <0 if not */ public int save(Admin admin); /* * Delete the Admin from the database * @param tunga.ejb.Admin the Admin object that holds information * @return 0 if ok, <0 if not */ public int delete(Admin admin); /* * Delete the Admin from the database * @param int the Admin's username * @return 0 if ok, <0 if not */ public int delete(String usr); } ********************************* The Client: **** File: jndi.properties **** java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=localhost:1099 ***** File: log4j.properties ***** log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=debug, stdout **** Class test Client public class TestEJBClient { public static void main(String[] args) { Context context; try { context = new InitialContext(); AdminMan adminMan = (AdminMan)context.lookup("AdminBean"); Admin admin = new Admin("admin","123"); adminMan.save(admin); } catch (NamingException e) { e.printStackTrace(); } } }