|
simple Entity create() fails: msg#00045java.geronimo.user
Hello, I have a very simple Entity bean which runs fine on openejb 0.9.2 but fails on geronimo (co lately.) (Code -- very simple -- at the end of this mail). I made it BMP (removing all database-related stuff) to simplify things and try to isolate the problem. ---This is the ejb-jar, very simple: <?xml version="1.0"?> <ejb-jar xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd" version="2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee"> <description>sample Application</description> <display-name>EJB</display-name> <enterprise-beans> <entity> <ejb-name>Employee</ejb-name> <home>acm.EmployeeHome</home> <remote>acm.Employee</remote> <ejb-class>acm.EmployeeBean</ejb-class> <persistence-type>Bean</persistence-type> <prim-key-class>java.lang.Integer</prim-key-class> <reentrant>false</reentrant> </entity> </enterprise-beans> </ejb-jar> --- and the openejb-jar.xml (not needed I think) : <?xml version="1.0"?> <openejb-jar xmlns="http://www.openejb.org/xml/ns/openejb-jar" configId="org/openejb/itests" parentId="org/apache/geronimo/Server" xmlns:naming="http://geronimo.apache.org/xml/ns/naming" <enterprise-beans> <entity> <ejb-name>Employee</ejb-name> <jndi-name>Employee</jndi-name> </entity> </enterprise-beans> </openejb-jar> The bean is called by a servlet in its doPost() (the bean is declared in web-xml and geronimo-web.xm) : ... try { Object ref3 = jndiContext.lookup("java:comp/env/ejb/Employee"); eh= (EmployeeHome) PortableRemoteObject.narrow(ref3, EmployeeHome.class); } catch(Exception e) { throw new ServletException("Failed to lookup employee", e); } Employee employee = null; try { employee = eh.create("jack", "a", "ja@xxxxx"); } catch (Exception e) { throw new ServletException("create() failed", e); } // <-- THROWN !!! if (employee != null) out.println("first name is: " + employee.getFirstname() + "<br>"); //employee.remove(); } ... The Home is found but it cannot create() the remote interface, as the marked exception is thrown and following stack produced: 10:16:10,380 WARN [SystemExceptionInterceptor] Employee java.lang.NullPointerException at org.apache.geronimo.transaction.DoubleKeyedHashMap$Key.hashCode(DoubleKeyedHashMap.java:66) at java.util.HashMap.hash(HashMap.java:261) at java.util.HashMap.put(HashMap.java:379) at org.apache.geronimo.transaction.DoubleKeyedHashMap.put(DoubleKeyedHashMap.java:33) at org.apache.geronimo.transaction.context.AbstractTransactionContext.associate(AbstractTransactionContext.java:46) at org.openejb.entity.bmp.BMPCreateMethod.execute(BMPCreateMethod.java:138) at org.openejb.dispatch.DispatchInterceptor.invoke(DispatchInterceptor.java:72) at org.apache.geronimo.naming.java.ComponentContextInterceptor.invoke(ComponentContextInterceptor.java:56) at org.openejb.ConnectionTrackingInterceptor.invoke(ConnectionTrackingInterceptor.java:81) at org.openejb.entity.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:136) at org.openejb.transaction.ContainerPolicy$TxRequired.invoke(ContainerPolicy.java:140) at org.openejb.transaction.TransactionContextInterceptor.invoke(TransactionContextInterceptor.java:80) at org.openejb.SystemExceptionInterceptor.invoke(SystemExceptionInterceptor.java:82) at org.openejb.GenericEJBContainer.invoke(GenericEJBContainer.java:234) at org.openejb.proxy.EJBMethodInterceptor.intercept(EJBMethodInterceptor.java:129) at org.openejb.proxy.EntityEJBHome$$EnhancerByCGLIB$$e5e300df.create(<generated>) at org.jboss.docs.interest.InterestServlet.doPost(InterestServlet.java:132) at javax.servlet.http.HttpServlet.service(HttpServlet.java:615) at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427) at org.apache.geronimo.jetty.JettyServletHolder.handle(JettyServletHolder.java:92) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:832) at org.mortbay.jetty.servlet.JSR154Filter.doFilter(JSR154Filter.java:171) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:823) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567) at org.mortbay.http.HttpContext.handle(HttpContext.java:1565) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:623) at org.mortbay.http.HttpContext.handle(HttpContext.java:1517) at org.mortbay.http.HttpServer.service(HttpServer.java:954) at org.mortbay.http.HttpConnection.service(HttpConnection.java:814) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) javax.servlet.ServletException: create() failed at org.jboss.docs.interest.InterestServlet.doPost(InterestServlet.java:133) at javax.servlet.http.HttpServlet.service(HttpServlet.java:615) at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:427) at org.apache.geronimo.jetty.JettyServletHolder.handle(JettyServletHolder.java:92) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:832) at org.mortbay.jetty.servlet.JSR154Filter.doFilter(JSR154Filter.java:171) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:823) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567) at org.mortbay.http.HttpContext.handle(HttpContext.java:1565) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:623) at org.mortbay.http.HttpContext.handle(HttpContext.java:1517) at org.mortbay.http.HttpServer.service(HttpServer.java:954) at org.mortbay.http.HttpConnection.service(HttpConnection.java:814) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:981) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:831) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:244) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) I tried to make all this so simple as possible but cannot have it running. Any idea? Sam --------------------------------- code (very simple example from somewhere) : ---remote:--- package acm; import javax.ejb.EJBObject; import java.rmi.RemoteException; public interface Employee extends EJBObject { public void says( String message ) throws RemoteException; public void setAge(int age) throws RemoteException; public String getFirstname() throws RemoteException; public void add(int i) throws RemoteException; public int getTotal() throws RemoteException; } ---bean:--- package acm; import javax.ejb.*; import java.rmi.RemoteException; public class EmployeeBean implements EntityBean { public int id; public String firstname; public String lastname; public String email; public int age; public int total; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getFirstname() { return firstname; } public void setFirstname(String a) { firstname = a; } public String getLastname() { return lastname; } public void setLastname(String a) { lastname = a; } public String getEmail() { return email; } public void setEmail(String a) { email = a; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getTotal() { return total; } public void setTotal(int i) { total = i; } public EntityContext context; public EmployeeBean() { } public Integer ejbCreate( String firstname, String lastname, String email ) throws CreateException { this.firstname = firstname; this.lastname = lastname; this.email = email; return null; } public void ejbPostCreate( String firstname, String lastname, String email ) throws CreateException { } public Integer ejbCreate( String firstname, String lastname, String email, int age ) throws CreateException { this.firstname = firstname; this.lastname = lastname; this.email = email; this.age = age; return null; } public void ejbPostCreate( String firstname, String lastname, String email, int age ) throws CreateException { } public void says( String message ) { System.out.println( "[" + firstname + " " + lastname + "(" + id + ") " + email + "] " + message ); } public void add(int i) { total += i; } public void setEntityContext( EntityContext context ) throws EJBException, RemoteException { this.context = context; } public void unsetEntityContext() throws EJBException, RemoteException { } public void ejbActivate() throws EJBException, RemoteException { } public void ejbLoad() throws EJBException, RemoteException { } public void ejbPassivate() throws EJBException, RemoteException { } public void ejbRemove() throws RemoveException, EJBException, RemoteException { } public void ejbStore() throws EJBException, RemoteException { } } ---home:--- package acm; import javax.ejb.CreateException; import javax.ejb.EJBHome; import javax.ejb.FinderException; import java.rmi.RemoteException; public interface EmployeeHome extends EJBHome { public Employee create( String firstname, String lastname, String email ) throws RemoteException, CreateException; public Employee create( String firstname, String lastname, String email, int age ) throws RemoteException, CreateException; public Employee findByPrimaryKey( Integer id ) throws RemoteException, FinderException; }
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: new comment for testing, Mario Guenterberg |
|---|---|
| Next by Date: | Re: simple Entity create() fails, Aaron Mulder |
| Previous by Thread: | new Article for testing, Asha |
| Next by Thread: | Re: simple Entity create() fails, Aaron Mulder |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |