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

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

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

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

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

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

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

6. Java Java Beans und Enterprise Java Beans

6. Java Java Beans und Enterprise Java Beans 6. Java Java Beans und Enterprise Java Beans Peter Sturm Universität Trier Java Einführung Erfolgreicher virtueller Maschinenansatz der Gegenwart Vorbilder IBM: Virtualisierung der gesamten Rechnerhardware

Mehr

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition

Inhaltsverzeichnis. Enterprise Java im Überblick. Technologien der Java2 Enterprise Edition Inhaltsverzeichnis Vorwort 13 I Enterprise Java im Überblick 1 Bedeutung von Enterprise Java und IBM WebSphere 21 1.1 Enterprise Java 23 1.1.1 Anforderungen 23 1.1.2 E-Business 30 1.1.3 Java 36 1.2 IBM

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

Schritt 4: Hallo Enterprise Bean

Schritt 4: Hallo Enterprise Bean Prof. Dr. Th. Letschert FB MNI JEE Schritt 4: Hallo Enterprise Bean Einstieg: EJBs erzeugen und nutzen Meine erstes EJB Projekt Enterprise Beans sind eine Backend Technologie, die mit unterschiedlichen

Mehr

Software-Entwicklung mit Enterprise JavaBeans (EJB) 2.0

Software-Entwicklung mit Enterprise JavaBeans (EJB) 2.0 Software-Entwicklung mit Enterprise JavaBeans (EJB) 2.0 Prof.Dr. Jürgen Dunkel Fachhochschule Hannover Fachbereich Informatik juergen.dunkel@inform.fh-hannover.de ejbforgi, Jürgen Dunkel, FH Hannover 1

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

Java und Datenbanksysteme Datenbankanbindung mit JDBC

Java und Datenbanksysteme Datenbankanbindung mit JDBC Java und Datenbanksysteme Datenbankanbindung mit JDBC 30.05.2001 Stefan Niederhauser sn@atelier-w.ch 1-Einführung Datenbanksysteme Java und Datenbanken: JDBC Geschichte der JDBC-Versionen Vergleich von

Mehr

ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS. Piotr Kasprzak

ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS. Piotr Kasprzak ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS Piotr Kasprzak Agenda Laufzeitumgebung Java EE (J2EE) Motivation APIs / Technologien JBoss Entwicklungsumgebung Eclipse Ausblick Java EE -

Mehr

Datenbankanwendungen (JDBC)

Datenbankanwendungen (JDBC) Datenbankanwendungen (JDBC) Hierarchie: Connection Transaction Statement Connection Aufbau (klassisch): Registrierung des JDBC Driver beim DriverManager: Class.forName(JDBC Driver); Eigentlicher Verbindungsaufbau

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

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

Web-Services Implementierung mit Java

Web-Services Implementierung mit Java Web-Services Implementierung mit Java J. Heinzelreiter WS 2004/05 Java-APIs für Web-Services (1) Anwendungs-Code JAXR JAXM JAX-RPC SAAJ SOAP/SwA JWSDL WSDL XML/XML-Schema Web-Services/Java - 2 Java-APIs

Mehr

VS12 Slide 1. Verteilte Systeme. Vorlesung 12 Sebastian Iwanowski FH Wedel

VS12 Slide 1. Verteilte Systeme. Vorlesung 12 Sebastian Iwanowski FH Wedel VS12 Slide 1 Verteilte Systeme Vorlesung 12 Sebastian Iwanowski FH Wedel Mögliche Plattformen für Web Services VS12 Slide 2 VS12 Slide 3 Java-Software für verteilte Systeme J2EE: Java 2 Enterprise Edition

Mehr

Application Server und Continuous Integration

Application Server und Continuous Integration Application Server und Continuous Integration Outline 2 Einleitung Application Server Java EE Enterprise Applikationen vs. Web Applikationen Web Application Life Cycle Servlets JavaServer Pages verschiedene

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

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

Benutzung von Eclipse zur Entwicklung von Java EE 5 Anwendungen mit dem JBoss Application Server

Benutzung von Eclipse zur Entwicklung von Java EE 5 Anwendungen mit dem JBoss Application Server Benutzung von Eclipse zur Entwicklung von Java EE 5 Anwendungen mit dem JBoss Application Server Starten und Auswahl des Workspaces Starten Sie Eclipse als die Entwicklungsumgebung. Wählen Sie als Workspace

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

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

