Enterprise Java Beans. Thomas van Husen

Größe: px
Ab Seite anzeigen:

Download "Enterprise Java Beans. Thomas van Husen"

Transkript

1 Enterprise Java Beans Thomas van Husen 1

2 Standard Edition J2SE Java Enterprise Edition J2EE 1.3 2

3 J2EE 1.3 packages Package App Client Applet Web EJB JDBC 2.0 JA N JA JA Extension EJB 2.0 JA N JA JA EJB 2.0 Servlets Servlets N N JA N JSP 1.2 N N JA N JSP 1.2 JMS 1.0 JA N JA JA JMS JTA 1.0 N N JA JA JavaMail 1.2 N N JA JA JAF 1.0 N N JA JA JAXP JAXP JA N JA JA Connector 1.0 N N JA JA JAAS JAAS JA N JA JA 3

4 Applet Container J2EE Architecture Applet Webcontainer EJB Container J2SE JSP Servlet EJB Application Client Container Application Client JTA JAAS JMS Java Mail JAF J2SE Connectors JAXP JDBC JTA JAAS JMS Java Mail JAF J2SE Connectors JAXP JDBC DB JDBC JAXP JAAS JMS J2SE 4

5 Firewall Client Client J2EE Environment EJB Container Entity Bean Session Bean Entity Bean Enterprise Information System Client Client Web Container Servlets JSP, HTML Database ERP Legacy Applications Client Tier Middle Tier EIS Tier 5

6 J2EE Application Scenarios Browser Web Container EJB Container Stand-Alone Client Database 6

7 EJB Enterprise Java Beans EJB Container Kunde Entity Bean Client A Kunde Remote Object JDBC Client B Kunde Remote Object Kunde Nr... Kunde Name 5153 Weka Bau... Ort Stuttga rt 7

8 Presentation Tier EJB Container Kunde Entity Bean Browser A Browser B Web Container Page Session B Model Controller Session A Model JDBC Gui Client A Kunde Remote Object Kunde Nr... Kunde Name Ort Gui Client B Kunde Remote Object 5153 Weka Bau... Stuttga rt 8

9 Enterprise Beans Client Home Remote Home EJB Container Product Order Callback Methoden: Jede Bean implementiert einen Subtyp des EnterpriseBean Interfaces, das verschiedene Methoden definiert, die "Callbacks" genannt werden. Jede Callback Methode instruiert die Bean über einen bestimmten Event in ihrem Lebenszyklus. Der Container ruft diese Methoden auf, wenn die Bean aktiviert wird, wenn sie gespeichert werden soll, wenn sie passiviert wird usw. Die Bean kann in den Callback Methoden das Ihrige tun, um dem jeweiligen Event gerecht zu werden. Remote 9

10 Enterprise Beans Client Home create() Remote neworder() selectcustomer() addline() EJB Container Order Controller Session Bean Home Interface Remote Interface Implementierung Home findbyprimarykey() Remote getdetail() setdetail() Product Enitity Bean 10

11 Client EJB Container EJB Container Bean Transaktion Management Persistence Management Security Management Jndi ENC, EJBContext Callback Methods Der Container isoliert die Enterprise Bean gegen den direkten Zugriff eines Clients. Wenn eine Client Anwendung eine "remote" Methode einer Bean aufruft, fängt der Container diesen Aufruf ab und sichert die Belange von Persistenz, Transaktionsmanagement und Security. Security, Transaktionssteuerung und Persistenz werden vom Container automatisch gesteuert, ohne dass sich der Client darum kümmern muss. Callback Methoden: Jede Bean implementiert einen Subtyp des EnterpriseBean Interfaces, das verschiedene Methoden definiert, die "Callbacks" genannt werden. Jede Callback Methode instruiert die Bean über einen bestimmten Event in ihrem Lebenszyklus. Der Container ruft diese Methoden auf, wenn die Bean aktiviert wird, wenn sie gespeichert werden soll, wenn sie passiviert wird usw. Die Bean kann in den Callback Methoden das Ihrige tun, um dem jeweiligen Event gerecht zu werden. 11

12 Entity und Session Beans Entity Bean EJB Container Customer Product Order zwei grundsätzliche Typen von Enterprise Beans: Entity Beans und Session Beans. Entity Beans stehen für Objekte, die persistent in einer Datenbank gehalten werden, und können typischerweise mit einem Substantiv bezeichnet werden. Session Beans repräsentieren hingegen Prozesse und Aufgaben. Kandidaten für Session Beans sind Objekte, die mit Verben bezeichnet werden.. Session Bean Order Controller 12

13 Session Entity Beans EJB Container Kunde Entity Bean Browser A Browser B Web Container Kunde Remote Auftrag Remote Auftrag Remote Kunde Remote Auftrag Session Bean A Auftrag Session Bean B Gui Client C Auftrag Remote Object Kunde Remote Object Auftrag Session Bean C Gui Client D Kunde Remote Auftrag Object Remote Object Auftrag Session Bean D 13

