When my client calls ejbRemove the following error occurs :
(serverside output)
ejbActivate() was called
ejbLoad() was called
ejbStore() was called
Unable to load person from db:java.sql.SQLException: java.lang.NullPointerExcept
ion
ejbActivate() was called
ejbLoad() was called
ejbStore() was called
Unable to load person from db:java.sql.SQLException: java.lang.NullPointerExcept
ion
ejbActivate() was called
ejbLoad() was called
ejbStore() was called
Unable to load person from db:java.sql.SQLException: java.lang.NullPointerExcept
ion
ejbActivate() was called
ejbLoad() was called
ejbRemove() was called
Unable to remove person with id 123
from db(connection +true):java.sql.SQLException: java.lang.NullPointerExcepti
on
java.sql.SQLException: Verletzung der PRIMARY KEY-Einschr�nkung 'PK_Person'. Ein
doppelter Schl�ssel kann in das persons-Objekt nicht eingef�gt werden. Severity
14, State 1, Procedure 'MAXWELL null', Line 1
at weblogic.jdbc.mssqlserver4.TdsStatement.processWarning(TdsStatement.j
ava:1229)
at weblogic.jdbc.mssqlserver4.TdsStatement.parseMsWarning(TdsStatement.j
ava:1140)
at weblogic.jdbc.mssqlserver4.TdsStatement.getMoreResults(TdsStatement.j
ava:798)
at weblogic.jdbc.mssqlserver4.TdsStatement.execute(TdsStatement.java:214
)
at weblogic.jdbc.mssqlserver4.TdsStatement.executeUpdate(TdsStatement.ja
va:97)
at weblogic.jdbc.mssqlserver4.TdsStatement.executeUpdate(TdsStatement.ja
va:1516)
at weblogic.jdbc.pool.Statement.executeUpdate(Statement.java:293)
at weblogic.jdbc.rmi.internal.PreparedStatementImpl.executeUpdate(Prepar
edStatementImpl.java:66)
at weblogic.jdbc.rmi.SerialPreparedStatement.executeUpdate(SerialPrepare
dStatement.java:57)
at PersonBMPBean.ejbCreate(PersonBMPBean.java:67)
at PersonBMPBean_9iber2_Impl.ejbCreate(PersonBMPBean_9iber2_Impl.java:17
7)
at java.lang.reflect.Method.invoke(Native Method)
at weblogic.ejb20.manager.DBManager.create(DBManager.java:519)
at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:489)
at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:190)
at PersonBMPBean_9iber2_HomeImpl.create(PersonBMPBean_9iber2_HomeImpl.ja
va:77)
at PersonBMPBean_9iber2_HomeImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:305)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerR
ef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.jav
a:274)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest
.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
**************************
(clientside output):
C:\stage\bmp>
java PersonClient
time for creating InitialContext in milli sec : 4367
time for JNDI lookup in milli sec : 290
Time for finding a single entry: 401
Time for finding a collection of entries: 20
3 entries found for Max
123
555
789
Time for deleting an entry: 40
Received an unexpected exception weblogic.ejb20.RuntimeCheckerException: Your BMP ejbCreate should not be returning null.
Start server side stack trace:
weblogic.ejb20.RuntimeCheckerException: Your BMP ejbCreate should not be returning null.
at weblogic.ejb20.manager.DBManager.create(DBManager.java:539)
at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:489)
at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:190)
at PersonBMPBean_9iber2_HomeImpl.create(PersonBMPBean_9iber2_HomeImpl.java:77)
at PersonBMPBean_9iber2_HomeImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:305)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:274)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
while using the PersonEJB.
Exception in
thread "main" weblogic.ejb20.RuntimeCheckerException: Your BMP ejbCreate should not be returning null.
Start server side stack trace:
weblogic.ejb20.RuntimeCheckerException: Your BMP ejbCreate should not be returning null.
at weblogic.ejb20.manager.DBManager.create(DBManager.java:539)
at weblogic.ejb20.manager.DBManager.remoteCreate(DBManager.java:489)
at weblogic.ejb20.internal.EntityEJBHome.create(EntityEJBHome.java:190)
at PersonBMPBean_9iber2_HomeImpl.create(PersonBMPBean_9iber2_HomeImpl.java:77)
at PersonBMPBean_9iber2_HomeImpl_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:305)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:93)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:274)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:22)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
End server side stack trace
****************************
The RunTimeChecker Exception seems to be a result of the failed ejbRemove(), since in my client I remove the bean and insert it in next statement.
Here it the ejbRemove() Method:
public void ejbRemove() {
System.out.println("ejbRemove() was called");
if(con==null) con=getConnection();
PreparedStatement ps = null;
try {
ps = con.prepareStatement(
"delete from persons where id = ?");
ps.setString(1, id);
if(ps.executeUpdate() != 1) {
System.out.println("Unable to del entity bean!");
}
}catch (SQLException e) {
System.out.println(
"Unable to remove person with id "+id+" from db(connection +"(con!=null)+"):"+e.toString());
}try {
con.close();
} catch(Exception e) {}
}
*************
I am sure that there is a trivial error in this method, but I fail to find it.
Oh, and the entity with key '123' does exist in the database named
test and in the table named persons.
This NullPointerException is strange, since id and con are not null. What can be null then ?