-
1. Re: Stateless Local Home wanting create() method with no arg
adrian.brock Dec 17, 2002 11:38 AM (in response to chriskb)Code snippet, deployment descriptors?
Or do we just take your assertion that you've done
it correctly?
Are you sure you have the correct class in the jar?
Regards,
Adrian -
2. Re: Stateless Local Home wanting create() method with no arg
chriskb Dec 17, 2002 3:00 PM (in response to chriskb)
Payment History Stateless Session Bean
<ejb-name>PaymentHistoryEJB</ejb-name>
<local-home>com.acs.epay.components.paymenthistory.LocalPaymentHistoryHome</local-home>
com.acs.epay.components.paymenthistory.LocalPaymentHistory
<ejb-class>com.acs.epay.components.paymenthistory.PaymentHistoryEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
local
package com.acs.epay.components.paymenthistory;
/**
* @author H0041755
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
import javax.ejb.EJBLocalObject;
import java.rmi.RemoteException;
public interface LocalPaymentHistory extends EJBLocalObject {
public java.util.Vector getPaymentHistory();
}
home
package com.acs.epay.components.paymenthistory;
/**
* @author H0041755
*
*/
import java.io.Serializable;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBLocalHome;
public interface LocalPaymentHistoryHome extends EJBLocalHome {
LocalPaymentHistory create() throws CreateException;
LocalPaymentHistory create(java.lang.String account) throws CreateException;
}
ejb
package com.acs.epay.components.paymenthistory;
/**
* @author H0041755
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
import javax.ejb.SessionBean;
import java.sql.ResultSet;
import java.sql.PreparedStatement;
import java.sql.Connection;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.Vector;
import javax.ejb.CreateException;
import javax.ejb.SessionContext;
import com.acs.epay.components.servicelocator.ejb.ServiceLocator;
import com.acs.epay.components.servicelocator.ServiceLocatorException;
import com.acs.epay.components.payment.PaymentVO;
public class PaymentHistoryEJB implements SessionBean {
private Vector Payments;
private String AccountNumber;
private SessionContext sc;
private ServiceLocator serviceLocator;
private static final String SQL = "SELECT PMTRNB, PMCOND, PMCHKD, PMAMNT, PMENID FROM PPPTRSM WHERE PMACCT = ? ORDER BY PMCOND DESC";
public void ejbCreate() throws CreateException {}
public void ejbCreate(String account)
throws CreateException {
if (account == null) {
throw new CreateException("Null Account not allowed.");
}
else {
AccountNumber = account;
LoadPaymentHistory();
}
}
public void LoadPaymentHistory() {
try{
Payments = new Vector();
DataSource ds = serviceLocator.getDataSource("java:jdbc/DB2DS");
Connection con = ds.getConnection();
PreparedStatement ps = con.prepareCall(SQL);
ps.setString(1,AccountNumber);
ResultSet rs;
rs = ps.executeQuery();
while(rs.next()){
Payments.add(new PaymentVO());
}
} catch(SQLException sqe) {
} catch(ServiceLocatorException sle){
}
}
public Vector getPaymentHistory() {
return(Payments);
}
public PaymentHistoryEJB() {}
public void ejbRemove() {}
public void ejbActivate() {}
public void ejbPassivate() {}
public void setSessionContext(SessionContext sc) {
this.sc = sc;
}
} -
3. Re: Stateless Local Home wanting create() method with no arg
severityone Dec 18, 2002 6:57 AM (in response to chriskb)You have to remove this create() method:
LocalPaymentHistory create(java.lang.String account) throws CreateException;
Since the bean is stateless, it doesn't remember client data. You could get a difference instance of the bean each time you call it. So you can't hand any client-specific data to the bean like the account name/number.
A stateless session bean must have one and only one create() method, and that method must be paremeterless.
- Peter