InQMy Application Server Flexible Softwareinfrastruktur für verteilte Anwendungen

InQMy Application Server Flexible Softwareinfrastruktur für verteilte Anwendungen InQMy Application Server Flexible Softwareinfrastruktur für verteilte Anwendungen IN-Q-My Title Company (Name) / 1 Agenda Firmenübersicht ebusiness Evolution InQMy Application Server Architektur Zusammenfassung

Mehr

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren

DB-Programmierung. Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1. Ziele. DB2 Zugriff mit Java selbst programmieren DB-Programmierung Lehr- und Forschungseinheit Datenbanken und Informationssysteme 1 Ziele static SQL verstehen Build-Prozess / Art des Datenzugriffs Host-Variablen Vor- / Nachteile dynamic SQL verstehen

Mehr

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013 GTUG Java Arbeitskreis Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung September 2013 Jürgen Depping CommitWork GmbH Seite 1 Info@CommitWork.de www.commitwork.de Agenda Was ist OmnivoBase?

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

A Java EE component is a self-contained functional software unit that is assembled into a Java EE. communicates with other components.

A Java EE component is a self-contained functional software unit that is assembled into a Java EE. communicates with other components. Begriffsdefinitionen Java EE A Java EE component is a self-contained functional software unit that is assembled into a Java EE application with its related classes and files and that communicates with

Mehr

Variablen manipulieren per JDI

Variablen manipulieren per JDI Variablen manipulieren per JDI Zusammenfassung Jede moderne Java IDE verfügt über eine mächtige und dennoch meist einfach zu bedienende Benutzeroberfläche die das finden von Fehlern in lokalen oder entfernt

Mehr

EJB3.0 Unit-Testing Reloaded

EJB3.0 Unit-Testing Reloaded EJB3.0 Unit-Testing Reloaded Werner Eberling werner.eberling@mathema.de www.mathema.de Werner Eberling, MATHEMA Software GmbH - EJB3.0 - Unit-Testing Reloaded (G4 - Folie 1) Java Forum Stuttgart 2007 Automatisiertes

Mehr

-Testen verteilter Anwendungen

