File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Websphere and the fly likes help me! stateful session bean problem Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of EJB 3 in Action this week in the EJB and other Java EE Technologies forum!
JavaRanch » Java Forums » Products » Websphere
Bookmark "help me! stateful session bean problem" Watch "help me! stateful session bean problem" New topic
Author

help me! stateful session bean problem

Tiger Liu
Greenhorn

Joined: Nov 19, 2002
Posts: 5
The following is the code of Bean class:
package hello;
import java.sql.*;
import java.util.*;
import javax.ejb.*;
import javax.naming.*;
import javax.sql.*;
/**
*
Title:

*
Description:

*
Copyright: Copyright (c) 2002

*
Company:

* @author unascribed
* @version 1.0
*/
public class StateSession1Bean implements SessionBean {
private Connection con;
private String dbName = "java:comp/env/jdbc/MyOracle";
private SessionContext sessionContext;

public void addrecord(String id, String firstname, String lastname) {
try {
insertEntry(id, firstname, lastname);
} catch (Exception ex) {
throw new EJBException("add record: " +
ex.getMessage());
}
}
public void selectRecord(String id) {
try {
selectEntry(id) ;
}catch(Exception ex) {
throw new EJBException("add record: " +
ex.getMessage());
}
}
public void ejbCreate() {
System.out.println("ejb create load ...") ;
try {
makeConnection();
} catch (Exception ex) {
throw new EJBException("Unable to connect to database. " +
ex.getMessage());
}
}
public void ejbRemove() {
System.out.println("ejb remove load ...") ;
try {
con.close();
System.out.println("connection is closed ...") ;
} catch (SQLException ex) {
throw new EJBException("ejbRemove: " + ex.getMessage());
}
}
public void ejbActivate() {
System.out.println("ejb activate load ...") ;
try {
makeConnection();
} catch (Exception ex) {
throw new EJBException("ejbActivate Exception: " + ex.getMessage());
}
}
public void ejbPassivate() {
System.out.println("ejb passivate load ...") ;
try {
con.close();
System.out.println("connection is closed ...") ;
} catch (SQLException ex) {
throw new EJBException("ejbPassivate Exception: " + ex.getMessage());
}
}
public void setSessionContext(SessionContext sessionContext) {
System.out.println("set session context load ...") ;
this.sessionContext = sessionContext;
}
/*********************** Database Routines *************************/
private void makeConnection() throws NamingException, SQLException {
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup(dbName);
con = ds.getConnection();
System.out.println("connection is opened ...") ;
// testConnection() ;
}
private void testConnection() {
try{
String deleteStatement =
"select id, firstname, lastname from tbltest";
PreparedStatement prepStmt =
con.prepareStatement(deleteStatement);
ResultSet rs = prepStmt.executeQuery();
System.out.println("sql execute : " + deleteStatement) ;
while (rs.next()) {
System.out.println("the record is : " + rs.getString(1) + "-" + rs.getString(2) + "-" + rs.getString(3));
}
}catch(SQLException ex){
System.out.println("sql test exception " + ex.getMessage() ) ;
}
}
private void insertEntry(String id, String first, String last)
throws SQLException{
String insertStatement =
"insert into tbltest values ( ? , ? , ? )";
PreparedStatement prepStmt =
con.prepareStatement(insertStatement);
prepStmt.setString(1, id) ;
prepStmt.setString(2, first) ;
prepStmt.setString(3, last) ;
prepStmt.executeUpdate();
prepStmt.close();
}
private void selectEntry(String id)
throws SQLException{
String deleteStatement =
"select id, firstname, lastname from tbltest where id = ?";
PreparedStatement prepStmt =
con.prepareStatement(deleteStatement);
prepStmt.setString(1, id) ;
ResultSet rs = prepStmt.executeQuery();
System.out.println("sql execute : " + deleteStatement) ;
while (rs.next()) {
System.out.println("the record is : " + rs.getString(1) + "-" + rs.getString(2) + "-" + rs.getString(3));
}
}
}
====================================================================================================