14 Bean Entity Bean Product Home Interface create(5153, Cotes du Rhone, 7.80) Remote Interface setprice(...) getprice() int id String name; double price; ejbcreate(...) setprice(double d) { price = d; getprice() { return price; Product ID... Product Name 5153 Cotes du Rhone... Preis

15 Entity Bean ejbcreate der create() Methode auf dem Home Interface entspricht immer eine ejbcreate() Methode in der Bean die ejbcreate() Methode der Bean enthält (bei BMP) den SQL Code (oder DAO Aufruf), um den Record, der die Bean persistent repräsentiert, der Datenbank hinzuzufügen durch das create() auf dem Home Interface erhält der Client ein Remote Interface, das die einzelne erzeugte Bean repräsentiert und durch das der Client Methoden der Bean aufrufen kann das Remote Interface enthält keine Methode Save 15

16 Product Table MEASUREUNIT MEASUREUNITID CHAR(3) MEASUREUNITDESC CHAR(50) PRODUCT PRODUCTNUM NUMERIC(7) PRODUCTDESC CHAR(50) PRICE DECIMAL(15,2) MEASUREUNITID CHAR(3) MEASUREUNITID = MEASUREUNITID create table PRODUCT ( PRODUCTNUM NUMERIC(7) not null, PRODUCTDESC CHAR(50), PRICE DECIMAL(15,2), MEASUREUNITID CHAR(3), primary key (PRODUCTNUM) ); 16

17 public class ProductEJBBean implements EntityBean { private int id; private String desc; private double price; private String measureunitid; Product Bean Impl public EntityContext context; public ProductPK ejbcreate (String desc, double price, String measureunitid) throws CreateException, DuplicateKeyException {

18 Product ejbcreate() - 1 public ProductPK ejbcreate (String desc, double price, String measureunitid) throws CreateException, DuplicateKeyException { this.desc = desc; this.price = price; this.measureunitid = measureunitid; String sql = "insert into PRODUCT " + "(" + "PRODUCTNUM, PRODUCTDESC, PRICE, MEASUREUNITID" + ") " + "values " + "(" + "?,?,?,? " + ")"; Connection dbconnection = null; PreparedStatement stmt = null; try { try {... 18

19 ... try { try { finally { Product ejbcreate() - 2 dbconnection = getdbconnection(); this.id = getmaxproductnumber(dbconnection) + 1; stmt = dbconnection.preparestatement(sql); int i = 1; stmt.setint(i++, this.id); stmt.setstring(i++, this.desc); stmt.setdouble(i++, this.price); stmt.setstring(i++, this.measureunitid); if (stmt.executeupdate() == 1) return new ProductPK(this.id); else throw new CreateException("Error creating Product"); if (stmt!= null) stmt.close(); if (dbconnection!= null) dbconnection.close(); catch (java.sql.sqlexception e) { throw new EJBException (e); 19

20 Entity Bean ejbcreate() Aufgaben in der ejbcreate() Methode müssen: die Instanzvariablen der Bean gesetzt werden das Objekt der Datenbank (per JDBC) hinzugefügt werden die Werte, die zum Erstellen des Objekts notwendig sind, erhält die ejbcreate() Methode als Parameter bei Erfolg gibt ejbcreate() den Primary Key zurück (auf dem Home Interface gibt die entsprechende create() Methode das Remote Object zurück) auftretende SQLExceptions (sind Subsystem Exceptions) werden in EJBExceptions (sind RuntimeExceptions) umgewandelt und geworfen 20

21 public class ProductPK implements java.io.serializable { private final int id; public ProductPK(int id) { this.id = id; public int getid() { return id; public boolean equals(object o) { if (this == o) return true; if (!(o instanceof ProductPK)) // will also return false when o == null return false; ProductPK other = (ProductPK) o; return this.id == other.id; public int hashcode() { return id; public String tostring() { return "[" + getclass().getname() + ": " + id + "]"; Product Primary Key 21

22 Entity Bean Primary Key Aufgaben jede Entity Bean hat einen Primary Key im genannten Beispiel wäre es nicht notwendig gewesen, eine eigene Klasse als Primary Key zu verwenden in der Praxis sind Primary Keys wegen der Zusammensetzung aus mehreren DB Feldern (Mandant etc.) jedoch immer eigene Klassen die PK Klasse muss das Interface java.io.serializable haben die equals() Methode von java.lang.object muss überschrieben werden und damit auch die hashcode() Methode die Klasse sollte als Immutable codiert werden (alle Instanzvariable final) 22

23 <ejb-jar> <enterprise-beans> <entity> </entity> <description>product</description> <ejb-name>productejb</ejb-name> <home>schulung.app.product.productejbhome</home> <remote>schulung.app.product.productejb</remote> <ejb-class>schulung.app.product.productejbbean</ejb-class> <persistence-type>bean</persistence-type> <prim-key-class>schulung.app.product.productpk</prim-key-class> <reentrant>false</reentrant>... Primary Key im Deployment Descriptor die Primary Key Klasse wird im Deployment Descriptor der Bean eingetragen 23

24 private java.sql.connection getdbconnection() { InitialContext jndicontext; javax.sql.datasource ds; try { Database Connection jndicontext = new InitialContext(); ds = (javax.sql.datasource) jndicontext.lookup("java:comp/env/jdbc/edu"); java.sql.connection con = ds.getconnection("sa", ""); return con; catch (javax.naming.namingexception e) { e.printstacktrace(); throw new javax.ejb.ejbexception(e); catch (java.sql.sqlexception e) { e.printstacktrace(); throw new javax.ejb.ejbexception(e); 24

25 Database Connection Aufgaben Die JDBC Connection wird prinzipiell aus einer DataSource genommen. Die DataSource wird über JNDI Lookup aufgefunden. Dies ist möglich, weil der EJB Container die DataSource in seinem JNDI Service zuvor registriert hat entsprechend seiner (Container spezifischen Konfigurations) Einstellungen und der (J2EE Standard) Angaben im Deployment Descriptor Dadurch dass die Connection nicht direkt mit dem JDBC Driver erstellt, sondern aus einer vom Container zur Verfügung gestellten Datasource gezogen wird, kann der Container seine Services wie Connection Pooling und Transaktionssteuerung injizieren. Bei Connection Pooling müssen im Anwendungscode Connections immer gleich wieder geschlossen werden. 25

26 <ejb-jar> <enterprise-beans> <entity> </entity> <description>product</description> <ejb-name>productejb</ejb-name> <home>schulung.app.product.productejbhome</home> <remote>schulung.app.product.productejb</remote> <ejb-class>schulung.app.product.productejbbean</ejb-class> <persistence-type>bean</persistence-type> <prim-key-class>schulung.app.product.productpk</prim-key-class> <reentrant>false</reentrant> <resource-ref> </resource-ref> Database Connection im Deployment Descriptor <description>datasource for Product EJB</description> <res-ref-name>jdbc/edu</res-ref-name> <res-type>javax.sql.datasource</res-type> <res-auth>container</res-auth> try { jndicontext = new InitialContext(); ds = (javax.sql.datasource) jndicontext.lookup("java:comp/env/jdbc/edu"); 26

27 Home Interface Bean Enterprise Bean Home, Remote, Impl Remote Interface int id String name; double price; ejbcreate(...) Jede Enterprise Bean besteht aus drei Klassen: Home Interface, Remote Interface und Bean Implementierung Ein Client kann immer nur das Home und Remote Interface verwenden, niemals die Bean selbst Der Container verwendet die Bean Implementierungsklasse Auf dem Client wird das Home Interface verwendet, um spezifische Instanzen zu erzeugen Das Home Interface gibt ein Remote Interface zurück. Das Remote Interface ist ein Proxy für die Bean im Container. Der Client kann transparent Methoden vom Remote Interface aufrufen, als wäre es ein lokales Objekt. 27

28 public static void main(string [] args) { try { Home Interface Remote Interface Properties p = new Properties(); p.setproperty(context.initial_context_factory, p.setproperty(context.provider_url, "org.jnp.interfaces.namingcontextfactory"); p.setproperty("java.naming.factory.url.pkgs", "localhost:1099"); "org.jboss.naming:org.jnp.interfaces"); InitialContext context = new InitialContext(p); Object ref = context.lookup("productejb"); ProductEJBHome productejbhome = // insert (ProductEJBHome) PortableRemoteObject.narrow(ref, ProductEJBHome.class); ProductEJB productcrt = productejbhome.create("cotes du Rhone", 7.8, "fl"); System.out.println("Product: id=" + productcrt.getid() + ", desc=" + productcrt.getdesc() + ", price=" + productcrt.getprice() + ", measureunitpk=" + productcrt.getmeasureunitpk() ); Client - Product Insert container spezifische Properties für Initial JNDI Context Name für Bean aus Deployment Descriptor 28

29 public static void main(string [] args) { try {... InitialContext context = new InitialContext(p); Object ref = context.lookup("productejb"); ProductEJBHome productejbhome = (ProductEJBHome) PortableRemoteObject.narrow(ref, ProductEJBHome.class);... Client - PortableRemoteObject.narrow Downcast und nicht: Object ref = context.lookup("productejb"); ProductEJBHome productejbhome = (ProductEJBHome) ref;... 29

30 Entity Bean ejbfindxxx Mit einer create() Methode auf dem Home Interface wird auf dem Server ein Objekt instantiiert und zugleich neu erzeugt d.h. mit der Instantiierung des Objekts ist ein neu Erstellen im persistenten Storage verbunden Objekte, die schon in der Datenbank vorhanden sind, werden dagegen durch Aufruf von find() Methoden auf dem Home Interface im Container Objekte instantiiert, d.h. in der Datenbank aufgefunden und als Bean Instanzen mit Datenbank Werten geladen einer findxxx() Methode auf dem Home Interface entspricht immer eine ejbfindxxx() Methode in der Bean jede Entity Bean muss mindestens eine findbyprimarykey() Methode auf dem Home Interface und eine ejbfindbyprimarykey() Methode in der Bean Implementierung haben 30

31 Bean Entity Bean Product find() Home Interface findbyprimarykey (5153) Remote Interface setprice(...) getprice() int id String name; double price; ejbfindbyprimarykey(...) setprice(double d) { price = d; getprice() { return price; Product ID... Product Name 5153 Cotes du Rhone... Preis

32 public static void main(string [] args) { try { Home Interface Remote Interface Properties p = new Properties();... InitialContext context = new InitialContext(p); Object ref = context.lookup("productejb"); ProductEJBHome productejbhome = (ProductEJBHome) PortableRemoteObject.narrow(ref, ProductEJBHome.class); // find by primary key ProductPK pk = new ProductPK(5); ProductEJB productejb; try { Client - Product find Primary Key productejb = productejbhome.findbyprimarykey(pk); catch (javax.ejb.finderexception e) { System.err.println("No object found for " + pk); return; System.out.println("Product: id=" + productejb.getid() + ", desc=" + productejb.getdesc() + ", price=" + productejb.getprice() + ", measureunitpk=" + productejb.getmeasureunitpk() ); 32

33 Product Home Interface public interface ProductEJBHome extends EJBHome { public ProductEJB create(string desc, double price, String measureunitid) throws RemoteException, CreateException, DuplicateKeyException; public ProductEJB findbyprimarykey(productpk productpk) throws RemoteException, FinderException; 33

34 public ProductPK ejbfindbyprimarykey(productpk pk) throws FinderException { Connection dbconnection = null; Statement stmt = null; ResultSet rs = null; String sql = "select PRODUCTNUM from PRODUCT " + "where PRODUCTNUM = " + pk.getid() ; try { try { dbconnection = getdbconnection(); stmt = dbconnection.createstatement(); rs = stmt.executequery(sql); if (rs.next()) { return pk; finally { else { Bean ejbfindbyprimarykey() throw new javax.ejb.objectnotfoundexception( "No product found in database for " + pk); if (dbconnection!= null) dbconnection.close(); Primary Key catch (java.sql.sqlexception e) { throw new EJBException ("SQL Exception in find by primary key" + e); 34

35 ejbfindbyprimarykey() Aufgaben Die Aufgabe der ejbfindbyprimarykey() Methode ist nur, den Primary Key, den die Methode schon als Parameter bekommen hat, zurückzugeben, falls ein entprechendes Objekt in der Datenbank vorhanden ist, d.h. im Grunde nur festzustellen, ob für den Primary Key ein Satz in der Datenbank vorhanden ist. Wird kein Satz in der Datenbank gefunden wird, muss die Methode eine FinderException werfen. Aufgabe ist nicht(!!!), die Werte aus der Datenbank zu laden und damit die Instanzvariablen zu setzen. Das ist Aufgabe der ejbload() Methode. 35

36 Bean ejbload() public void ejbload() { ProductPK pk = (ProductPK)context.getPrimaryKey(); Connection dbconnection = null; String sql = "select * from PRODUCT " + "where PRODUCTNUM = " + pk.getid() ; Statement stmt = null; ResultSet rs = null; try { try { dbconnection = getdbconnection(); stmt = dbconnection.createstatement(); rs = stmt.executequery(sql); if (rs.next()) { this.id = rs.getint("productnum"); this.desc = rs.getstring("productdesc"); this.price = rs.getdouble("price"); this.measureunitid = rs.getstring("measureunitid"); finally { if (rs!= null) rs.close(); if (stmt!= null) stmt.close(); if (dbconnection == null) dbconnection.close(); catch (java.sql.sqlexception e) { throw new EJBException (e); 36

37 ejbload() Aufgaben ejbload() kann nicht vom Client, sondern allein vom Container aufgerufen werden wann ejbload() aufgerufen wird, ist durch die Sequenzdiagramme der EJB Spezifikation geregelt (bei Find Sequenzen wird ejbload() nach ejbfindxxx aufgerufen und bevor der Client Methoden des durch die Find Methode erhaltenen Remote Interface aufruft) Aufgabe ist, mit dem Primary Key aus dem Entity Context die Werte für das Objekt aus der Datenbank zu laden und die Instanzvariablen zu setzen. 37

38 Enity Context public void setentitycontext(entitycontext context) { this.context = context; setentitycontext() ist eine Methode, die von der Bean implementiert werden muss. Sie wird vor ejbload() aufgerufen (genauer gesagt vor ejbactivate() oder vor ejbpostcreate()) Der Enity Context hat eine Methode getprimarykey(). Die getprimarykey() Methode gibt den Primary Key des EJB Objekts zurück, das mit der Bean Instanz assoziiert ist. 38

39 Product Remote Interface public interface ProductEJB extends EJBObject { public int getid() throws RemoteException; public String getdesc() throws RemoteException; public void setdesc(string desc) throws RemoteException; public double getprice() throws RemoteException; public void setprice(double price) throws RemoteException; public MeasureUnitPK getmeasureunitpk() throws RemoteException; public void setmeasureunitpk(measureunitpk measureunitpk) throws RemoteException; Das Remote Interface enthält keine Methode save. Wenn das Server Objekt durch eine setxxx() Methode verändert wurde, kann der Client davon ausgehen, dass das Objekt persistent geändert wurde. Er braucht sich um die Persistenz der Änderung nicht zu kümmern. 39

40 public void ejbstore() { ProductPK pk = (ProductPK)context.getPrimaryKey(); Connection dbconnection = null; String sql = "update PRODUCT set " + "PRODUCTNUM =?" + ", PRODUCTDESC =?" + ", PRICE =?" + ", MEASUREUNITID =?" + " where PRODUCTNUM = " + pk.getid(); PreparedStatement stmt = null; try { try { dbconnection = getdbconnection(); stmt = dbconnection.preparestatement(sql); int i = 1; stmt.setint(i++, this.id); stmt.setstring(i++, this.desc); stmt.setdouble(i++, this.price); stmt.setstring(i++, this.measureunitid); if (stmt.executeupdate() == 1) return; else throw new SQLException("Error on update"); finally { if (stmt!= null) stmt.close(); if (dbconnection!= null) dbconnection.close(); catch (java.sql.sqlexception e) { throw new EJBException (e); Bean ejbstore() 40

41 Implementierung der Business Methods Trivia public int getid() { return this.id; public String getdesc() { return this.desc; public void setdesc(string desc) { this.desc = desc; public double getprice() { return this.price; public void setprice(double price) { this.price = price; public MeasureUnitPK getmeasureunitpk() { return new MeasureUnitPK(this.measureUnitId); public void setmeasureunitpk(measureunitpk measureunitpk) { this.measureunitid = measureunitpk.measureunitid; 41

42 public class ProductEJBBean implements EntityBean { Entity Bean - Skelett public ProductPK ejbcreate (...) throws CreateException, DuplicateKeyException { // returns Primary Key Object // für jede create() Methode aus Home eine von der Signatur her passende // für einen Satz in die Datenbank, der die Bean repräsentiert // setzt die Instanz Variablen public void ejbpostcreate(...) { // EJB object identity ist jetzt verfügbar (EntityContext.getEJBObject()) public void ejbremove() throws RemoveException { // entfernt Satz aus Datenbank, der die Bean repräsentiert public void ejbload() { // synchronisiert Instanzvariable mit Satz aus Datenbank public void ejbstore() { // schreibt Zustand der Instanzvariablen in Datenbank public ProductPK ejbfindbyprimarykey(productpk pk) throws FinderException { // locates one entity object in the database public void setentitycontext(entitycontext context) { // container übergibt reference to EntityContext // bean allocates resources held for the bean's lifetime public void unsetentitycontext() { // Freigabe von Ressource, die allokiert wurden in setentitycontext public void ejbactivate() { // container associates EJB object identity with an instance // bean allocates additional resources needed in ready state public void ejbpassivate() { // container dissociates identity from instance // bean frees resources allocated in ejbactivate 42

43 Entity Bean Zustandsablauf 1 Client: ProductEJB productcrt = productejbhome.create("cotes du Bourgogne", 7.8, "fl"); log EJB Server: [Default] schulung.app.product.productejbbean: setentitycontext() null [Default] schulung.app.product.productejbbean: ejbcreate() null [Default] schulung.app.product.productejbbean: ejbpostcreate() [schulung.app.product.productpk: 104] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] Client: System.out.println("Product: id=" + productcrt.getid() + ", desc=" + productcrt.getdesc() + ", price=" + productcrt.getprice() + ", measureunitpk=" + productcrt.getmeasureunitpk() ); log EJB Server: [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] Client: productcrt.remove(); log EJB Server: [Default] schulung.app.product.productejbbean: ejbremove() [schulung.app.product.productpk: 105] 43

44 Client: ProductPK pk = new ProductPK(5); productejb = productejbhome.findbyprimarykey(pk); Entity Bean Zustandsablauf 2 log EJB Server: [Default] schulung.app.product.productejbbean: setentitycontext() null [Default] schulung.app.product.productejbbean: ejbfindbyprimarykey() [Default] schulung.app.product.productejbbean: found [schulung.app.product.productpk: 5] Client: System.out.println("Product: id=" + productejb.getid() + ", desc=" + productejb.getdesc() + ", price=" + productejb.getprice() + ", measureunitpk=" + productejb.getmeasureunitpk() ); log EJB Server: [Default] schulung.app.product.productejbbean: setentitycontext() null [Default] schulung.app.product.productejbbean: ejbactivate() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbload() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] Client: String desc = productejb.getdesc().trim(); log EJB Server: [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] Client: desc = desc + "-1"; productejb.setdesc(desc); log EJB Server: [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] 44

45 Deployment Descriptor ejb-jar.xml 1 <?xml version="1.0" encoding="utf-8"?> - <ejb-jar> <description>libra edu Enterprise Beans</description> <display-name>libra edu Enterprise Beans</display-name> - <enterprise-beans> - <entity> <description>product</description> <ejb-name>productejb</ejb-name> <home>schulung.app.product.productejbhome</home> <remote>schulung.app.product.productejb</remote> <ejb-class>schulung.app.product.productejbbean</ejbclass> <persistence-type>bean</persistence-type> <prim-key-class>schulung.app.product.productpk</prim-keyclass> <reentrant>false</reentrant> - <resource-ref> <description>datasource for Product EJB</description> <res-ref-name>jdbc/edu</res-ref-name> <res-type>javax.sql.datasource</res-type> <res-auth>container</res-auth> </resource-ref> </entity> 45

46 <?xml version="1.0" encoding="utf-8"?> - <ejb-jar> - <enterprise-beans>... </enterprise-beans> - <assembly-descriptor> - <container-transaction> - <method> <ejb-name>productejb</ejb-name> <method-name>*</method-name> </method> <trans-attribute>required</trans-attribute> </container-transaction> - <container-transaction> - <method> <ejb-name>productejb</ejb-name> <method-name>findbyprimarykey</method-name> </method> <trans-attribute>notsupported</trans-attribute> </container-transaction> - <container-transaction> - <method> <ejb-name>productejb</ejb-name> <method-name>getdetail</method-name> </method> <trans-attribute>notsupported</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar> Deployment Descriptor ejb-jar.xml 2 46

47 EJB Server Deployment edu.jar Jar File META-INF/ejb-jar.xml ProductEJB.class ProductEJBHome.class ProductEJBBean.class ProductPK.class jar cvf edu.jar META-INF/ejb-jar.xml META-INF/jboss.xml schulung/app/product/*.class copy edu.jar "\jboss-2.4.3\deploy" 47

48 J2EE Patterns DAO (Data Access Object) Auslagerung des SQL Codes in eine eigene Klasse Value Objects Bündelung von Attributen in einer Klasse -> Core J2EE Patterns Best Practices and Design Strategies by Alur / Cupri / Malks ISBN

49 EJB 2.0 Entity Beans CMP Modell hat sich erheblich verbessert Container managed Relations zwischen Entity Beans Neben Remote Interfaces auch Local Interfaces Query Language für Entity Beans 49

50 Session Beans Session Beans werden dazu verwendet, um serverseitige Aufgaben im Auftrag des Clients auszuführen, Ressourcen (wie Kurse und Tabellen) zugänglich zu machen und das Zusammenspiel von Entity Beans zu organisieren. Session Beans haben keine Persistenz und repräsentieren keine Daten aus einer Datenbank (sehr wohl kann es aber zu ihren Aufgaben gehören, Daten aus der Datenbank zu lesen und zu schreiben) und enkapsulieren typischerweise die Business Logik einer Anwendung. Typische Beispiele für Session Beans sind: Warenkorb, der sich während einer Session aufbaut Währungsumrechner, Buchungsprozesse 50

51 Es gibt zwei grundsätzliche Arten von Session Beans: Stateless und Stateful. Stateless Session Beans behalten keine Zustandsinformation von einem Aufruf zum nächsten. Man kann sie wie Funktionsaufrufe verstehen, die allein mit den übergebenen Parametern arbeiten: Eingabe von einer Währung Ausgabe in Euro Stateful Stateless Session Beans Stateful Session Beans behalten einen Zustand von Aufruf zu Aufruf. Wenn einem Warenkorb ein Artikel hinzugefügt wird, ist dieser auch beim nächsten Hinzufügen noch erhalten. Eine "stateful" Session Bean spiegelt den Zustand einer client-seitigen "Session" wider. Der Container kann (aus Container Management Gründen) eine Session Bean zeitweise aus dem Memory nehmen und in einen Secondary Storage (Disk) schreiben. Dieser Transfer wird Instanz "Passivation" genannt. Der umgekehrte Transfer ist "Activation". Der Container sollte eine Session Bean nur passivieren, wenn sie nicht Teil einer Transaktion ist. Damit der Container den "State" einer Session Bean besser managen kann, wird ihm im Deployment Descriptor der Bean mitgeteilt, ob es sich um eine STATELESS oder STATEFUL Session Bean handelt. Bei STATELESS Session Beans bleibt kein Zustand zwischen Methoden Aufrufen vorhanden und kann eine Bean Instanz von jedem Client verwendet werden. Bei STATEFUL Session Beans muss der Zustand der Bean zwischen Methoden und über Transaktionsgrenzen hinweg erhalten bleiben. 51

52 OrderController Session Bean OrderController SessionBean Home Interface create(); List positions; ejbcreate() {... Remote Interface addproduct( ProductPK pk); gettotalprice(); addproduct(productpk pk) { productejb = producthome. findbyprimarykey(pk); productdetail = productejb.getdetail(); positions.add(productdetail); Home Interface findbyprimarykey (5153) Product EntityBean int id String name; double price; ejbfindbyprimarykey(...) Remote Interface getdetail() getdetail() { return new ProductDetail(id, name, price..); Product ID... Product Name 5153 Cotes du Rhone... Preis

53 public class OrderControllerEJBBean implements SessionBean { SessionBean - Skelett public void ejbcreate () throws CreateException { public void ejbremove() throws RemoveException { public void setentitycontext(entitycontext context) { // container übergibt reference to EntityContext // bean allocates resources held for the bean's lifetime public void unsetentitycontext() { // Freigabe von Ressource, die allokiert wurden in setentitycontext public void ejbactivate() { // container associates EJB object identity with an instance // bean allocates additional resources needed in ready state public void ejbpassivate() { // container dissociates identity from instance // bean frees resources allocated in ejbactivate Kein public void ejbpostcreate(...) { public void ejbload() { public void ejbstore() { public... ejbfindbyprimarykey(...) throws FinderException { 53

54 public class OrderControllerEJBBean implements SessionBean { private SessionContext context; private javax.naming.initialcontext jndicontext; private List positions; public void ejbcreate() throws RemoteException, CreateException { positions = new ArrayList(); public void addproduct(productpk productpk) { // check for duplicates Iterator it = positions.iterator(); while (it.hasnext()) { OrderPos pos = (OrderPos) it.next(); Product product = pos.getproduct(); if (product.getpk().equals(productpk)) { pos.setquantity( pos.getquantity() + 1); return; // find product and add it to positions try { ProductEJBHome producthome = getproductejbhome(); ProductEJB productejb = producthome.findbyprimarykey(productpk); OrderPos pos = new OrderPos(); pos.setproduct(productejb.getdetail()); pos.setquantity(1); positions.add(pos); catch (javax.ejb.finderexception e) { throw new EJBException(e); catch (java.rmi.remoteexception e) { throw new EJBException(e); OrderController SessionBean 54

5.2 Workshop EJB. Entwicklung von EJB-Anwendungen. Das JOnAS-System

5.2 Workshop EJB. Entwicklung von EJB-Anwendungen. Das JOnAS-System 5.2 Workshop EJB Entwicklung von EJB-Anwendungen Welche Schritte werden benötigt, bis eine verteilte EJB-Anwendung einsatzbereit ist? Was muss alles implementiert werden? An welchen Stellen unterstützt

Mehr

4.2 Workshop EJB. Entwicklung von EJB-Anwendungen

4.2 Workshop EJB. Entwicklung von EJB-Anwendungen 4.2 Workshop EJB Entwicklung von EJB-Anwendungen Welche Schritte werden benötigt, bis eine verteilte EJB-Anwendung einsatzbereit ist? Was muss alles implementiert werden? An welchen Stellen unterstützt

Mehr

Enterprise Java Beans

Enterprise Java Beans Enterprise Java Beans Die hohe Kunst der aromatischen Bohnenmischung oder Replikator: Einmal Kaffee, Brasilia Highland Blend, Heiß Motivation Bean = Komponente Datenbank Zielgruppe Kommerzielle Anwendungen

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

Mehr

Der lokale und verteilte Fall

Der lokale und verteilte Fall Lokale Beans Der lokale und verteilte Fall RemoteClient Lokaler Client (JSP) RemoteSession/Entity-Bean Lokale Session/Entity-Bean 2 Lokale Beans Die bisher vorgestellten EJBswaren immer in der Lage auf

Mehr

EJB jar.xml und Name Service (JNDI)

EJB jar.xml und Name Service (JNDI) EJB jar.xml und Name Service (JNDI) Applikationsserver Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen.de/~reich/appserver/index.html Beschreibung der Beans mit Deployment

Mehr

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de EJB Beispiel JEE Vorlesung 10 Ralf Gitzel ralf_gitzel@hotmail.de 1 Stundenkonzept Gemeinsame Übung Stoff der letzten Stunde wird gemeinsam in einem Beispiel umgesetzt Details werden nochmals erklärt bzw.

Mehr

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Entwicklung von Web-Anwendungen auf JAVA EE Basis Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages

Mehr

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10.2005. Universität Freiburg, Germany

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10.2005. Universität Freiburg, Germany Enterprise JavaBeans Einführung Universität Freiburg, Germany Sommercampus, Freiburg, Germany, 10.-14.10.2005 Inhalt Allgemeines Motivation Rollen Aufbau einer EJB Arten von Beans Enterprise JavaBeans

Mehr

Anwendung eines Enterprise Java Beans

Anwendung eines Enterprise Java Beans Anwendung eines Enterprise Java Beans EJB Server EJB Container Remote Interface Home Interface EJB Object Der EJB Container kümmert sich um die Kommunikation des Beans mit anderen Komponenten, wobei er

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

Enterprise Java Beans

Enterprise Java Beans silbergrau Consulting & Software GmbH Enterprise Java Beans Fachhochschule Hagenberg WS 2001 / 2002 Silbergrau Consulting & Software GmbH Dr. Andreas Erlach Inhaltsübersicht Application Server J2EE Architektur

Mehr

Enterprise Java Beans (EJB)

Enterprise Java Beans (EJB) silbergrau Consulting & Software GmbH Enterprise Java Beans (EJB) Fachhochschule Hagenberg WS 2002 / 2003 Silbergrau Consulting & Software GmbH Dr. Andreas Erlach Inhaltsübersicht Application Server J2EE

Mehr

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung

Client/Server-Programmierung WS2007/08. EJB/JSP: Schritt-für-Schritt Anleitung Client/Server-Programmierung WS2007/08 EJB/JSP: Schritt-für-Schritt Anleitung Version 1.1, 26.09.07 Eingesetzte Software: - Apache Tomcat 5.5.9 bzw. 5.5.12 (http://tomcat.apache.org/download-55.cgi#5.5.12)

Mehr

Enterprise JavaBeans

Enterprise JavaBeans Enterprise JavaBeans Sebastian Pipping 18. Dezember 2006 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License. Teil I J2EE J2EE Was ist J2EE? Was ist J2EE?

Mehr

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool

Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool JBoss vorbereiten Wir haben ein zip-archiv mit JBoss 4.0.5 in /opt/jboss-4.0.5.zip hinterlegt. Entpacken Sie dieses in ihrem Homeverzeichnis an

Mehr

6.9 Java Server Pages

6.9 Java Server Pages DocumentCollection dc = db.ftsearch(abfrage); Document d = dc.getfirstdocument(); while (d!= 0) { String Name = db.gettitle(); out.println(name + ""); d = dc.getnextdocument(); catch (NotesException

Mehr

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java Oliver Kalz Agenda Grundlagen Objektpersistenz Objektrelationales Mapping Performance Fazit

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

ORACLE Business Components for Java (BC4J) Marco Grawunder

ORACLE Business Components for Java (BC4J) Marco Grawunder ORACLE Business Components for Java (BC4J) Marco Grawunder Gliederung 2 Probleme von J2EE/EJB J2EE-Pattern Lösungsansatz: BC4J Architektur einer BC4J-Anwendung Komponenten Entity Objects View Objects Application

Mehr

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C

IAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C IAC-Programmierung HELP.BCFESITSIACPROG Release 4.6C IAC-Programmierung SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen

Mehr

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk

Workshop Java Webentwicklung Einführung in Hibernate. Ulrich Stärk Workshop Java Webentwicklung Einführung in Hibernate Ulrich Stärk Ablauf Montag bis Donnerstag 09:00 Uhr s.t. Beginn, bis ca. 17:00 Uhr 1 Stunde Mittagspause Donnerstag Experiment Aufzeichnung der Programmiertätigkeit

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql JDBC inoffizielle Abkürzung für: Java Database Connectivity seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql ist eine Menge von Klassen und Methoden, um aus Java-Programmen relationale Datenbanken

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: DB-Mock (1/7) Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Themen. Web Service - Clients. Kommunikation zw. Web Services

Themen. Web Service - Clients. Kommunikation zw. Web Services Themen Web Service - Clients Kommunikation zw. Web Services Bisher: Implementierung einer Java Anwendung und Bereitstellung durch Apache Axis unter Apache Tomcat Java2WSDL Erzeugen einer WSDL-Datei zur

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014) Anleitung Ein einfaches RMI-Beispiel (ab Java.0) c Y. Pfeifer (Juni 014) 1 Ein einfaches RMI-Beispiel Vorgehensweise: 1. Java Projekt anlegen. Zwei Packages server & client erstellen Auf der Server-Seite

Mehr

Enterprise java beans step-by-step

Enterprise java beans step-by-step Enterprise java beans step-by-step 0. Voraussetzungen Der Orion Server ist in C:\Orion installiert! Sollten schon Versuche diese Applikation zum Laufen zu bringen fehlgeschlagen sein, empfehle ich eine

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

WebSphere Application Server Installation

WebSphere Application Server Installation WebSphere Application Server Installation und Administration Seminarunterlage Version: 3.04 Copyright Version 3.04 vom 16. Mai 2013 Dieses Dokument wird durch die veröffentlicht. Copyright. Alle Rechte

Mehr

Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier)

Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier) Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier) Firewall über Seriellen Anschluss mit Computer verbinden und Netzteil anschliessen. Programm Hyper Terminal (Windows unter Start Programme

Mehr

Java Einführung Collections

Java Einführung Collections Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...

Mehr

desk.modul : WaWi- Export

desk.modul : WaWi- Export desk.modul : WaWi- Export Die Schnittstelle besteht aus einem Programm, welches die Daten aus der OfficeLine ausliest und in eine XML-Datei exportiert. Die Schnittstelle ist als ein eigenständiges Programm

Mehr

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt OERA OpenEdge Reference Architecture Mike Fechner PUG Infotag 19. Mai 05 Frankfurt Überblick OERA Separated presentation and integration layers Common business logic with advanced models Data access abstracted

Mehr

Bei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren

Bei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren NetWorker - Allgemein Tip 399, Seite 1/8 Bei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren Die EMC EmailXtender Server Software erstellt auf

Mehr

Lokale Installation von DotNetNuke 4 ohne IIS

Lokale Installation von DotNetNuke 4 ohne IIS Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann hermann@itm-consulting.de 12.12.2006 Agenda Benötigte Komponenten Installation

Mehr

11. Enterprise Java Beans Grundlagen der Programmierung II (Java)

11. Enterprise Java Beans Grundlagen der Programmierung II (Java) 11. Enterprise Java Beans Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

Mehr

Remote Method Invocation

Remote Method Invocation Remote Method Invocation Aufruf von Methoden über die Grenzen der VM hinweg. Javaprozesse der rufenden und gerufenen Methode können auf verschiedenen Hosts laufen. Eine RMI-Applikation besteht aus dem

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Architekturen für verteilte Internetdienste

Architekturen für verteilte Internetdienste 1 Überblick Architekturen für verteilte Internetdienste Übung 5: Enterprise JavaBeans holger.schmidt@uni-ulm.de Wiederholung: Enterprise Java Beans Motivation Entwicklung Paketierung Optimierung von Entity

Mehr

ObjectBridge Java Edition

ObjectBridge Java Edition ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente

Mehr

Enterprise Java Beans Einführung

Enterprise Java Beans Einführung Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse

Mehr

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

R-BACKUP MANAGER v5.5. Installation

R-BACKUP MANAGER v5.5. Installation R-BACKUP MANAGER v5.5 Installation Microsoft, Windows, Microsoft Exchange Server and Microsoft SQL Server are registered trademarks of Microsoft Corporation. Sun, Solaris, SPARC, Java and Java Runtime

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Programmierung von Client/Server- Anwendungen

Programmierung von Client/Server- Anwendungen Programmierung von Client/Server- Anwendungen Komponenten des Web-Containers (Java EE) SoSe2015 Prof. Dr. Andreas Schmietendorf 1 Übersicht zur Vorlesung Entwicklung der Java Enterprise Edition Servlets,

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Unsere Webapplikation erweitern

Unsere Webapplikation erweitern Unsere Webapplikation erweitern Um die Webapplikation zu benutzen: 1. Starten Sie den Server, indem Sie das Hauptprogramm in der Klasse ImdbServer starten. 2. Laden Sie im Browser die Seite http://localhost:8080/html/index.html.

Mehr

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller 2002 131

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller 2002 131 Architekturen Von der DB basierten zur Multi-Tier Anwendung DB/CRM (C) J.M.Joller 2002 131 Lernziele Sie kennen Design und Architektur Patterns, welche beim Datenbankzugriff in verteilten Systemen verwendet

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Enterprise JavaBeans Basics Enterprise JavaBeans (EJB) Enterprise JavaBeans (EJB) Komponenten sind wohl definiert verteilt (MI-based) serverseitig Sie dienen

Mehr

Warum EJB Technologie (1)?

Warum EJB Technologie (1)? Datenbanken und Informationssysteme 2 SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 Folie EJB - 1 Warum EJB Technologie

Mehr

EJBs und Sicherheit. Vorlesung: Applikationsserver. Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen.

EJBs und Sicherheit. Vorlesung: Applikationsserver. Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen. EJBs und Sicherheit Vorlesung: Applikationsserver Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen.de/~reich Deklarative Sicherheit Zugriffsrechte auf die EJB-Methoden werden

Mehr

3. Stored Procedures und PL/SQL

3. Stored Procedures und PL/SQL 3. Stored Procedures und PL/SQL Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln

Mehr

Verbinden von IBM Informix mit Openoffice mittels JDBC

Verbinden von IBM Informix mit Openoffice mittels JDBC Verbinden von IBM Informix mit Openoffice mittels JDBC Voraussetzungen Installierte und laufende IBM Informixdatenbank. Getestet wurde mit IDS 9.40 und 10.00. Sollte aber auch mit älteren Versionen funktionieren.

Mehr

Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013

Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013 Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013 Die Herausforderung: Hostanbindung Viele Unternehmen besitzen Mainframe- und Legacy-Anwendungen, so genannte Enterprise Information Systems (EIS),

Mehr

Secure Network Communications (BC-SEC-SNC)

Secure Network Communications (BC-SEC-SNC) Secure Network Communications (BC-SEC-SNC) HELP.BCSECSNC Release 4.6C SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen

Mehr

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt

Mehr

Wie können Sie eine Client Lizenz wieder freigeben?

Wie können Sie eine Client Lizenz wieder freigeben? NetWorker - Allgemein Tip #267, Seite 1/5 Wie können Sie eine Client Lizenz wieder freigeben? Auch diese Frage wird häufig gestellt - sie ist wichtig, wenn ein Computer außer Dienst gestellt wurde und

Mehr

SE2-10-Entwurfsmuster-2 15

SE2-10-Entwurfsmuster-2 15 Architektur und Skalierbarkeit SE2-10-Entwurfsmuster-2 15 Skalierbarkeit Skalierbarkeit bedeutet die Anpassung einer Software an wachsende Last: Interaktionsfrequenz Nutzerzahl Anpassung durch Hinzufügen

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Einführung in Javadoc

Einführung in Javadoc Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:

Mehr

Enterprise JavaBeans Überblick

Enterprise JavaBeans Überblick Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 6.

Mehr

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.

Mehr

WebService in Java SE und EE

WebService in Java SE und EE Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.

Mehr

Praktische Übung 'JUnit-Test'

Praktische Übung 'JUnit-Test' Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse

Mehr

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux)

Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux) NetWorker - Allgemein Tip #293, Seite 1/6 Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux) Dies wird offiziell nicht von unterstützt!!! Sie werden also hierfür keinerlei Support erhalten. Wenn man

Mehr

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2013/2014 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Kommunikations-Middleware Bietet höhere Kommunikations-Dienste

Mehr

Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen

Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen 1 Download und Import der Lösung 2 Import der aktuellenverpflegungspauschalen 3 Weitere Informationen und Problembehandlung 1 Download

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging

i n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Servlet Debugging Servlet Debugging Markus Völter, voelter@acm.org, www.voelter.de Bei der Arbeit mit Servlets kommt man recht schnell an den Punkt, an dem man Servlets vernünftig testen oder debuggen will. Mit Hilfe des

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

Klassendefinitionen verstehen

Klassendefinitionen verstehen Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen

Mehr

Client-Server-Beziehungen

Client-Server-Beziehungen Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

Mehr

JDBC. Allgemeines ODBC. java.sql. Beispiele

JDBC. Allgemeines ODBC. java.sql. Beispiele JDBC Java Data Base Connectivity Programmierschnittstelle für relationale Datenbanken Sammlung von Klassen, welche zum Aufbau einer Verbindung zwischen einem Java-Programm und einer Datenbank dienen Verwendet

Mehr

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes

OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes 1 XSS: Cross-Site Scripting 1.) Es gelangen Daten in den Web-Browser, die Steuerungsinformationen

Mehr

Installation SQL- Server 2012 Single Node

Installation SQL- Server 2012 Single Node Installation SQL- Server 2012 Single Node Dies ist eine Installationsanleitung für den neuen SQL Server 2012. Es beschreibt eine Single Node Installation auf einem virtuellen Windows Server 2008 R2 mit

Mehr

Online Banking System

Online Banking System Online Banking System Pflichtenheft im Rahmen des WI-Praktikum bei Thomas M. Lange Fachhochschule Giessen-Friedberg Fachbereich MNI Studiengang Informatik Erstellt von: Eugen Riske Yueksel Korkmaz Alper

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Prof. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen

Mehr

Datenbanken & Informationssysteme Übungen Teil 1

Datenbanken & Informationssysteme Übungen Teil 1 Programmierung von Datenbankzugriffen 1. Daten lesen mit JDBC Schreiben Sie eine Java-Anwendung, die die Tabelle Books in der Datenbank azamon ausgibt. Verwenden Sie dabei die SQL-Anweisung select * from

Mehr

Informationsintegration und Web-Portale. Tutorial: Enterprise Java Beans. Erik Buchmann

Informationsintegration und Web-Portale. Tutorial: Enterprise Java Beans. Erik Buchmann Universität Karlsruhe (TH) Informationsintegration und Portale Tutorial: Enterprise Java Erik Buchmann buchmann@ira.uka.de IPD, Forschungsbereich Systeme der Informationsverwaltung Benötigte Software Entity

Mehr

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de

JSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de JSP Grundlagen JEE Vorlesung Teil 5 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht JSP Konzept Model-View-Controller mit JSPs JSP Expression Language EL Literale

Mehr

Anforderungen an die HIS

Anforderungen an die HIS Anforderungen an die HIS Zusammengefasst aus den auf IBM Software basierenden Identity Management Projekten in NRW Michael Uebel uebel@de.ibm.com Anforderung 1 IBM Software Group / Tivoli Ein Feld zum

Mehr

Ein neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen.

Ein neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen. Ein neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen. Wählen Sie nun Show Profiles und danach Add. Sie können einen beliebigen Namen für das neue Outlook Profil einsetzen.

Mehr

Typumwandlungen bei Referenztypen

Typumwandlungen bei Referenztypen Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei

Mehr

Application Frameworks

Application Frameworks Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

J2EE-Praktikum. Enterprise JavaBeans Patterns. Peter Thiemann. J2EE-Praktikum, WS2005/2006. Universität Freiburg

J2EE-Praktikum. Enterprise JavaBeans Patterns. Peter Thiemann. J2EE-Praktikum, WS2005/2006. Universität Freiburg J2EE-Praktikum Enterprise JavaBeans Patterns Peter Thiemann Universität Freiburg J2EE-Praktikum, WS2005/2006 Inhalt 1 Designmuster Sitzungsfassade Wertobjekte 2 Implementierungsmuster Geschäftsinterfaces

Mehr

AVID-Übung 3. EJB mit JBoss und Eclipse. 17. Juni Andreas I. Schmied Abteilung Verteilte Systeme Projektgruppe AspectIX

AVID-Übung 3. EJB mit JBoss und Eclipse. 17. Juni Andreas I. Schmied Abteilung Verteilte Systeme Projektgruppe AspectIX Abteilung Verteilte Systeme Projektgruppe AspectIX Universität Ulm Fakultät für Informatik AVID-Übung 3 EJB mit JBoss und Eclipse 17. Juni 2004 Andreas I. Schmied (schmied@inf...) AVID-Übung 3 Aufgabenstellung

Mehr