Netværksprogrammering
|
|
- Augusta Jessen
- 8 år siden
- Visninger:
Transkript
1 Netværksprogrammering 1
2 Plan Socket-baseret kommunikation Fjernmetodekald (RMI) - Designmønsteret Proxy Databasetilgang (JDBC) 2
3 Distribuerede beregninger Dagens beregningsmiljøer er distribuerede: beregningerne forgår på flere værtsmaskiner heterogene: værtsmaskinerne er forskellige 3
4 Kommunikation Java indeholder to mekanismer til distribuerede beregninger: (1) Socket-baseret kommunikation (java.net) En socket er et endepunkt for en tovejs-forbindelse imellem to parter. (2) Fjernmetodekald (RMI) (java.rmi) RMI tillader manipulation af objekter på fjerne maskiner, som om objekterne var lokale. 4
5 Socket-baseret kommunikation Sockets er endepunkterne for en tovejs-forbindelse imellem to værtsmaskiner. Der er to slags sockets: server sockets og client sockets. En server socket venter på klienters anmodning om en forbindelse. En client socket (også blot kaldet socket) bruges til både at sende og modtage data. 5
6 Porte En server socket lytter på en bestemt port. En port er angivet ved et positivt heltal mindre end eller lig med Portnummeret er nødvendigt for at kunne skelne imellem servere (server-applikationer), der kører på samme værtsmaskine. De første 1024 porte er reserveret til specifikke protokoller, f.eks. 21 til FTP, 23 til Telnet, 25 til og 80 til HTTP. 6
7 Server sockets En server socket er en instans af klassen ServerSocket og skabes ved en af følgende to konstruktører: ServerSocket(int port)!!!!serversocket(int port, int backlog)!!!!!!!!!port: portnummeret backlog: den maksimale længde for køen af ventende klienter (50 er standard) Kun applikationer kan skabe ServerSocket-objekter. 7
8 Metoder i ServerSocket Socket accept() Vent på en anmodning om en forbindelse fra en klient. Den tråd, der udfører kaldet, blokeres, indtil der modtages en anmodning om forbindelse. Når det sker, returnerer accept med et Socket-objekt. Luk denne ServerSocket.! void close() 8
9 Typisk brug af ServerSocket try {!!!!!!!ServerSocket s = new ServerSocket(port);!!while (true) {!!!!!! Socket incoming = s.accept();!! «Handle a client»! incoming.close();!!! }! s.close();!!!!!! } catch (IOException e) {!! «Handle exception»!!!! }! 9
10 Client sockets En client socket er en instans af klassen Socket og kan opnås på to måder: (1) På serversiden som returværdi af accept(). (2) På klientsiden ved brug af konstruktøren Socket(String host, int port)!!!!!!!!!!!!host: navnet på værtsmaskinen!!!!port: portnummeret 10
11 Klienters kommunikation med en server new Socket(...) Client Socket Client Socket ServerSocket Server-applikation Socket Socket Socket Kommunikationen håndteres på begge sider med Socket-objekter. 11
12 Metoder i Socket getinputstream() Returnerer et InputStream-objekt til modtagelse af data getoutputstream() Returnerer et OutputStream-objekt til afsendelse af data close() Lukker forbindelsen 12
13 Typisk brug af Socket try {!!!!!!!Socket socket = new Socket(host, port);!!bufferedreader in = new BufferedReader(! new InputStreamReader(!!!! socket.getinputstream()));!!printwriter out = new PrintWriter(!! new OutputStreamWriter(!!! socket.getoutputstream()));!!«send and receive data»!!in.close();!!!!!!out.close();!!!!!!socket.close();!!!!! } catch (IOException e) {!!! «Handle exception»!!!! }! 13
14 Udvikling af client/serverprogrammer 1. Afgør, om det er fornuftigt at implementere en server og en eller flere matchende klienter 2. Design en (tekstbaseret) kommunikationsprotokol 3. Implementér serveren 4. Afprøv serveren med et telnetprogram 5. Programmér og afprøv en klient 14
15 En simpel ekko-server import java.io.*;! import java.net.*;! public class EchoServer {! public static void main(string[] args) {! try {! ServerSocket s = new ServerSocket(8008);! while (true) {! Socket incoming = s.accept();! BufferedReader in = new BufferedReader(! new InputStreamReader(! incoming.getinputstream()));! PrintWriter out = new PrintWriter(! new OutputStreamWriter(! incoming.getoutputstream()));! fortsættes 15
16 }!!!out.println("hello! This is the Java EchoServer.");!!!out.println("Enter BYE to exit.");!!!!!out.flush();!!!while (true) {!!!!!!! String str = in.readline();!!! if (str == null)!!!!!!! break; // client closed connection!!! out.println("echo: " + str);!!!!! out.flush();!!!!!!! if (str.trim().equals("bye"))!!!! break;!!!!!!!!}!!!in.close();!!!!!!!!out.close();!!!!!!!incoming.close();!!! }!!!!!!!! } catch (Exception e) {}!!! }!!!!!!!! 16
17 Kørsel med et telnetprogram som klient venus% telnet saturn 8008! Trying ! Connected to saturn.!! Escape character is '^]'.! Hello! This is the Java EchoServer. Enter BYE to exit.! Hi, this is from venus! Echo: Hi, this is from venus! BYE! Echo: BYE!! Connection closed by foreign host.! Telnet: Et terminalemuleringsprogram til TCP/IP-netværk såsom Internettet 17
18 En simpel Java-klient til ekko-serveren import java.io.*;! import java.net.*;! public class EchoClient {! public static void main(string[] args) {! try {! String host =! args.length > 0? args[0] : "localhost";! Socket socket = new Socket(host, 8008);! BufferedReader in = new BufferedReader(! new InputStreamReader(! socket.getinputstream()));! PrintWriter out = new PrintWriter(! new OutputStreamWriter(! socket.getoutputstream()));! fortsættes 18
19 // send data to the server! for (int i = 1; i <= 10; i++) {! System.out.println("Sending: line " + i);! out.println("line " + i);! out.flush();! }! out.println("bye");! out.flush();! }! }! // receive data from the server! while (true) {! String str = in.readline();! if (str == null)! break;! System.out.println(str);! }! in.close();! out.close();! socket.close();! } catch (Exception e) {}! 19
20 Kørsel med Java-klienten venus% java EchoClient saturn! Sending: line 1! Sending: line 2!...! Sending: line 10! Hello! This is Java EchoServer.! Enter BYE to exit.! Echo: line 1! Echo: line 2!...! Echo: line 10! Echo: BYE! 20
21 En ekko-server, der servicerer flere klienter samtidigt Benyt en tråd for hver af klienterne. public class MultiEchoServer {! public static void main(string[] args) {! try {! ServerSocket s = new ServerSocket(8009);! while (true) {! Socket incoming = s.accept();! new ClientHandler(incoming).start();! }! } catch (Exception e) {}! }! }! 21
22 Klassen ClientHandler public class ClientHandler extends Thread {! protected Socket incoming;! public ClientHandler(Socket incoming) {! this.incoming = incoming;! }! public void run() {! try {! BufferedReader in = new BufferedReader(! new InputStreamReader(! incoming.getinputstream()));! PrintWriter out = new PrintWriter(! new OutputStreamWriter(!!! incoming.getoutputstream())); fortsættes 22
23 }! }! out.println("hello!...");! out.println("enter BYE to exit.");! out.flush();! while (true) {! String str = in.readline();! if (str == null)! break;! out.println("echo: " + str);! out.flush();! if (str.trim().equals("bye"))! break;! }! in.close();! out.close();! incoming.close();! } catch (Exception e) {}! 23
24 Rundsending af meddelelser til flere klienter Udvikling af en chat-server, der håndterer flere klienter samtidigt rundsender en meddelelse, der modtages fra en klient til alle andre klienter Der er behov for at holde rede på alle aktive klienter. 24
25 Chat 25
26 ChatServer public class ChatServer {!!!!!public ChatServer(int port) throws IOException {!! ServerSocket s = new ServerSocket(port);!! while (true)!!!!!! new ChatHandler(s.accept()).start();!! }!!!!!!!!!!public static void main(string[] args)!!!! throws IOException {!! if (args.length!= 1)!!!!! throw new RuntimeException(!!! "Syntax: java ChatServer <port>");! new ChatServer(Integer.parseInt(args[0]));!}!!!!!!! }! 26
27 ChatHandler public class ChatHandler extends Thread {!!Socket socket;!!datainputstream in;!!dataoutputstream out;!!static Set<ChatHandler> handlers = new HashSet<ChatHandler>();!!public ChatHandler(Socket socket) throws IOException {!! this.socket = socket;!! in = new DataInputStream(socket.getInputStream());!! out = new DataOutputStream(socket.getOutputStream());!! handlers.add(this);!!}! fortsættes 27
28 public void run() {!!!!!!!String name = "";!!!!!!try {!!!!!!!! name = in.readutf();!! System.out.println("New client " + name + " from " +!! socket.getinetaddress());!!! broadcast(name + " entered");!! while(true)!!!!!!! broadcast(name + ": " + in.readutf());!!} catch (IOException e) {!!!!!! System.out.println("-- Connection to user lost.");!!} finally {!!!!!!! handlers.remove(this);!! try {!!!!!!!! broadcast(name + " left");!!!!!! in.close();!!!!!! out.close();!!!!!! socket.close();!!!!! } catch (IOException e) {}! }!!!!!!!!! }! fortsættes 28
29 }!!static synchronized void broadcast(string message)!! throws IOException {!! for (ChatHandler handler : handlers) {!! handler.out.writeutf(message);!! handler.out.flush();!!}!!}! Bemærk, at metoden skal være synchronized. 29
30 ChatClient public class ChatClient {!!String name;!!socket socket;!!datainputstream in;!!dataoutputstream out;!!chatframe gui;!!!!!public ChatClient(String name, String server, int port) {!! try {!! this.name = name;!! socket = new Socket(server, port);!! in = new DataInputStream(socket.getInputStream());!! out = new DataOutputStream(socket.getOutputStream());!! out.writeutf(name);!! gui = new ChatFrame(this);!! while (true)!! gui.output.append(in.readutf() + "\n");!! } catch (IOException e) {}!!}! fortsættes 30
31 }!!void sendtexttochat(string str) {!! try {!! out.writeutf(str);!! } catch (IOException e) { e.printstacktrace(); }!!}!!void disconnect() {!!try {!! in.close();!! out.close();!! socket.close();!!} catch (IOException e) { e.printstacktrace(); }!!}!!public static void main(string[] args) throws IOException {!!if (args.length!= 3)!! throw new RuntimeException(! "Syntax: java ChatClient <name> <serverhost> <port>");!!new ChatClient(args[0], args[1], Integer.parseInt(args[2]);!!}! 31
32 ChatFrame import java.awt.*;! import java.awt.event.*;! import javax.swing.*;! public class ChatFrame extends JFrame {!!JTextArea output = new JTextArea();!!JTextField input = new JTextField();!!public ChatFrame(final ChatClient client) {!! super(client.name);!! Container pane = getcontentpane();!! pane.setlayout(new BorderLayout());!! pane.add(new JScrollPane(output), BorderLayout.CENTER);!! output.seteditable(false);!! pane.add(input, BorderLayout.SOUTH);! fortsættes 32
33 }!! input.addkeylistener(new KeyAdapter() {!! public void keypressed(keyevent e) {!! if (e.getkeycode() == KeyEvent.VK_ENTER) {!! client.sendtexttochat(input.gettext());!! input.settext("");!! }!! }!!});!! addwindowlistener(new WindowAdapter() {!! public void windowclosing(windowevent e) {!!! client.disconnect();!! System.exit(0);!! }!!!});!! setsize(400, 200);!! setvisible(true);!! input.requestfocus();!!}! 33
34 Fjernmetodekald RMI (Remote Method Invocation) Objekter på fjerne værtsmaskiner kan manipuleres, som om de befandt sig på den lokale maskine. client:! server! server:! void m()! server.m()! klient-vært server-vært 34
35 RMI-arkitekturen Client Server Stub! JVM! Skeleton! JVM! Client: Et objekt på klient-værten Server: Et objekt på server-værten, der servicerer klienter Stub: Et objekt på klient-værten, der udgør en erstatning for Server-objektet Skeleton: Et objekt på server-værten, der modtager forespørgsler fra stubbe og videresender dem til Server-objektet Service contract: En grænseflade, der specificerer, hvilke tjenester, serveren kan yde 35
36 RMI-kald Client 1 Stub! JVM! Server Skeleton! JVM! Kald af server.m() i klienten: 1. Den tilsvarende stubmetode, stub.m(), kaldes 2. Stubben serialiserer argumenter og sender argumenter og kaldinformation til skelettet 3. Skelettet deserialiserer argumenter og kaldinformation, og kalder metoden m() i serveren 4. Serveren udfører metoden og returnerer resultatet til skelettet 5. Skelettet serialiserer resultatet og sender det til stubben 6. Stubben deserialiserer resultatet og returnerer det til klienten 36
37 RMI-programmering Server, Client og Service contract skrives af programmøren. Stubbe og skeletter genereres af en RMI-oversætter (f.eks. rmic) ud fra den oversatte Server-klasse. 37
38 Parameteroverførsel Ved et fjernmetodekald overføres lokale (nonremote) objekter ved værdi-overførsel (serialisering), medens fjerne (remote) objekter overføres ved reference-overførsel. 38
39 RMI-registrering Enhver RMI-server identificeres ved en URL med protokollen rmi. rmi://host:port/name host: værtsnavn for RMI-kataloget port: portnummer for RMI-kataloget (hvis udeladt: 1099) name: navnet tilknyttet serveren Serveren registreres på server-værten i et RMI-katalog. Denne proces kaldes binding: (hvis udeladt: localhost) Naming.bind(name, server)! 39
40 Opslag i RMI-kataloget En klient kan lokalisere en RMI-server ved at slå op i RMIkataloget: Remote server = Naming.lookup(url)! 40
41 Operationer på RMI-kataloget (statiske metoder i Naming) static void bind(string name, Remote obj)! static void rebind(string name, Remote obj)! static void unbind(string name)! static Remote lookup(string url)! static String[] list(string url)! 41
42 Anvendelse af RMI 1. Definer en grænseflade for Server-objektet. public interface Contract extends Remote {! public void aservice(...) throws RemoteException;!!// other services! }! Denne udgør kontrakten imellem serveren og dens klienter. Grænsefladen skal udvide grænsefladen Remote. Hver af servicemetoderne skal erklæres, således at den kan kaste en RemoteException. Argumenternes typer skal være serialiserbare. fortsættes 42
43 2. Definer en klasse, der implementerer kontrakten. Klassen skal nedarve fra klassen UnicastRemoteObject. public class ServiceProvider extends UnicastRemoteObject!!!! implements Contract {! public void aservice(...) throws RemoteException {! // implementation! }!!// implementation of other services! }! fortsættes 43
44 3. Skab en instans af serveren og registrer den i RMI- kataloget. Contract remoteobj = new ServiceProvider(...);! Naming.rebind(name, remoteobj);! 4. Generer stub- og skelet-klasserne ved hjælp af RMI- oversætteren. fortsættes 44
45 5. Programmér en klient, der bruger de tjenester, som serveren udbyder. For at bruge et fjernt objekt, må klienten først lokalisere objektet ved hjælp af RMI-kataloget. Contract serverobj = (Contract) Naming.lookup(url);!! //...! serverobj.aservice(...);! //...! fortsættes 45
46 Struktur af RMI-applikationer Remote UnicastRemoteObject! AClient Contract aservice() ServiceProvider_Stub aservice() ServiceProvider aservice() 46
47 Designmønsteret Proxy Kategori: Strukturelt designmønster Hensigt: At tilbyde en erstatning for et andet objekt. Anvendelse: Når der er brug for en mere raffineret reference til et objekt end en simpel reference 47
48 Designmønsteret Proxy (fortsat) Struktur: Client! Subject! Proxy! RealObject! 48
49 Designmønsteret Proxy (fortsat) Deltagere: Proxy (f.eks. ServiceProvider_Stub), der har en reference, der kan bruges til at referere det virkelige objekt, og som implementerer Subjectgrænsefladen Subject (f.eks. Contract), der definerer en fælles grænseflade for Subject og Proxy, således at Proxy kan bruges overalt, hvor Subject forventes RealObject (f.eks. ServiceProvider), der definerer det virkelige objekt, som Proxy repræsenterer 49
50 Udvikling af et RMI-baseret chat-system Fjernmetodekald på både server- og klientside. Server: login logout sendmessage Client: receivelogin receivelogout receivemessage 50
51 Grænseflader public interface ChatServerInterface extends Remote {!!public void login(string name, ChatClientInterface newclient)! throws RemoteException;!!public void logout(string name) throws RemoteException;!!!public void sendmessage(message message) throws RemoteException;! }! public interface ChatClientInterface extends Remote {! public void receivelogin(string name) throws RemoteException;! public void receivelogout(string name) throws RemoteException;! public void receivemessage(message message) throws RemoteException;! }! 51
52 Message public class Message implements java.io.serializable {!!public String name, text;! }!!public Message(String name, String text) {!!this.name = name;!!this.text = text;!!}! 52
53 import java.rmi.*;! import java.rmi.server.*;! import java.rmi.registry.*;! import java.util.*;! ChatServer public class ChatServer extends UnicastRemoteObject!! implements ChatServerInterface {!!Map<String, ChatClientInterface> chatters =! new HashMap<String, ChatClientInterface>();!!public ChatServer() throws RemoteException {}!!public synchronized void login(string name,!! ChatClientInterface newclient) throws RemoteException {!! chatters.put(name, newclient);!!! for (ChatClientInterface client : chatters.values())! client.receivelogin(name);!!}! fortsættes 53
54 }!!public synchronized void logout(string name)!! throws RemoteException {!! chatters.remove(name);!! for (ChatClientInterface client : chatters.values())! client.receivelogout(name);!! System.out.println("client " + name + " logged out");!!}!!public synchronized void sendmessage(message message)!! throws RemoteException {!! for (ChatClientInterface client : chatters.values())! client.receivemessage(message);!!}!!public static void main(string[] args) {!! try {!! LocateRegistry.createRegistry(1099);!! Naming.rebind("ChatServer", new ChatServer());!! } catch (Exception e) { e.printstacktrace(); }!!}! 54
55 ChatClient public class ChatClient extends UnicastRemoteObject!! implements ChatClientInterface {!!String name;!!chatserverinterface server;!!chatframe gui;!!public ChatClient(String name, String url) throws RemoteException {!! this.name = name;!! try {!! server = (ChatServerInterface)!! java.rmi.naming.lookup("rmi://" + url + "/ChatServer");!! server.login(name, this);!!} catch (Exception e) { e.printstacktrace(); }!! gui = new ChatFrame(this);!!}! fortsættes 55
56 !public void receivelogin(string name) {!!gui.output.append(name + " entered\n");!!}!!public void receivelogout(string name) {!!gui.output.append(name + " left\n");!!}!!public void receivemessage(message message) {!! gui.output.append(message.name + ": " + message.text + "\n");!!}! fortsættes 56
57 !void sendtexttochat(string text) {!!try {!! server.sendmessage(new Message(name, text));!!} catch (RemoteException e) { e.printstacktrace(); }!!}!!void disconnect() {!!try {!! server.logout(name);!!} catch (Exception e) { e.printstacktrace(); }!!}!!!!public static void main(string[] args) {!! if (args.length!= 2)!! throw new RuntimeException(!! "Usage: java ChatClient <user> <host>");!! try {!! new ChatClient(args[0], args[1]);!! } catch (RemoteException e) { e.printstacktrace(); }!}! }! 57
58 Børsnoteringer Studér lærebogens design af client/server-programmel til løbende underretning om aktiekurser. Client pull: Klienterne kontakter serveren med passende mellemrum for at få oplyst de aktuelle kurser Client push: Serveren underretter interesserede klienter, når kurserne ændres Socket-baserede udgaver: s RMI-baserede udgaver: s
59 JDBC Java Database Connectivity JDBC er en API, der tillader et Java-program at tilgå relationelle databaser. JDBC tilbyder en simpel grænseflade til SQL (Structured Query Language). Muliggør: skabelse af en database indsættelse, søgning og opdatering tilgang til metadata 59
60 Eksempel på en database name address city state zip creditcard orderno M. Jordan 549 E. Surf Chicago IL Visa S. Pippen 11 S. 59th Oakbrook IL Discover D. Rodman 234 N. 3rd Chicago IL MasterCard S. Kerr 4010 Pine Los Angeles CA Visa R. Harper 234 N. 3rd New York NY MasterCard
61 Basale SQL-kommandoer INSERT!Indsætter en eller flere nye rækker i en tabel DELETE Sletter en eller flere rækker i en tabel UPDATE Modificerer værdierne i en eller flere rækker i en tabel SELECT!Udvælger information baseret på en betingelse CREATE Skaber et nyt databaseobjekt DROP ALTER Fjerner et eksisterende databaseobjekt Ændrer formatet for et eksisterende databaseobjekt 61
62 JDBC-drivere En driver udgør bindeledet imellem program og database. Der er fire typer: (1) JDBC-ODBC-bro: -> ODBC (Open Data Base Connectivity) (2) Native-API (delvis Java): -> DBMS (3) Net-protocol (ren Java): -> netprotokol -> DBMS (4) Native-protocol (ren Java): -> DBMS netprotokol 62
63 Ikke-kommercielle JDBC-drivere (open source type 4 drivere) MySQL Cloudscape PostgreSQL 63
64 JDBC-interaktion ResultSet executeupdate! executequery! PreparedStatement Application preparestatement! ResultSet executeupdate! executequery! Statement createstatement! Connection getconnection! ResultSet execute! CallableStatement preparecall! ODBC Driver Oracle Database DriverManager! JDBC-ODBC Bridge ODBC Driver ODBC Database Class.forName! Sybase Driver Sybase Database 64
65 Skabelse af en JDBC-tabel 1. Driveren hentes import java.sql.*;! import java.io.*;! public class BuildBeetlesTable {! public static void main(string args[])! throws SQLException, IOException {! System.out.println("Loading JDBC driver...");! try {! Class.forName("com.mysql.jdbc.Driver");! } catch(classnotfoundexception e) {! System.exit(1);! }! fortsættes 65
66 2. Forbindelse til database etableres System.out.println("Connecting to Orders database...");! String url = "jdbc:mysql://localhost/ordersdriver";! String user = "keld";! String password = "xyz123";!!! Connection conn = DriverManager.getConnection(url,! user,!!!!! password);! conn.setautocommit(false);! fortsættes 66
67 3. En tabel skabes System.out.print("Building new Beetles table...\n\n");! Statement stmt = conn.createstatement();! String createstring =! "CREATE TABLE Beetles (name VARCHAR(35), " +! "address VARCHAR(35), " +! "city VARCHAR(20), " +! "state VARCHAR(2), " +! "zip VARCHAR(5), " +! " VARCHAR(30), " +! "creditcard VARCHAR(15))";! stmt.executeupdate(createstring);! fortsættes 67
68 4. En række indsættes System.out.print("Inserting test row in Beetles table...\n\n");! String insertstring =! "INSERT INTO Beetles VALUES ('Michael Owen', " +! "'123 Elmwood Street', " +! "'Lake Forest', " +! "'IL', " +! "'65431', " +! " +! "'MasterCard')";! stmt.executeupdate(insertstring);! fortsættes 68
69 5. Tabellens indhold udskrives ResultSet rset = stmt.executequery("select * FROM Beetles");! while (rset.next()) {! System.out.print(" ");! System.out.print(rset.getString("name") + ", ");! System.out.print(rset.getString(2) + ", " );! System.out.print(rset.getString(3) + ", " );! System.out.print(rset.getString(4) + ",\n ");! System.out.print(rset.getString(5) + ", ");! System.out.print(rset.getString(6) + ", ");! System.out.print(rset.getString(7) + "\n");! }! fortsættes 69
70 6. Ressourcer frigives, og forbindelsen til databasen lukkes }! }! System.out.println("Closing database connection...");! conn.commit();! // make changes permanent! stmt.close();! rset.close();! conn.close();! // release DBMS ressources! 70
71 Modifikation af en JDBC-tabel import java.sql.*;! import java.io.*;! import java.util.calendar;! 1. Driveren hentes public class ModifyBeetlesTable {! public static void main(string args[])! throws SQLException, IOException {! System.out.println("Loading JDBC driver...");! try {! Class.forName("com.mysql.jdbc.Driver");! } catch(classnotfoundexception e) {! System.exit(1);! }! fortsættes 71
72 2. Forbindelse til database etableres System.out.println("Connecting to Beetles table...");! String url = "jdbc:mysql://localhost/ordersdriver" +! "?user=keld&password=xyz123";! Connection conn = DriverManager.getConnection(url); conn.setautocommit(false);! fortsættes 72
73 3. Der tilføjes et ekstra felt (søjle) stmt = conn.createstatement();! System.out.print("Modifying Beetles table...\n\n");! String updatestring =! "ALTER TABLE Beetles ADD ORDERNO VARCHAR(12) ;! stmt.executeupdate(updatestring);! fortsættes 73
74 4. En række i tabellen opdateres Calendar cal = Calendar.getInstance();! String orderno = String.valueOf(cal.get(cal.MONTH) + 1) +! String.valueOf(cal.get(cal.DAY_OF_MONTH)) +! String.valueOf(cal.get(cal.YEAR)) +! String.valueOf(cal.get(cal.HOUR)) +! String.valueOf(cal.get(cal.MINUTE)) +! String.valueOf(cal.get(cal.SECOND));! updatestring = "UPDATE Beetles SET ORDERNO = " + orderno +! " WHERE NAME='Michael Owen'";! stmt.executeupdate(updatestring);! fortsættes 74
75 5. Tabellens indhold udskrives System.out.print("Displaying table contents...\n\n");! ResultSet rset = stmt.executequery("select * FROM Beetles");! while (rset.next()) {! System.out.println(" " +! rset.getstring("name") + ", " +! rset.getstring("address") + ", " +! rset.getstring("city") + ", " +! rset.getstring("state") + "\n " +! rset.getstring("zip") + ", " +! rset.getstring(" ") + ", " +! rset.getstring("creditcard") + ", " +! rset.getstring("orderno") );! }! fortsættes 75
76 6. En række slettes System.out.println("Deleting test record...");! updatestring = "DELETE FROM Beetles WHERE NAME='Michael Owen'";! stmt.executeupdate(updatestring);! fortsættes 76
77 7. Ressourcer frigives, og forbindelsen til databasen lukkes }! }! System.out.println("Closing database connection...");! conn.commit();! stmt.close();! rset.close();! conn.close();! 77
78 E-handel med en ordre-database import java.util.calendar;! import java.awt.event.*;! import javax.swing.*;! import java.sql.*;! import java.io.*;! public class JdbcOrderDialog extends OrderDialog {! public JdbcOrderDialog(JFrame owner) {! super(owner);! }! protected ActionListener makebuttonhandler() {! return new JdbcButtonHandler();! }! class JdbcButtonHandler implements ActionListener {... }! }! fortsættes 78
79 class JdbcButtonHandler implements ActionListener {! public void actionperformed(actionevent evt) {! JButton button = (JButton) evt.getsource();! String label = button.gettext();! if (label.equals("ok") {! try {! insertneworder();! } catch (IOException IOex) {}! dialogpanel.reset();! setvisible(false);! }! }! public void insertneworder()! throws SQLException, IOException {... }! }! fortsættes 79
80 public void insertneworder() throws SQLException, IOException {! System.out.print("Loading JDBC driver...\n\n\n" );! try {! Class.forName("com.mysql.jdbc.Driver");! } catch (ClassNotFoundException e) {! System.exit(0);! }! String url = "jdbc:mysql://localhost/ordersdriver" +! "?user=keld&password=xyz123";! Connection conn = DriverManager.getConnection(url);! Statement stmt = conn.createstatement();! String creditcard = null;! if (dialogpanel.visabox.isselected())! creditcard = "Visa";! else if (dialogpanel.mcbox.isselected())! creditcard = "MasterCard";! else if (dialogpanel.discoverbox.isselected())! creditcard = "Discover";! //...! fortsættes 80
81 }! Calendar cal = Calendar.getInstance();! String orderno = String.valueOf(cal.get(cal.MONTH)+1) +! String.valueOf(cal.get(cal.DAY_OF_MONTH)) +! String.valueOf(cal.get(cal.YEAR)) +! String.valueOf(cal.get(cal.HOUR)) +! String.valueOf(cal.get(cal.MINUTE)) +! String.valueOf(cal.get(cal.SECOND));! String insertstring =! "INSERT INTO Beetles VALUES( " +! "'" + dialogpanel.namefield.gettext()!+ "'," +! "'" + dialogpanel.addressfield.gettext()!+ "'," +! "'" + dialogpanel.cityfield.gettext()!+ "'," +! "'" + dialogpanel.statefield.gettext()!+ "'," +! "'" + dialogpanel.zipfield.gettext()!+ "'," +! "'" + dialogpanel. field.gettext()!+ "'," +! "'" + creditcard!+ "'," +! "'" + orderno!+ "')";! stmt.executeupdate(insertstring);! stmt.close();! conn.commit();! conn.close();! 81
82 CORBA Common Object Request Broker Architecture CORBA er et framework, der muliggør samspil imellem objekter, der er implementeret i forskellige sprog. Arkitekturen er helt analog til RMI s. Client Server Stub! ORB! Skeleton! ORB! Serverkontrakten defineres i IDL (Interface Definition Language) 82
83 Andre Java-teknologier JavaBeans Et framework til at definere genbrugelige programkomponenter, der kan manipuleres visuelt. Teknologien baseres på overholdelsen af en række navnekonventioner. Enterprise JavaBeans Udvidelse af JavaBeans med beholder-baserede objekter, der kan kommunikere indbyrdes via netværk. 83
84 Java Media Framework Java Sound Java Speech Java Telephony Java 2D Java 3D Java Advanced Imaging Java Cryptography Extension Understøtter fortrolighed ved kommunikation over netværk Jini Gør det muligt for forskellige digitale enheder let og hurtigt at udveksle tjenester i et netværk. 84
85 Ugeseddel oktober - 2. november Intet læsestof og ingen øvelsesopgaver. Der arbejdes med afleveringsopgaven. Næste kursusgang afholdes opgaveseminar og kursusevaluering. Hver opgavegruppe bedes forberede en 10 minutters fremlæggelse: 1. Hvad går opgaven ud på? 2. Hvor langt er gruppen nået? 3. Hvilke delopgaver mangler at blive løst? 85
Netværksprogrammering!
Netværksprogrammering! Plan! Socket-baseret kommunikation! Fjernmetodekald (RMI)!!- Designmønsteret Proxy! Databasetilgang (JDBC)! 1! 2! Distribuerede beregninger! Kommunikation! Dagens beregningsmiljøer
Læs mereDatabaseadgang fra Java
Databaseadgang fra Java Grundlæggende Programmering med Projekt Peter Sestoft Fredag 2007-11-23 Relationsdatabasesystemer Der er mange databaseservere Microsoft Access del af Microsoft Office MySQL god,
Læs mereEksempel på en database: studenter, kurser, eksamener
Udvidet Programmering 1999 Forelæsning 20, fredag 12. november 1999 Relationsdatabaser: relationer, tupler, attributter Forespørgselssproget SQL Databasesystemet PostgreSQL Tilgang til relationsdatabaser
Læs mereWeb- og serverprogrammering
Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Web- og serverprogrammering Databasekommunikation - dag 7 Strategier til databaseadgang JDBC (Java DataBase Connectivity)
Læs mereMySQL i Java. Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007
MySQL i Java Tutorial lavet af Jákup W. Hansen TSU 2006 2.semester 05.januar 2007 Hvad er MySQL? Det er et database system, som er gratis for os at bruge. Det er lidt mere besværligt i starten at bruge
Læs mereRMI avanceret. Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer.
Denne guide er oprindeligt udgivet på Eksperten.dk RMI avanceret Denne artikel beskriver nogle mere avancerede features i RMI. Den gør det muligt at lave mere realistiske applikationer. Den forudsætter
Læs mereRMI introduktion. Denne artikel beskriver Java RMI (Remtote Method Invocation).
Denne guide er oprindeligt udgivet på Eksperten.dk RMI introduktion Denne artikel beskriver Java RMI (Remtote Method Invocation). Den beskriver teorien bag RMI, viser et simpelt kode eksempel og forklarer
Læs mereHvad er et distribueret objekt? Plan 12.3. Objekter, objektreferencer, metoder, parameteroverførsel. Objekter: notation
Plan 12.3. Oversigt over grundlæggende begreber Java: eksempel på applikation, programmering og oversættelse Uddybning af grundlæggende begreber Java RMI implementation Forklaring af øvelsen Hvad er et
Læs mereCivilingeniøreksamen 49104 12. januar 2001. Skriftelig prøve den 12. januar 2001 Kursusnummer 49104
Skriftelig prøve den 12. januar 2001 Kursusnummer 49104 Kursusnavn: Programmering. Tilladte hjælpemidler: Alle skriftlige hjælpemidler Opgavesættet består af fire opgaver, der har følgende vægtning: Opgave
Læs mereVideregående Programmering Obligatorisk opgave - 3. semester, efterår 2004
Overvågningssystem Beskrivelse Bagagesorteringssystemet består af et antal skranker (check-in) til modtagelse og registrering af bagage, et automatiseret sorteringsanlæg samt et antal terminaler (gates),
Læs merePrepared Statements. Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC.
Denne guide er oprindeligt udgivet på Eksperten.dk Prepared Statements Denne artikel beskriver hvorfor prepared statements er gode. Den forudsætter lidt kendskab til Java og JDBC. Skrevet den 18. Feb 2010
Læs mereNote om RMI af Peter Kjærsgaard
Note om RMI af Peter Kjærsgaard 1. Filosofi Filosofien i RMI er, at et objekt på en server skal kunne kaldes fra en klient, som om server-objektet lå på klienten. RMI er dermed på et højere niveau end
Læs mereRigtig SQL Programmering
Rigtig SQL Programmering 1 SQL i Rigtige Programmer Indtil nu har vi brugt SQL direkte i kommandolinje promt/gui program, hvor vi kan lave forespørgsler til databasen I virkeligheden: Programmer kontakter
Læs mereRMI med BlueJ. Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007
RMI med BlueJ Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 11. desember 2007 Hvad er RMI? Når man arbejder med Distribuerede Systemer, som igen vil sige at man ønsker at flere end én komputer
Læs mereGeografisk lokalisering i JSP
Denne guide er oprindeligt udgivet på Eksperten.dk Geografisk lokalisering i JSP Denne artikel forklarer lidt om hvorfor og hvordan man laver geografisk lokalisering og viser noget kode. Der er andre artikler
Læs mereDM01 DM01. 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk. D12, Elias 18/3-2003. Side 1 af 11
DM01 DM01 3. Obl. Afl. Jacob Christiansen, 130282, jacob.ch@mail.tdcadsl.dk D12, Elias 18/3-2003 Side 1 af 11 DM01 Indholdsfortegnelse: BILAG:...2 1 FORMÅL:...3 2 KLASSER:...4 2.1 DILEMMA:...4 2.1.1 METODER:...4
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 6 Komponenter (og lidt Swing og MVC) Læsning: VP 4, evt. VP 6 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html Grafiske komponenter
Læs mereI profil-feltet kan imastra-kunder vælge om upload skal ske ligesom filerne var indsendt til mailboksen eller
Upload fil Upload fil skal ses som et alternativ til at indsende tællefiler vedhæftet til mails Upload fil kan være en hurtigere og mere håndholdt måde at få data ind i Mastra på. Man starter med via Gennemse
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 3 Skabende designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Eksempel: Forskellige slags
Læs mereSerialization i Java
Serialization i Java Tutorial lavet af Jákup W. Hansen TSU 2006 1.semester 06.novemter 2006 Hvad er Serialization? I vores tekstbog Objects First with Java bliver denne del af Java ikke gennemgået. Men
Læs mereComputer netværk og TCP/IP protokoller. dcomnet 1
Computer netværk og TCP/IP protokoller dcomnet 1 Maskinarkitektur.. fokus på intern organisation af en enkelt computer: dcomnet 2 Computer netværk.. kommunikation mellem maskiner forbindet i et netværk:
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11
DM503 Forelæsning 11 Generics Pakker Exceptions Indhold Generics Nedarvning og Generics Generics Nedarvning og Generics Husk Box fra sidst Generics public class Box {! private T object;! public void
Læs mereEn kort introduktion til JDBC
En kort introduktion til JDBC af Henrik Bulskov Datalogi Roskilde Universitetscenter 22. marts 2001 JDBC er et generelt klassebibliotek til kommunikation med databaser. Det er ikke målrettet en bestemt
Læs mereUgeseddel 4 1. marts - 8. marts
Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,
Læs mereDag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
Læs mereOutline. Chapter 4 Remote Procedure Calls and Distributed Transactions. Remote Procedure Call. Distributed Transaction Processing.
Prof. Dr.-Ing. Stefan Deßloch AG Heterogene Informationssysteme Geb. 36, Raum 329 Tel. 0631/205 3275 dessloch@informatik.uni-kl.de Chapter 4 Remote Procedure Calls and Distributed Transactions Outline
Læs mereWebserverprogrammering
Webserverprogrammering WSP fortsat - dag 11 Behandling af XML (StAX) Syndikering og RSS med XML JAXB - XML Java-objekter Projekthjælp Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html
Læs mereUniversity of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2
DM502 Forelæsning 2 Repetition Kompilere og køre Java program javac HelloWorld.java java HeloWorld.java Debugge Java program javac -g HelloWorld.java jswat Det basale Java program public class HelloWorld
Læs mereKursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing
Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt
Læs mereComputer netværk og TCP/IP protokoller. dcomnet 1
Computer netværk og TCP/IP protokoller dcomnet 1 Maskinarkitektur.. fokus på intern organisation af en enkelt computer: dcomnet 2 Computer netværk.. kommunikation mellem maskiner forbindet i et netværk:
Læs mere//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!
Denne guide er oprindeligt udgivet på Eksperten.dk Brugerinput i Java Denne her artikel gennemgår diverse ting ved brug af brugerinput i Java. Den starter med det simple og fortæller derefter skridt for
Læs mereimport java.awt.event.*; import java.awt.*; Container <- Panel <- Applet Component <- Button <- Checkbox <- ScrollPane <- Label
Programmering 1999 Forelæsning 13, tirsdag 12. oktober 1999 Oversigt Grafiske brugergrænseflader. Komponenter: Knapper, tekstfelter, checkbokse... Vinduer (containere). Hændelser, hændelsesstyret programmering.
Læs mereIntroduction til.net remoting i C#
Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i C# Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i C#. Den forudsætter kendskab
Læs mereA Profile for Safety Critical Java
A Profile for Safety Critical Java Martin Schoeberl Hans Søndergaard Bent Thomsen Anders P. Ravn Præsenteret af: Henrik Kragh-Hansen November 8, 2007 Forfatterne Martin Schoeberl Udvikler af JOP processoren
Læs mereGrundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering
Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af
Læs mere9.8 Kildekode. side 88. Pakke Klasse Sidenummer. fortsætter..
9.8 Kildekode Pakke Klasse Sidenummer db Aktivitetstype 91 Behandler 91 ConnectDB 92 DagensKommentar 93 Helligdag 94 IkkePrimaerTid 94 Patient 96 Patientaftale 96 PatientAktivitet 97 Patientgruppe 98 PatientgruppeItem
Læs mereComputer Networks Specielt om Infrastrukturer og Teknologi
Computer Networks Specielt om Infrastrukturer og Teknologi Ole Borch Slide 1 Doc Bud på arkitektur (som mange andre steder) Sygehus Hemmelig Meget hemmelig WWW browser WWW Server Dataplejer Staklen Internet
Læs mereObjektorienterede metoder
Objektorienterede metoder Denne gang: Designmønstre Skabende designmønstre: Fabrikeringsmetode/Fabrik, Singleton, Abstrakt fabrik (Toolkit), Prototype, Objektpulje Singleton eksempel: Forskellige slags
Læs mereAssignment #5 Toolbox Contract
Assignment #5 Toolbox Contract Created by: René Kragh Trine Randløv E mail address cph rk70@cphbusiness.dk 23 11 2014 1 Introduktion Dette dokument indeholder en vertikal kontrakt for et system som skal
Læs mereIntegrationsmanual. Anvendelse af webservice til kursusoversigt i Campus. Brugervejledning til udviklere
Integrationsmanual Anvendelse af webservice til kursusoversigt i Campus Brugervejledning til udviklere Moderniseringsstyrelsen Webservice manual til udviklere 2016 1 1. Indholdsfortegnelse Nyt kapitel
Læs mereDen forudsætter kendskab til C++ og lidt kendskab til SQL og MySQL C API.
Denne guide er oprindeligt udgivet på Eksperten.dk Brug af MySQL i C++ Denne artikel bygger ovenpå artiklen "MySQL C API" og forklarer hvordan man kan programmere mere objekt orienteret. Den forudsætter
Læs mereIntroduction til.net remoting i VB.NET
Denne guide er oprindeligt udgivet på Eksperten.dk Introduction til.net remoting i VB.NET Denne artikel beskriver teorien bag.net remoting og viser nogle simple kode eksempler i VB.NET. Den forudsætter
Læs meredmasark Aflevering - Uge 50
dmasark Aflevering - Uge 50 Michael Lind Mortensen, 20071202, DAT4 Michael Dahl, 20073943, DAT4 Katalog: http://www.daimi.au.dk/ u073943/dmasark/uge6/ 13. december 2007 Indhold 1 PingClient implementation
Læs mereEksempel: Skat i år 2000
Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)
Læs mereHvordan vælger jeg dokumentprofilen?
Hvordan vælger jeg dokumentprofilen? Valget af OIOUBL profil i en konkret dokumentudveksling vil bl.a. afhænge af, hvilke OIOUBL profiler den anden part i udvekslingen understøtter. Et konkret eksempel
Læs mereDM34-1. Obligatorisk opgave Dilemma spillet. Jacob Aae Mikkelsen 191076 kok04
DM34-1. Obligatorisk opgave Dilemma spillet Jacob Aae Mikkelsen 191076 kok04 April 2005 Kapitel 1 Resumé Denne rapport dokumenterer udviklingsforløbet og afprøvningen af et spil Dilemma. Spillet går ud
Læs mereJacob Nordfalk. Ingeniørhøjskolen i København. Nykøbing F itvisioncenter 24. februar 2004
Genbrugelige komponenter og designmønstre i Java Jacob Nordfalk Ingeniørhøjskolen i København Nykøbing F itvisioncenter 24. februar 2004 Program Om Jacob Nordfalk introduktion (ikke-teknisk del) Komponentbaseret
Læs meremed Java og Linux Jacob Nordfalk Linuxforum 2004 Lørdag 6. marts 17.00-17.45 Center for Videreuddannelse Ingeniørhøjskolen i København
Webprogrammering med Java og Linux Jacob Nordfalk Center for Videreuddannelse Ingeniørhøjskolen i København Linuxforum 2004 Lørdag 6. marts 17.00-17.45 Program Om Jacob Nordfalk Reklame Intro til Java
Læs mereEksamen, DSDS, efterår 2008
Eksamen, DSDS, efterår 2008 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech IT Universitetet i København 6. januar 2009 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler.
Læs merePROJEKT 3. The Design Diaries. LINK TIL BLOG: Af Mikkel Borg Svendsen & Sebastian Frank MUL B
PROJEKT 3 The Design Diaries LINK TIL BLOG: http://mbsgraphic.dk/blog/ Af Mikkel Borg Svendsen & Sebastian Frank MUL B 1 INDHOLDS- FORTEGNELSE HVEM ER BLOGGERNE? 3 USE CASE 4 ATTRIBUT TABEL 5 PHP CODE
Læs mereKlienten. import java.util.*;
Klienten import java.util.*; * Aktiviteter er et model element, som indeholder blandt andet psimetiks beskrivleser. * @author rling public class Aktivitet extends Beholder implements HarEOgA, HarTilknytning,
Læs mereKursus navn: Indledende programmering Kursus nr. 02101
Danmarks Tekniske Universitet Side 1 af 8 sider Skriftlig prøve, den 15. december 2007 Kursus navn: Indledende programmering Kursus nr. 02101 Tilladte hjælpemidler: Alle skriftlige hjælpemidler Vægtning
Læs mereSoftware Construction 1 semester (SWC) Spørgsmål 1
Spørgsmål 1 Objekter #1 Giv en kort præsentation af begrebet objekt, samt hvorledes du erklærer(declare), opretter(create) og bruger objekter Du kan beskrive o Datatyper o Variable / Instans variable /
Læs mere1 Domæne 2 1.1 Design valg... 2 1.1.1 User... 2. 2 Klassediagran 5
INDHOLD 1 Domæne 2 1.1 Design valg.................................... 2 1.1.1 User.................................... 2 2 Klassediagran 5 3 Serbio 7 3.1 Kommunikation..................................
Læs mereDag 10 Flertrådet programmering
Videregående programmering i Java Dag 10 Flertrådet programmering Fremlæggelse af programmering/status for projekter Dokumentation med javadoc Flertrådede designmønstre: Arbejdstråd, Producent Konsument,
Læs mereEksamens spørgsmål i Java HTML - DataBase 3. Semester (i)
Eksamens spørgsmål i Java HTML - DataBase 3. Semester (i) 1: KLASSE METODE KONSTRUKTØR EKS. PÅ TYPE (VARIABLE) PUBLIC/PRIVATE OBJECT UD FRA KLASSE KALD METODE TILFØR PARAMETER TIL METODE RETURNERE VARIBEL.
Læs mereBemærk! Et PHP script har kun brug for at forbinde én gang til databaseserveren. Det kan så sagtens udføre flere kommandoer vha. denne forbindelse.
Mysqli Webintegrator Når vi arbejder med server-side scripting ( i vort tilfælde PHP), har vi ofte behov for at kunne tilgå data, som vi opbevarer i en database. Det kan f.eks. dreje sig om nyhederne i
Læs mereIntroduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002
Introduktion til Oracle, Datalogi, RUC Af: Jens Lauterbach (jeans@ruc.dk) 2002 På datalogi har vi en databaseserver, som de studerende på datalogi kan benytte til projekter og som også benyttes i forbindelse
Læs mereSigmaT.
Java + Groovy Disposition Om SigmaT Eksempel på indlejring af Groovy Overvågning af PEM Ønske om dynamisk loaded Java uden at fifle med classloaderen Groovy til hjælp Opsamling hvad jeg ikke har fortalt
Læs mereServlets, Tomcat & BlueJ
Servlets, Tomcat & BlueJ Tutorial lavet af Jákup W. Hansen TSU 2006 3.semester 05.october 2007 Hvad er Servlets: For at forstå det, må vi først få styr på to begreber, nemlig statiske og dynamiske hjemmesider
Læs mereJava web applikationer med Tomcat
Denne guide er oprindeligt udgivet på Eksperten.dk Java web applikationer med Tomcat Denne artikel beskriver hvordan man kan konfigurere container managed security og en database connection pool i Tomcat.
Læs mereSWC eksamens-spørgsmål. Oversigt
SWC eksamens-spørgsmål Oversigt #1 Typer og variable #2 Aritmetik og logik #3 Klasser (definition, objekter) #4 Klasser (metoder) #5 Klasser (nedarvning, polymorfi) #6 Conditional statements #7 Repetition
Læs mereBookie. IT-Universitetet i København. Grundlæggende Programmering. Eksamensprojekt. Forfattere: Sigrid Gyldenkærne Dalsgard Kasper Kronborg Isager
IT-Universitetet i København Grundlæggende Programmering Eksamensprojekt Bookie Forfattere: Sigrid Gyldenkærne Dalsgard Kasper Kronborg Isager Vejleder: Jesper Wendel Madsen 17. december 2014 Resumé Indhold
Læs mereSingleton pattern i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Singleton pattern i Java Denne artikel beskriver Singleton pattern og implementation i Java. Den forudsætter kendskab til Java men ikke til Singleton.
Læs mereLøsning af skyline-problemet
Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle
Læs mereeducasoft - en professionel samarbejdspartner med speciale i uddannelse!
Velkommen til educasoft's hjemmeside educasoft - en professionel samarbejdspartner med speciale i uddannelse! Professionelle undervisere Undervisning i virksomheden Undervisning dag/aften eller week-end
Læs mereBRP 6.9.2006 Kursusintroduktion og Java-oversigt
BRP 6.9.2006 Kursusintroduktion og Java-oversigt 1. Kursusintroduktion 2. Java-oversigt (A): Opgave P4.4 3. Java-oversigt (B): Ny omvendings -opgave 4. Introduktion til næste kursusgang Kursusintroduktion:
Læs mereIndhold. 3 Language Pattern 14 3.1 Motivation... 14 3.2 Problem... 14 3.3 Løsning... 14
Indhold 1 Brugsmønster #07 Køb af rejser 3 1.1 Analyse af brugsmønster billetkøb........................ 3 1.2 Design af billetautomat.............................. 4 1.2.1 Distribueret model.............................
Læs mereBilagsrapport til specialet Flash-light
Bilagsrapport til specialet Flash-light Af Filip Nicolaisen og Kasper Storm Afleveret Maj 2006 Vejledere: Mads Rosendahl (Datalogi) Bjørn Laursen (Kommunikation) Indholdsfortegnelse - Bilag Bilag 1. 1
Læs mereHvordan organiseres et programs grafik-elementer? OOP e uge kursusgang. Advarsel! Component-objekter
OOP e2002 - uge 42 6. kursusgang Hvordan organiseres et programs grafik-elementer? 1. Teori: class Component og subklasser: Composite pattern layout-managere hændelsesstyret programmering 2. XP-program:
Læs merePHP 3 UGERS FORLØB PHP, MYSQL & SQL
PHP 3 UGERS FORLØB PHP, MYSQL & SQL Uge 1 & 2 Det basale: Det primære mål efter uge 1 og 2, er at få forståelse for hvordan AMP miljøet fungerer i praksis, og hvordan man bruger PHP kodesproget til at
Læs mereDe vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML
SQL kap 6-7 + 17-20 DDL og DML 1 De vigtigste SQL-sætninger Data Definition Language (DDL) create table: opretter en ny tabel create unique index: tilføjer et index til en tabel drop table : sletter en
Læs mereSikker netværkskommunikation
Eksamensprojekt IT Sikker netværkskommunikation Af Nicklas Bo Jensen Klasse 3.4 RTG Vejleder: Piotr Dzierzynsky Side 1 af 14 Indholdsfortegnelse Indledning... 3 Netværk... 4 Sniffing... 4 Løsning... 6
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 5 Model View Controller arkitekturen Model View Controller arkitekturen (MVC) Evt.: Rekursion Læsning: VP 19 Dette materiale er under Åben Dokumentlicens, se http://www.sslug.dk/linuxbog/licens.html
Læs mereNye features i Java 1.7/7.0
Denne guide er oprindeligt udgivet på Eksperten.dk Nye features i Java 1.7/7.0 Denne artikel beskriver nye features i Java 1.7/7.0, som blev releaset 28. juli 2011. Den forudsætter et vist kendskab til
Læs mereEn Kort Introduktion til Oracle
En Kort Introduktion til Oracle Henrik Bulskov 12. februar 2001 bulskov@ruc.dk 1 Start SQL*Plus... 1 1.1 TELNET... 1 1.2 WINDOWS SQL PLUS... 2 2 Kør et SQL-script... 3 3 Hjælp i SQL*Plus... 3 4 Editering
Læs mereThreads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java
Denne guide er oprindeligt udgivet på Eksperten.dk Threads i Java Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java Den forudsætter
Læs mereapplikation----x----odbc driver manager----foobar ODBC driver----foobar database
Denne guide er oprindeligt udgivet på Eksperten.dk ODBC i C/C++ Denne artikel beskriver hvordan man bruger ODBC i C/C++. Der er beskrivelse af build med forskellige compilere. Den forudsætter lidt kendskab
Læs mereSikring af netværkskommunikation
Sikring af netværkskommunikation Som udgangspunkt kan sikring af en netværkskommunikation foretages på et vilkårligt lag i netværksprotokolstakken. Hvis vi ser på TCP/IP protokolstakken vil det sige at
Læs mereReeksamen, DSDS, forår 2008
Reeksamen, DSDS, forår 2008 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech IT Universitetet i København 22. august 2008 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler.
Læs mereDesign by Contract. Design and Programming by Contract. Oversigt. Prædikater
Design by Contract Design and Programming by Contract Anne Haxthausen ah@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark Design by Contract er en teknik til at specificere
Læs mereCommon Language Runtime. Multithreading
Common Language Runtime Multithreading Multithreading i.net Dedicated threads Programmøren kontrollerer starttidspunkt, levetid m.m. for den enkelte thread. Pooled threads Threads lånes fra en pulje af
Læs mereJEM1 LAB14. Journal. Jonas Lange, Martin Funding Fisker og Torben Porsgaard 11/4/2009
JEM1 LAB14 Journal Jonas Lange, Martin Funding Fisker og Torben Porsgaard 11/4/2009 Denne journal er fremstillet i forbindelse med udarbejdelsen af en J2ME applikation der holder og persisterer links og
Læs mereAffaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere
Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere Dokument version: 2.0 ADS version: 1.0 Henvendelse vedrørende affald: Miljøstyrelsen Roskilde, Affaldssekretariatet
Læs mereb) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.
Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning
Læs mereGoogle App Engine. Google App Engine som platform. Claus Myglegaard Vagner og Jacob von Eyben
GoogleAppEngine GoogleAppEnginesomplatform ClausMyglegaardVagnerogJacobvonEyben Abstract CloudcomputingerenteknologidervinderfremidengenerelleITinfrastruktur. SocialemediersåsomLinkedIn,TwitterogFacebookharøgetbehovetfor
Læs mereData load og udtræk. 2. iteration: implmentation (test af backend) PHP mysql. Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON
Data load og udtræk 2. iteration: implmentation (test af backend) 1 PHP mysql Loade og parse XML (SimpleXML, Xpath) Filhåndtering i PHP JSON 2 Data udtræk PHP mysql: Processen 1. Forbind til MySQL server
Læs mereEksamen, DSDS, forår 2009
Eksamen, DSDS, forår 2009 Introduktion til Scripting, Databaser og Systemarkitektur Jonas Holbech IT Universitetet i København 3. juni 2009 Alle hjælpemidler er tilladte, dog ikke computer og kommunikationsmidler.
Læs mereData lagring. 2. iteration (implement backend)
Data lagring 2. iteration (implement backend) Emner Grundlæggende database begreber. Data definitionskommandoer ER-diagrammer og cardinalitet/relationer mellem tabeller Redundant data og Normalisering
Læs mereIndholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:...
Indholdsfortegnelse Databaser og PHP... 3 Opgave... 4 Opgave... 5 Opgave... 6 Sidste opgave er en lille gæstebog... 7 Kilder og nyttige links:... 9 Nogle HTML tags... 9 Databaser og PHP Når vi snakker
Læs mereTest af It-komponent
Test af It-komponent I programmeringssproget Java Programmet Login service Elev: Mads Funch Klasse 2.4 Mat, It, Programmering Skole: Roskilde Tekniske Gymnasium HTX Underviser: Karl Dato: 31-08-2016 Side
Læs mereVideregående programmering i Java
Videregående programmering i Java Dag 7 Swing og MVC Swing: MVC, Datamodeller, JTable, evt. JTree Evt.: Swing: Præsentations og kontroldel Læsning: VP 6 Dette materiale er under Åben Dokumentlicens, se
Læs mereSIP. Session Initiation Protocol. TDC IP telefoni Scale
SIP Session Initiation Protocol TDC IP telefoni Scale SIP design mål Give mulighed for at integrere nye faciliteter efterhånden som de opfindes SIP er ikke en erstatning for det offentlige telefonnet -
Læs mereInteraktionsudvikling
Projektopgave 3: Interaktionsudvikling CPH business, klasse: MulA2013 Projektansvarlige undervisere Thomas Hartmann MereteGeldermann lützen: Projekt produkt url: www.amalieardahl.dk/projekt3/index.html
Læs merePerspektiverende Datalogi Internetalgoritmer. MapReduce. Gerth Stølting Brodal
Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal MapReduce Implementationer Dean, F. and Ghemawat, S. (2004) MapReduce: Simplified Data Processing on Large Clusters. In: Sixth
Læs mereLøsning af møntproblemet
Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet
Læs merePræsentation af BSK regionens identity and access management platform
Regionshuset It digital forvaltning BSK programmet Olof Palmens alle 17 Kontakt@regionmidtjylland.dk www.regionmidtjylland.dk Præsentation af BSK regionens identity and access management platform BrugerStamdataKataloget
Læs mereSIP. Session Initiation Protocol TDC IP telefoni Scale. SIP design mål
Session Initiation Protocol TDC IP telefoni Scale design mål Give mulighed for at integrere nye faciliteter efterhånden som de opfindes er ikke en erstatning for det offentlige telefonnet - er helt sin
Læs mereKursus i OOP og Java. Kursus i Objektorienteret programmering i Java
Kursus i OOP og Java Kursus i Objektorienteret programmering i Java Åben Dokumentlicens Dette foredragsmateriale er under Åben Dokumentlicens (ÅDL) Du har derfor lov til frit at kopiere dette værk Bruger
Læs mereTree klassen fra sidste forelæsning
Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years
Læs mere