Realisierung EJBs

Werbung
Aufgabenstellung
Konto: Kontonummer, Inhaber, PIN, Guthaben,
Zinssatz, Kreditrahmen
Funktionsumfang:
1. Bankangestellte:
- Einrichten neuer Konten
- Änderung Kreditrahmen und Verzinsung
für ein Konto
Aufgabenstellung
2. Bankangestellte und Bankterminalbenutzer:
- Einzahlung eines Geldbetrages
- Anzeige des Kontostandes (nötig: Kontonummer,
Inhaber, PIN)
- Abhebung (nötig: Kontonummer, Inhaber, PIN)
- Überweisung (nötig: Quelle: Kontonummer,
Inhaber, PIN; Ziel: Kontonummer, Inhaber)
1
Aufgabenstellung
=> 3. EJBs:
- Entity-Bean: Konto
- Stateless Session Bean: Bankangestellte
- Stateful Session Bean:
Bankterminalbenutzer
//HomeInterface der EntityBean
import javax.ejb.*;
import javax.ejb.CreateException;
import javax.ejb.FinderException;
import java.rmi.RemoteException;
public interface KontoHome extends EJBHome {
public Konto create(int kontoNr, String inhaber)
throws CreateException, RemoteException;
public Konto findByPrimaryKey(KontoPK pk) throws RemoteException,
FinderException;
}
2
//RemoteInterface der EntityBean
import javax.ejb.*;
import java.rmi.RemoteException;
public interface Konto extends EJBObject {
public String getInhaber() throws RemoteException;
public int
getPIN() throws RemoteException;
public void
setPIN(int pin) throws RemoteException;
public double getGuthaben() throws RemoteException;
public void
einzahlen(double betrag) throws RemoteException;
public void
abheben(double betrag) throws RemoteException,
KreditrahmenUeberzogenException;
public double getZinssatz() throws RemoteException;
public void
setZinssatz(double zs) throws RemoteException;
public double getKreditrahmen() throws RemoteException;
public void
setKreditrahmen(double kr) throws RemoteException;
}
//Die Beanklasse der EntityBean
import java.rmi.*;
import javax.ejb.*;
public class KontoBean implements EntityBean {
private EntityContext entityContext;
public int kontoNr;
public String inhaber;
public int pin;
public double guthaben;
public double zinssatz;
public double kreditrahmen;
public KontoPK ejbCreate(int kontoNr, String inhaber)
throws CreateException {
this.kontoNr = kontoNr;
this.inhaber = inhaber;
return null;
}
public void ejbPostCreate(int kontoNr, String inhaber){
}
3
public double getGuthaben(){
return guthaben;
}
public String getInhaber(){
return inhaber;
}
public void setPIN(int pin){
this.pin = pin;
}
public int getPIN(){
return pin;
}
public void setZinssatz(double zs){
this.zinssatz = zs;
}
public double getZinssatz(){
return zinssatz;
}
public void setKreditrahmen(double kr){
this.kreditrahmen = kr;
}
public double getKreditrahmen(){
return kreditrahmen;
}
public void einzahlen(double betrag) {
guthaben = guthaben + betrag;
}
public void abheben(double betrag) throws KreditrahmenUeberzogenException{
if ((guthaben - betrag) >= (- kreditrahmen)){
guthaben = guthaben - betrag;
return;
}
throw new KreditrahmenUeberzogenException();
}
public void ejbActivate() {
}
4
public void ejbLoad() {
}
public void ejbPassivate() {
}
public void ejbRemove() throws RemoveException {
}
public void ejbStore() {
}
public void setEntityContext(EntityContext context) {
entityContext = context;
}
public void unsetEntityContext() {
entityContext = null;
}
}
// Die primary-key-Klasse
import java.io.Serializable;
public class KontoPK implements Serializable{
public int kontoNr;
public KontoPK() {
}
public KontoPK(int kontoNr) {
this.kontoNr = kontoNr;
}
public int hashCode(){
return kontoNr;
}
public boolean equals(Object obj){
if(obj instanceof KontoPK){
return (kontoNr == ((KontoPK)obj).kontoNr);
}
return false;
}
}
5
//HomeInterface der stateless Session Bean
public interface KontenverwaltungHome extends
javax.ejb.EJBHome {
Kontenverwaltung create() throws
java.rmi.RemoteException,
javax.ejb.CreateException;
}
// RemoteInterface der stateless session Bean
import java.rmi.RemoteException;
public interface Kontenverwaltung extends javax.ejb.EJBObject {
void neuesKonto(int kontoNr, String inhaber)
throws RemoteException, javax.naming.NamingException, javax.ejb.CreateException,
KeinKontoException;
void setKreditrahmen(Konto konto, double kr) throws RemoteException,
KeinKontoException;
void setZinssatz(Konto konto, double zs) throws RemoteException, KeinKontoException;
void einzahlen(Konto konto, double betrag) throws RemoteException,
KeinKontoException;
double getGuthaben(Konto konto) throws RemoteException, KeinKontoException;
void abheben(Konto konto, double betrag)
throws KreditrahmenUeberzogenException, RemoteException, KeinKontoException;
void ueberweisen(Konto quellKonto, Konto zielKonto, double betrag)
throws KreditrahmenUeberzogenException, RemoteException, KeinKontoException;
}
6
//Beanclass des stateless Session Beans
import java.rmi.RemoteException;
public class KontenverwaltungBean implements javax.ejb.SessionBean {
private javax.ejb.SessionContext _context;
public void setSessionContext (javax.ejb.SessionContext context) {
_context=context;
}
public void ueberweisen(Konto quellKonto, Konto zielKonto, double betrag)
throws KreditrahmenUeberzogenException, RemoteException, KeinKontoException{
if( quellKonto == null ){ throw new KeinKontoException(); }
if( zielKonto == null ){ throw new KeinKontoException(); }
quellKonto.abheben(betrag);
zielKonto.einzahlen(betrag);
}
}
//HomeInterface der stateful SessionBean
import java.rmi.RemoteException;
public interface KundenterminalHome extends
javax.ejb.EJBHome {
Kundenterminal create(int kontoNr) throws
javax.ejb.CreateException
,javax.ejb.FinderException,
javax.naming.NamingException,
RemoteException;
}
7
//RemoteInterface der stateful SessionBean
import java.rmi.RemoteException;
public interface Kundenterminal extends javax.ejb.EJBObject {
void einzahlen(double betrag)
throws InhaberNoetigException, RemoteException, KeinKontoException;
double getGuthaben()
throws InhaberNoetigException, RemoteException, PinNoetigException,
KeinKontoException;
void abheben(double betrag)
throws InhaberNoetigException, RemoteException, PinNoetigException,
KreditrahmenUeberzogenException, KeinKontoException;
void ueberweisen(int zielKNr, String zielInhaber, double betrag)
throws javax.ejb.FinderException, RemoteException,
javax.naming.NamingException,
InhaberNoetigException, PinNoetigException, KeinKontoException,
KreditrahmenUeberzogenException;
void setPin(int pin) throws RemoteException, FalscheAngabeException;
void setInhaber(String inhaber) throws RemoteException, FalscheAngabeException;
}
//BeanKlasse der stateful SessionBean
import java.rmi.RemoteException;
public class KundenterminalBean implements javax.ejb.SessionBean {
private javax.ejb.SessionContext _context;
private Konto aktKonto;
private boolean bInhaber = false;
private boolean bPin = false;
public void setInhaber(String inhaber) throws RemoteException,
FalscheAngabeException{
if(aktKonto.getInhaber().equals(inhaber)){
this.bInhaber = true;
return;
}
throw new FalscheAngabeException();
}
8
public void setPin(int pin) throws RemoteException, FalscheAngabeException{
if(aktKonto.getPIN() == pin){
this.bPin = true;
return;
}
throw new FalscheAngabeException();
}
public void einzahlen(double betrag)
throws InhaberNoetigException, RemoteException, KeinKontoException{
if(aktKonto == null){
throw new KeinKontoException();
}
if( !bInhaber){
throw new InhaberNoetigException();
}
aktKonto.einzahlen(betrag);
}
public double getGuthaben()
throws InhaberNoetigException, RemoteException, PinNoetigException,
KeinKontoException{
if(aktKonto == null){
throw new KeinKontoException();
}
if( !bInhaber){
throw new InhaberNoetigException();
}
if( !bPin){
throw new PinNoetigException();
}
return aktKonto.getGuthaben();
}
}
9
Herunterladen