//Kontoappli.java import java.applet.*; import java.awt.*; import java.rmi.*; import java.util.*; import java.sql.*; import java.awt.event.*; import Kontointerface; public class Kontoappli extends Frame { TextField tfpasswort; TextField tfvorname; TextField tfname; TextField tfkontostand; TextField tfeinzahlen; Kontointerface kon; Kontoappli() { super("Test"); setLayout(new GridLayout(7,2)); setBackground(Color.lightGray); add(new Label("Passwort ")); add(tfpasswort=new TextField(10)); add(new Label("Vorname ")); add(tfvorname=new TextField(10)); add(new Label("Name ")); add(tfname=new TextField(10)); add(new Label("Kontostand")); add(tfkontostand=new TextField(10)); add(new Button("Verbinden")); add(new Label("Musterbank")); add(new Label("Einzahlen ")); add(tfeinzahlen=new TextField(10)); add(new Button("Buchen")); try { kon=(Kontointerface) Naming.lookup( "rmi://"+"111.111.111.113"+"/KontoServer"); } catch (Exception e) {} } public boolean handleEvent(Event event) { //Das Programm wird beendet if (event.id==Event.WINDOW_DESTROY) { System.exit(0); } return super.handleEvent(event); } public boolean action(Event evt,Object arg) { try { if (evt.target instanceof Button) { if ("Verbinden".equals(arg)) { kon.verbinden(tfpasswort.getText()); tfkontostand.setText(kon.getkontostand()); tfname.setText(kon.getname()); tfvorname.setText(kon.getvorname()); } if ("Buchen".equals(arg)) { kon.buchen(tfeinzahlen.getText()); kon.verbinden(tfpasswort.getText()); tfkontostand.setText(kon.getkontostand()); tfeinzahlen.setText(""); } } } //catch (SQLException e) {} catch (RemoteException e) {} finally { return true; } } public void windowClosing(WindowEvent e) { System.exit(0); } public static void main(String argv[]) { Kontoappli appli=new Kontoappli(); appli.resize(200,200); appli.show(); } } //==================== //Kontointerface.java import java.rmi.*; public interface Kontointerface extends Remote { public void verbinden(String passwort) throws RemoteException; public String getkontostand() throws RemoteException; public String getname() throws RemoteException; public String getvorname() throws RemoteException; public void buchen(String pwert) throws RemoteException; } //======================= // // // KontoVerbindung // // import java.sql.*; import java.rmi.*; import java.rmi.server.UnicastRemoteObject; public class KontoServer extends UnicastRemoteObject implements Kontointerface { KontoVerbindung kontocon; String name; String vorname; String kontostand; String passwort; ResultSet rs; public KontoServer() throws RemoteException { super(); } public void verbinden(String ppasswort) { int i=0; try { passwort=ppasswort; kontocon=new KontoVerbindung(ppasswort); rs=kontocon.getResultSet(); if (! rs.wasNull()) { while (rs.next()) { setkontostand(rs.getString(3)); setname(rs.getString(4)); setvorname(rs.getString(5)); i++; } } if (i==0) { setkontostand("Fehler"); setname("Fehler"); setvorname("Fehler"); } } catch (SQLException e) { System.out.println(e.toString()); } } public void setkontostand(String pkontostand) { kontostand=new String(pkontostand); } public String getkontostand() { return kontostand; } public void setname(String pname) { name=pname; } public String getname() { return name; } public void setvorname(String pvorname) { vorname=pvorname; } public String getvorname() { return vorname; } public void buchen(String pwert) { try { double betrag=new Double(pwert).doubleValue(); double betrag1=new Double(kontostand).doubleValue(); String sql="UPDATE tabelle1 SET kontostand="+ String.valueOf(betrag1+betrag)+ " WHERE passwort='"+passwort+"'"; kontocon.sendUpdate(sql); } catch (SQLException e) { System.out.println("Fehler in update"); System.out.println(e.toString()); } catch (Exception e) { System.out.println(e.toString()); } } public static void main(String argv[]) { System.setSecurityManager(new RMISecurityManager()); try { KontoServer serv=new KontoServer(); Naming.rebind("KontoServer",serv); System.out.println("KontoServer mit Namen 'KontoServer' erzeugt"); } catch (Exception e) { System.out.println("KontoServer.main():"); e.printStackTrace(); } } }//end of KontoServer class KontoVerbindung { String strURL; String strQuery; java.sql.Connection connection; ResultSet resultset; Statement statement; public KontoVerbindung(String ppasswort) { strURL="jdbc:odbc:konto"; strQuery="SELECT * FROM tabelle1 WHERE passwort='"+ppasswort+"'"; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //DriverManager.setLogStream(System.out); connection=DriverManager.getConnection(strURL,"admin",""); statement=this.connection.createStatement(); resultset=statement.executeQuery(strQuery); } catch (SQLException ex) {} catch (ClassNotFoundException ex) {} } public ResultSet getResultSet() { return this.resultset; } public void sendQuery(String s) throws SQLException { resultset = statement.executeQuery(s); } public void sendUpdate(String s) throws SQLException { statement.executeUpdate(s); } } //============================== //****************************************************************************** // test1.java: Applet // //****************************************************************************** import java.applet.*; import java.awt.*; import java.rmi.*; import java.util.*; import java.sql.*; import Kontointerface; //============================================================================== // Hauptklasse für Applet test1 // //============================================================================== public class test1 extends Applet { TextField tfpasswort; TextField tfvorname; TextField tfname; TextField tfkontostand; TextField tfeinzahlen; Kontointerface kon; public void init() { setLayout(new GridLayout(7,2)); setBackground(Color.lightGray); add(new Label("Passwort ")); add(tfpasswort=new TextField(10)); add(new Label("Vorname ")); add(tfvorname=new TextField(10)); add(new Label("Name ")); add(tfname=new TextField(10)); add(new Label("Kontostand")); add(tfkontostand=new TextField(10)); add(new Button("Verbinden")); add(new Label("Musterbank")); add(new Label("Einzahlen ")); add(tfeinzahlen=new TextField(10)); add(new Button("Buchen")); try { kon=(Kontointerface) Naming.lookup( "rmi://"+getCodeBase().getHost()+"/KontoServer"); } catch (Exception e) {} } public boolean action(Event evt,Object arg) { try { if (evt.target instanceof Button) { if ("Verbinden".equals(arg)) { kon.verbinden(tfpasswort.getText()); tfkontostand.setText(kon.getkontostand()); tfname.setText(kon.getname()); tfvorname.setText(kon.getvorname()); } if ("Buchen".equals(arg)) { kon.buchen(tfeinzahlen.getText()); kon.verbinden(tfpasswort.getText()); tfkontostand.setText(kon.getkontostand()); tfeinzahlen.setText(""); } } } catch (SQLException e) {} catch (RemoteException e) {} finally { return true; } } } //================================= Starten des Kontoservers java -Djava.rmi.server.codebase=\file://c:/java_projekte/login_artikel/test KontoServer //================================ Die Serverklasse muß mit rmic zusätzlich kompiliert werden rmic KontoServer