-Testen verteilter Anwendungen -Testen verteilter Anwendungen Seminar Simulation und Bildanalyse mit Java im SS04 Konstantin Tjo, Urs Pricking Testen verteilter Anwendungen 1 Übersicht Einführung in verteilte Anwendungen RMI (Remote

Mehr

Enterprise Java Beans

Enterprise Java Beans Enterprise Java Beans Überblick! Architektur! EJB in der Praxis! Dienste und Probleme / Nachteile 2 Motivation für Applikation Server Die Auseinandersetzung wird sich in diesem Jahrzehnt bei Middleware

Mehr

Clustering von Application Servern am Beispiel von JBoss 3.2

Clustering von Application Servern am Beispiel von JBoss 3.2 Clustering von Application Servern am Beispiel von JBoss 3.2 Cluster Workshop iternum GmbH Alexanderstraße 7 60489 Frankfurt/Main www.iternum.com Agenda Clustertechnik allgemein Was ist Clustering? Gründe

Mehr

Enterprise JavaBeans Überblick: 17. Enterprise Information System Schicht

Enterprise JavaBeans Überblick: 17. Enterprise Information System Schicht Enterprise JavaBeans Überblick 1. Überblick Komponententechnologien 2. Einführung 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 5. Java Persistence: Entity Manager 6.

Mehr

Mehrschichtenarchitekturen und Komponentenumgebungen

Mehrschichtenarchitekturen und Komponentenumgebungen Forschungszentrum Informatik Universität Karlsruhe (TH) Mehrschichtenarchitekturen und Komponentenumgebungen Guido Sautter IPD Geschäftsprozesse und Enterprise Applications Geschäftsprozess = Verkettungen

Mehr

Performance Tuning mit @enterprise

Performance Tuning mit @enterprise @enterprise Kunden-Forum 2005 Performance Tuning mit @enterprise Herbert Groiss Groiss Informatics GmbH, 2005 Inhalt Datenbank RMI JAVA API HTTP Konfiguration Analyse Groiss Informatics GmbH, 2005 2 Datenbank

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

J2EEKurs. J2EE eine Plattform für betriebliche Anwendungen. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10.

J2EEKurs. J2EE eine Plattform für betriebliche Anwendungen. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10. J2EE eine Plattform für betriebliche Anwendungen Universität Freiburg, Germany Sommercampus, Freiburg, Germany, 10.-14.10.2005 Plattform Betriebliche Anwendung J2EE Kontrahenten J2EE im Überblick Was ist

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

Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim www.oio.de info@oio.de Version: 2014 Orientation 1.0 in Objects GmbH Der Sprecher Erik Bamberg (OIO) 2 1 s Aufgaben des Cachings Datenbank

Mehr

Java Schulung (Java 2 Java Development Kit 5 / 6)

Java Schulung (Java 2 Java Development Kit 5 / 6) 2. Grundlagen der Objektorientierung 2.1 Klassen, Attribute, Methoden Klassen Eine Klasse beschreibt als Bauplan Gemeinsamkeiten einer Menge von Objekten ist also ein Modell, auf dessen Basis Objekte erstellt

Mehr

Technische Universität Dresden Prof. Hußmann Softwarekomponenten. 3.3 Enterprise JavaBeans-Technologie

Technische Universität Dresden Prof. Hußmann Softwarekomponenten. 3.3 Enterprise JavaBeans-Technologie Gliederung 1. Software-Komponenten: Grundlegende Begriffe 2. Systematischer Entwicklungsprozess für Komponenten-Software mit UML 3. Java-Komponenten-Technologien 3.1 JavaBeans-Technologie 3.2 Web-Komponenten

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

Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems

Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Android Persistenz Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Ziele heute Arbeitsblatt 3 besprechen (inkl. Repetition) Die wichtigsten

Mehr

Programmentwicklung ohne BlueJ

Programmentwicklung ohne BlueJ Objektorientierte Programmierung in - Eine praxisnahe Einführung mit Bluej Programmentwicklung BlueJ 1.0 Ein BlueJ-Projekt Ein BlueJ-Projekt ist der Inhalt eines Verzeichnisses. das Projektname heißt wie

Mehr

Web 2.0 Software-Architekturen

Web 2.0 Software-Architekturen Web 2.0 Software-Architekturen Servlets als Controller einer MVC Web Architektur Prof. Dr. Nikolaus Wulff HTTP und HTML Das HyperText TransferProtokoll (HTTP) beschreibt eine einfache verbindungslose Kommunikation,

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

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

Remote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter

Remote- und Server-Programmierung. Dr. Wolfgang Süß Thorsten Schlachter Remote- und Server-Programmierung Dr. Wolfgang Süß Thorsten Schlachter Remote Method Invocation (RMI) Servlets WebServices 2 Remote Method Invocation (RMI) Das Remote Method Invocation (RMI)-Framework

Mehr

Effiziente Anwendungs-Entwicklung mittels Business Software Framework BISON Solution

Effiziente Anwendungs-Entwicklung mittels Business Software Framework BISON Solution Effiziente Anwendungs-Entwicklung mittels Business Software Framework BISON Solution Thomas Seiler Product Manager Technology BISON Schweiz AG Agenda Vergleich - Business Software Framework zu.net Framework

Mehr

Object Relational Mapping Layer

Object Relational Mapping Layer Object Relational Mapping Layer Views Controlers Business logic GUI OO-application logic Object-relational-Mapping Relational DBMS PHP (propel) 1/18 Propel - Persistance Layer OR-Mapper für PHP Portierung

Mehr

Benutzung eines Login Modules zur Authentifizierung unter JBoss 5.0

Benutzung eines Login Modules zur Authentifizierung unter JBoss 5.0 Benutzung eines Login Modules zur Authentifizierung unter JBoss 5.0 Erstellung der Datenbank Tabellen Als Login Module soll das in der JBoss Installation bereits vorhandene DatabaseServerLoginModule verwendet

Mehr

Java - Programmierung - Objektorientierte Programmierung 1

Java - Programmierung - Objektorientierte Programmierung 1 Java - Programmierung - Objektorientierte Programmierung 1 // Klassen und Objekte public class KlaObj public static void main(string args []) Klasse1 a; a = new Klasse1("heute", 47); Klasse1 b = new Klasse1

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

Objekt-relationales Mapping und Performance-Tuning

Objekt-relationales Mapping und Performance-Tuning Objekt-relationales Mapping und Performance-Tuning Thomas Krüger tkrueger@vanatec.com Agenda Wege um Daten zu lesen Wege um Daten zu modellieren Wege um Datenbanken effizient zu nutzen 2 2 Wege, Daten

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Oracle Weblogic Administration Grundlagen

Oracle Weblogic Administration Grundlagen Oracle Weblogic Administration Grundlagen Seminarunterlage Version: 1.07 Version 1.07 vom 14. September 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. WebSphere Application Server Teil 2. Schnittstellen

UNIVERSITÄT LEIPZIG. Mainframe Internet Integration SS2013. WebSphere Application Server Teil 2. Schnittstellen UNIVERSITÄT LEIPZIG Mainframe Internet Integration Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth SS2013 WebSphere Application Server Teil 2 Schnittstellen el0100 copyright W. G. Spruth, wgs

Mehr

Traditione le Entwicklung: Anpassung und Auslieferung von Software Produkten. Prof.Dr.Frank M.Thiesing Frank.Thiesing@FH-Dortmund.de 30.

Traditione le Entwicklung: Anpassung und Auslieferung von Software Produkten. Prof.Dr.Frank M.Thiesing Frank.Thiesing@FH-Dortmund.de 30. Traditione le Entwicklung: Anpassung und Auslieferung von Software Produkten Prof.Dr.Frank M.Thiesing Frank.Thiesing@FH-Dortmund.de 30.März 2004 Seminar Komponentenorientierte Softwareentwicklung und Hypermedia

Mehr

Erfahrungen beim Bau einer Prototyp Anwendung auf Basis des JBoss

Erfahrungen beim Bau einer Prototyp Anwendung auf Basis des JBoss Erfahrungen beim Bau einer Prototyp Anwendung auf Basis des JBoss Klaus Richarz, Hamburger Berater Team GmbH 23.05.2003 Klaus Richarz, HBT Folie 1 Agenda Teil 1: J2EE Architekturbewertung Teil 2: JBoss

Mehr

Java zur Realisierung von Internetanwendungen

Java zur Realisierung von Internetanwendungen Java zur Realisierung von Internetanwendungen MVC, JSP, Custom und Core Tags Darstellungsschicht Anwendungsschicht Datenschicht Architektur Browser Applikationsserver mit Servlet-Container DB-Server Web2-2

Mehr

Global Transport Label - General Motors -

Global Transport Label - General Motors - SAP Customer Success Story Automotive Consulting Solutions Formulare für den Vertriebsprozess Global Transport Label - General Motors - Agenda GETRAG Corporate Group Funktionsbeschreibung Abbildungen im

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Lösungen für Internet und Intranet von CHC IT-Solutions. Überblick zum Applikationsserver Adobe ColdFusion MX (Basis der SOLVA-Produktlinie)

Lösungen für Internet und Intranet von CHC IT-Solutions. Überblick zum Applikationsserver Adobe ColdFusion MX (Basis der SOLVA-Produktlinie) Lösungen für Internet und Intranet von Überblick zum Applikationsserver Adobe ColdFusion MX (Basis der SOLVA-Produktlinie) Adobe ColdFusion Performante Systembasis der SOLVA-Produkte ist Adobe ColdFusion

Mehr

Kapitel DB:VI (Fortsetzung)

Kapitel DB:VI (Fortsetzung) Kapitel DB:VI (Fortsetzung) VI. Die relationale Datenbanksprache SQL Einführung SQL als Datenanfragesprache SQL als Datendefinitionssprache SQL als Datenmanipulationssprache Sichten SQL vom Programm aus

Mehr

WebObjects. Dirk Schober Senior Software Trainer AppleServices EMEA. Was ist eigentlich ein Application Server?

WebObjects. Dirk Schober Senior Software Trainer AppleServices EMEA. Was ist eigentlich ein Application Server? Objects Dirk Schober Senior Software Trainer leservices EMEA Fragen über Fragen Was ist eigentlich ein lication? Welche lication gibt es sonst noch? Was kostet sowas? Wer setzt denn eine solche Technologie

Mehr

Hauptschritte einer JDBC-App

Hauptschritte einer JDBC-App JDBC Java DataBase Connectivity Sammlung von Klassen und Interfaces zur Arbeit mit Datenbanken auf Basis von SQL Package java.sql Datenbankmanagementsystem und eine oder mehrere Datenbanken Jdbc Driver,

Mehr

Java Forum Stuttgart 2013 Kai.Spichale@adesso.de twitter.com/kspichale spichale.blogspot.de

Java Forum Stuttgart 2013 Kai.Spichale@adesso.de twitter.com/kspichale spichale.blogspot.de NoSQL für Java-Entwickler Java Forum Stuttgart 2013 Kai.Spichale@adesso.de twitter.com/kspichale spichale.blogspot.de 23.06.2013 Agenda Datengröße Key-value Stores 1. Wide Column 2. Cassandra Document

Mehr

7 Remote Method Invocation (RMI)

7 Remote Method Invocation (RMI) 7 Remote Method Invocation (RMI) Verteilte Java Anwendungen; Client/Server Architektur Vorläufige Version 188 c 2005 Peter Thiemann Server: Aufgaben erstellt remote objects Objekte, deren Methoden von

Mehr

Transaktionen in der Praxis. Dr. Karsten Tolle

Transaktionen in der Praxis. Dr. Karsten Tolle Transaktionen in der Praxis Dr. Karsten Tolle Praxisbeispiel in Java Connection con = null; try { con = DriverManager.getConnection("jdbc:db2:sample"); } catch (Exception e) { e.printstacktrace(); } con.setautocommit(false);

Mehr

Heike Jürgensen Business Unit Application Server

Heike Jürgensen Business Unit Application Server Heike Jürgensen Business Unit Application Server JDeveloper9i Oracle9i Developer Suite JDeveloper9i Überblick J2EE und JDeveloper9i BC4J Framework UML Unterstützung im JDeveloper9i Deployment JDeveloper

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

BPMN 2.0 gehört in den Werkzeugkasten JEDES Java Entwicklers! bernd.ruecker@camunda.com

BPMN 2.0 gehört in den Werkzeugkasten JEDES Java Entwicklers! bernd.ruecker@camunda.com BPMN 2.0 gehört in den Werkzeugkasten JEDES Java Entwicklers! bernd.ruecker@camunda.com Bernd Rücker camunda services GmbH Was ist Prozessautomatisierung? Das Ganze ist ein BPMN Prozess Aber auch (und

Mehr

.NET und wieder eine Middleware Architektur?

.NET und wieder eine Middleware Architektur? .NET und wieder eine Middleware Architektur? Volker Birk CCC ERFA Ulm vb@ebios.de Volker Birk, vb@ebios.de 1 .NET na und?.net soll die Architektur im Internet werden meint Microsoft. Genau so wie Windows?.NET

Mehr

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org)

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Dynamische Plug-ins mit Eclipse 3 Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte

Mehr

Gerd Wütherich Nils Hartmann. OSGi Service Platform by example

Gerd Wütherich Nils Hartmann. OSGi Service Platform by example Gerd Wütherich Nils Hartmann OSGi Service Platform by example Die OSGi Service Platform Das Buch» Detaillierte Einführung in OSGi-Technologie» April 2008, dpunkt.verlag» ISBN 978-3-89864-457-0» Website:

Mehr

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht. Technisches Design Inhalt Design Übersicht Menü und DispatcherServlet DWR Servlet Viewer Servlets Controllers Managers Sicherheit Anwendung Architektur Component Diagram Deployment Diagram Komponente Sequence

Mehr

Java Technologie im BS2000/OSD

Java Technologie im BS2000/OSD Java Technologie im BS2000/OSD Ausgabe Mai 2010 Seiten 5 Java Technologie im BS2000/OSD Mit der wachsenden Bedeutung der Web-Technologie und der Umstellung der Geschäftsprozesse auf Electronic Commerce

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

Lightweight Java in der Automatisierungstechnik

Lightweight Java in der Automatisierungstechnik Lightweight Java in der Automatisierungstechnik Erfahrungen aus dem Anlagenbau Dr. Markus Eiglsperger eig@zuehlke.com Business Driver im Anlagenbau Kosten Modularisierung Vernetzung Agilität Paradigmenwechsel

Mehr

G s e a s m a t m ar a ch c i h tek e tur u I und IoC

G s e a s m a t m ar a ch c i h tek e tur u I und IoC Gesamtarchitektur I und IoC Schichten einer Web-Anwendung Initiiert durch J2EE und Spring: Strukturierte Sicht auf UI und Fachlogik (Domäne) Ergibt 5 Schichten: Man unterscheidet Präsentations- und Domänenmodell!

Mehr

Clustering von Application Servern am Beispiel von BEA WebLogic 8.1

Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Clustering von Application Servern am Beispiel von BEA WebLogic 8.1 Cluster Workshop iternum GmbH Alexanderstraße 7 60489 Frankfurt/Main www.iternum.com Agenda Clustertechnik Allgemein Was ist Clustering?

Mehr

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung Inhalt Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle Daten und Tabellen Normalisierung, Beziehungen, Datenmodell SQL - Structured Query Language Anlegen von Tabellen Datentypen (Spalten,

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs

4. Servlets Ein kleiner Einstieg. Kurze Java Historie. Erinnerung: Internet Anwendungen. Konzept eines Seitenaufrufs 4. s Ein kleiner Einstieg Erinnerung: HTTP und HTML Idee von Web n und Containern Erstellung einfacher s (zunächst software technisch übelst unstrukturiert) Literatur: B. Basham, K. Sierra, B. Bates, Head

Mehr

Seminar Applicationserver Alireza Salemi Mailto: info@salemi.de

Seminar Applicationserver Alireza Salemi Mailto: info@salemi.de BEA WebLogic Server 6.1 Seminar Applicationserver Alireza Salemi Mailto: info@salemi.de Inhalt Einführung BEA WebLogic J2EE 1.3 Container Managed Persistence WAP Mission critical Support für EJBs Zusammenfassung

Mehr

anaptecs JEAF Plattform JEAF Developer Guide

anaptecs JEAF Plattform JEAF Developer Guide anaptecs JEAF Plattform JEAF Developer Guide : JEAF Framework Die technische Grundlage für Applikationen auf Basis der JEAF Plattform bildet das JEAF Framework. Dabei handelt es sich um ein leichtgewichtiges

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

Geronimo, konfigurierbarer Java EE Application Server

Geronimo, konfigurierbarer Java EE Application Server Geronimo, konfigurierbarer Java EE Application Server http://www.hs furtwangen.de http://www.informatik.hs furtwangen.de/~reich http://geronimo.apache.org/ Christoph Reich 01.06.2007 Überblick Geronimo

Mehr

Web-Services Implementierung

Web-Services Implementierung Web-Services Implementierung Praktikum Informationsintegration 8.11.2005 Agenda Aktueller Stand / Abgabe Implementierung Wie geht das mit Java und Tomcat? Service Client 2 Abgabe Teil 1 Ein paar Zahlen

Mehr

Tag 5 Inhaltsverzeichnis

Tag 5 Inhaltsverzeichnis Tag 5 Inhaltsverzeichnis ODBC / JDBC: Ziel und Prinzip JDBC Überblick Erstes Beispiel Queries (Execute- und UpdateQuery) Der Typ "ResultSet" Diverses Metadata PreparedStatement Transaktionen und Batches

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel

ORM & OLAP. Object-oriented Enterprise Application Programming Model for In-Memory Databases. Sebastian Oergel ORM & OLAP Object-oriented Enterprise Application Programming Model for In-Memory Databases Sebastian Oergel Probleme 2 Datenbanken sind elementar für Business-Anwendungen Gängiges Datenbankparadigma:

Mehr

FH LU JEE Vorlesung SS 2010. Ralf Gitzel ralf_gitzel@hotmail.de

FH LU JEE Vorlesung SS 2010. Ralf Gitzel ralf_gitzel@hotmail.de FH LU JEE Vorlesung SS 2010 Ralf Gitzel ralf_gitzel@hotmail.de 1 Einführung + Organisatorisches Ralf Gitzel ralf_gitzel@hotmail.de 2 Dozent Dr. Ralf Gitzel Promotion an der Universität Mannheim in Wirtschaftsinformatik

Mehr

Liste V Enterprise JavaBeans

Liste V Enterprise JavaBeans Liste V Enterprise JavaBeans Fachhochschule Wiesbaden, FB Design Informatik Medien Studiengang Allgemeine Informatik Vorlesung zur Vertiefungslehrveranstaltung Spezielle Methoden der Softwaretechnik SS

Mehr