When I invoke the business method in client, the error message is :
-- Initializing bean access.
-- Succeeded initializing bean access.
-- Execution time: 3524 ms.
-- Calling create()
-- Succeeded: create()
-- Execution time: 2163 ms.
-- Return value from create(): IOR:0000000000000029524d493a68656c6c6f2e537461746553657373696f6e313a3030 ...
-- Calling addrecord(01, 23232, 22332)
java.rmi.ServerException: ; nested exception is:
com.ibm.ejs.container.UncheckedException: ; nested exception is:
javax.ejb.EJBException: add record: Connection is closed
com.ibm.ejs.container.UncheckedException: ; nested exception is:
javax.ejb.EJBException: add record: Connection is closed
javax.ejb.EJBException: add record: Connection is closed
-- Failed: addrecord(01, 23232, 22332)
====================================================================================================
The error message from server :
[02.11.22 14:23:13:713 CST] 4f712513 SystemOut U set session context load ...
[02.11.22 14:23:13:933 CST] 4f712513 SystemOut U ejb create load ...
[02.11.22 14:23:16:036 CST] 4f712513 SystemOut U connection is opened ...
[02.11.22 14:23:16:166 CST] 4f712513 ExceptionUtil X CNTR0020E:在 bean BeanId(HelloWorld.jar#HelloWorld.jar#StateSession1, f1aa65e834) 上处理方法 selectRecord 时发生非应用程序异常:javax.ejb.EJBException: add record: Connection is closed
at hello.StateSession1Bean.selectRecord(StateSession1Bean.java:39)
at hello.EJSRemoteStatefulStateSession1.selectRecord(EJSRemoteStatefulStateSession1.java:49)
at hello._EJSRemoteStatefulStateSession1_Tie._invoke(_EJSRemoteStatefulStateSession1_Tie.java:137)
at com.ibm.CORBA.iiop.ExtendedServerDelegate.dispatch(ExtendedServerDelegate.java:506)
at com.ibm.CORBA.iiop.ORB.process(ORB.java:2294)
at com.ibm.CORBA.iiop.OrbWorker.run(OrbWorker.java:185)
at com.ibm.ejs.oa.pool.ThreadPool$PooledWorker.run(ThreadPool.java:95)
at com.ibm.ws.util.CachedThread.run(ThreadPool.java:122)

====================================================================================================

The following is the DD which is built by Jbuilder:
<?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 1.1//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_1.dtd">
<ejb-jar id="ejb-jar_ID">
<enterprise-beans>
<session id="Session_1">
<ejb-name>StateSession1</ejb-name>
<home>hello.StateSession1Home</home>
<remote>hello.StateSession1</remote>
<ejb-class>hello.StateSession1Bean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Container</transaction-type>
<resource-ref id="ResourceRef_1_1">
<description />
<res-ref-name>jdbc/MyOracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Application</res-auth>
</resource-ref>
</session>
</enterprise-beans>
<assembly-descriptor>
<container-transaction id="MethodTransaction_1">
<method>
<ejb-name>StateSession1</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
</assembly-descriptor>
</ejb-jar>
====================================================================================================
I found that before the server invokes the addrecord, it doesn't invoke the ejbActivate mothod, but the connect is colsed, why?
Tiger Liu
Greenhorn

Joined: Nov 19, 2002
Posts: 5
Because I use Jbuider+WebsphereAES4.0 integration, the Websphere4.0 only supports the J2EE1.2(EJB1.1), but I program the stateful Bean through J2EE1.3 tutorial, perhaps this is the problem I think, please give me some advice, thank u very much!
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: help me! stateful session bean problem
 
Similar Threads
EJB problem
bmp is throwing exception in weblogic 8.1
help me for stateful session bean please!
EJB unable to find my Home interface
jboss - mysql Table not found in statement