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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 5.

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

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

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

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

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

Beispiel: JavaBeans. Enterprise JavaBeans: Server-Komponenten

Beispiel: JavaBeans. Enterprise JavaBeans: Server-Komponenten Kap. 5 Enterprise JavaBeans () G 5.1Enterprise JavaBeans Komponentenbasierte Systementwicklung mit deklarativer Anpassung Die Enterprise JavaBeans-Philosophie Anwendungsentwicklung mit Enterprise JavaBeans

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

JDO Java Data Objects

JDO Java Data Objects JDO Java Data Objects Ralf Degner, Chief Consultant Ralf.Degner@poet.de Agenda POET Motivation Geschichte Einführung Architekturen FastObjects POET Gegründet 1993 Zwei Produktlinien esupplier Solutions:

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

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans JPA - JAVA Persistence API Problem In JAVA-programmen arbeitet man mit Hauptspeicherobjekten. Nach Beendigung des Programmes sind diese nicht mehr vorhanden.

Mehr

Web 2.0 Software-Architekturen

Web 2.0 Software-Architekturen Web 2.0 Software-Architekturen Enterprise Java Beans eine Einführung in die EJB Technologie Prof. Dr. Nikolaus Wulff Problemstellung verteilte Dienste Heterogene Plattformen Referenzierung von Objekten

Mehr

Wie kommen die Befehle zum DBMS

Wie kommen die Befehle zum DBMS Wie kommen die Befehle zum DBMS Dr. Karsten Tolle Datenbanken und Informationssysteme Wie kommen die Befehle zum DBMS Bisher gesehen: SQL direkt zum DBMS Workbench Kommandozeile IBM Query Tool Weitere?

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

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

Java Beans (22.02.2001)

Java Beans (22.02.2001) Component Based Software Development Java Beans (22.02.2001) Stefan Jäger Robert Kalcklösch Veranstalter: M. Bittner W. Koch Inhalt Einführung in Java Die Java Beans Einsatz und Entwicklung von Beans Enterprise

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

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher

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

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 Enterprise Java Beans Einführung in die J2EE EJB Technologie Prof. Dr. Nikolaus Wulff Übersicht Client-Server Grundlagen HelloWorld mit RMI und CORBA Struktur einer Client-Server-Architektur EJB Basics

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

Java 2, Enterprise Edition Einführung und Überblick

Java 2, Enterprise Edition Einführung und Überblick Universität aiserslautern AG Datenbanken und Informationssysteme Seminar Datenbank-Aspekte des E-Commerce Java 2, Enterprise Edition Einführung und Überblick m_husema@informatik.uni-kl.de Vortragsinhalte

Mehr

Schritt 5: Session Beans

Schritt 5: Session Beans Prof. Dr. Th. Letschert FB MNI JEE Schritt 5: Session Beans Session Beans Übersicht Session Beans dienen dazu serverseitige Geschäftsprozesse zu realisieren. Es gibt sie drei Zustands Varianten: Stateless

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

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

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

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

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 Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D. 1 Copyright 1996-1997 by Axel T. Schreiner. All Rights Reserved. 7 Datenbankzugriff Prinzip Dieser Abschnitt beschäftigt sich mit dem Paket java.sql, das eine SQL-Schnittstelle für Java verkapselt. Java-Programme

Mehr

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen Java Beans Enterprise Java Beans Eine kurze Einführung in die Welt der Bohnen Java Beans Einführung Stefan Sauer Was ist ein Java Bean? Beans sind Komponenten. Einmal schreiben Überall wiederverwerten

Mehr

Geschäftskomponenten mit EJB 3.1

Geschäftskomponenten mit EJB 3.1 Geschäftskomponenten mit EJB 3.1 Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Kurt Fastner Sommersemester 2012 Inhalt Was ist EJB Die verschiedenen EJB-Typen/Komponenten Applikationsserver,

Mehr

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten) O/R Mapping - Objekte (Attribute) - 1:1, 1:n, n:m Beziehungen - Vererbungen (- Interfaces)

Mehr

Der IBM Websphere Portalserver

Der IBM Websphere Portalserver Der IBM Websphere Portalserver Ergebnisse aus dem Universitäts-Praxis-Projekt 2001/2002 Vortrag von Il-Hyun Kim und Horst Rechner am 19. Juli 2002 Weiterer Teilnehmer am UPP: Clemens Oertel Betreuer: Dipl.-Phys.

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

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

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

Geschäftskomponenten mit EJBs

Geschäftskomponenten mit EJBs Geschäftskomponenten mit EJBs FWP Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Theis Michael - Senior Developer UniCredit Global Information Services S.C.p.A Sommersemester 2012 2

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

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

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

Benutzerauthentifizierung und Zugriffsschutz mit JAAS

Benutzerauthentifizierung und Zugriffsschutz mit JAAS Benutzerauthentifizierung und Zugriffsschutz mit JAAS Werner Eberling werner.eberling@mathema.de www.mathema.de Übersicht Altbekanntes kurz erwähnt Java Security Des Kaisers neue Kleider JAAS Zu Ihren

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

JBoss 2.2 Evaluierung

JBoss 2.2 Evaluierung Freie Universität Berlin Autor: Natalie Ardet Datum: 10.4.2001 JBoss 2.2 Evaluierung Projekt: verteilte Informationssysteme JBoss 2.2 Evaluierung Windows NT 4.0 Installation/Konfiguration und Together

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

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

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

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

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

Enterprise JavaBeans

Enterprise JavaBeans Enterprise JavaBeans Übersicht Marc Monecke monecke@informatik.uni-siegen.de Praktische Informatik Fachbereich Elektrotechnik und Informatik Universität Siegen, D-57068 Siegen 1. Juli 2003 Zusammenfassung

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

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

5. Übung zu Software Engineering

5. Übung zu Software Engineering 5. Übung zu Software Engineering WS 2009/2010 Henning Heitkötter Desktop-Anwendung AUFGABE 13 1 Schichtenarchitektur Strukturierung komplexer Anwendungen Anforderungen: Flexibilität, Robustheit, Wartbarkeit,

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

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

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

Ndo 3. Aufbruch zu neuen Ufern Migration bestehender J2EE Anwendungen. Jens Schumann

Ndo 3. Aufbruch zu neuen Ufern Migration bestehender J2EE Anwendungen. Jens Schumann Ndo 3 January 21-25, 2008, Munich, Germany ICM - International Congress Centre Munich Migration bestehender J2EE Anwendungen Jens Schumann - Migration bestehender J2EE Anwendungen - OOP 2008 Jens Schumann

Mehr

Webanwendungen mit IBM Rational und IBM WebSphere V6

Webanwendungen mit IBM Rational und IBM WebSphere V6 Joachim Gucker, Michael Müller, Dietmar Rager, Stefan Schäffer, Walter Schilder, Veronika Thurner, Dina Winkler 2008 AGI-Information Management Consultants May be used for personal purporses only or by

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

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp

EJB 3 - Ein Blick über den Tellerrand. Heiko W. Rupp <hwr@pilhuhn.de> EJB 3 Ein Blick über den Tellerrand Heiko W. Rupp Agenda Abriss des Standards Blick auf vorhandene Implementierungen Erfahrungen aus der Praxis Verlosung der 2 Bücher Agenda Abriss des

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

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme

UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme UNIVERSITÄT ULM Fakultät für Ingenieurswissenschaften und Informatik Institut für Datenbanken und Informationssysteme 8. Übung zur Vorlesung Datenbanksysteme WS 08/09 Musterlösung Aufgabe 8-1: SQLJ //

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

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

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008

Programmieren II. Beispiele für RDBMS. Relationale Datenbanken. Datenbanken SQL. Dr. Klaus Höppner JDBC. Hochschule Darmstadt SS 2008 Programmieren II Datenbanken Dr. Klaus Höppner SQL Hochschule Darmstadt SS 2008 JDBC 1 / 20 2 / 20 Relationale Datenbanken Beispiele für RDBMS Ein Datenbanksystem ist ein System zur Speicherung von (großen)

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

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

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire

Integration von Web Services in J EE Anwendungen mit XFire. 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire Integration von Web Services in J EE Anwendungen mit XFire 1/26 André Janus - Integration von Web Services in J EE Anwendungen mit XFire univativ : = Umsetzung durch Studenten und Young Professionals.

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

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

3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java)

3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java) 3. Datenbankzugriff (JDBC) Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

Mehr

Innovator 11 classix. Enterprise JavaBeans (EJB) für JBuilder. Connect. Alexander Borschet. www.mid.de

Innovator 11 classix. Enterprise JavaBeans (EJB) für JBuilder. Connect. Alexander Borschet. www.mid.de Innovator 11 classix Enterprise JavaBeans (EJB) für JBuilder Alexander Borschet Connect www.mid.de Modellieren und Generieren von Enterprise JavaBeans (EJB) für JBuilder Wozu dient die Anbindung an JBuilder?

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

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

-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

Mobile und Verteilte Datenbanken

Mobile und Verteilte Datenbanken Mobile und Verteilte Datenbanken Java RMI Vorlesung Wintersemester 2010/2011 groppe@ifis.uni-luebeck.de Institut für Informationssysteme Universität zu Lübeck Java Remote Method Invocation (RMI) Realisierung

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

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

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007 Systemprogrammierung Projekt: Java RMI Wintersemester 2006 / 2007 Systemprogrammierung 1. Einleitung 2. Einführung in RPC 3. RMI 4. Code Beispiele 5. Live Vorstellung 6. Ausblick 7. Fazit 2 1. Einleitung

Mehr

4. Objektrelationales Mapping Grundlagen der Programmierung II (Java)

4. Objektrelationales Mapping Grundlagen der Programmierung II (Java) 4. Objektrelationales Mapping Grundlagen der Programmierung II (Java) Prof. Dr. Bernhard Humm Hochschule Darmstadt University of Applied Sciences Sommersemester 2006 Übersicht Grundlagen der Programmierung

Mehr

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Gregor Raschke 2008 HIBERNATE. Eine Einführung 1 HIBERNATE Eine Einführung Inhalt 2 Einleitung Beispielkonfiguration Die hibernate.cfg.xml Eine Beispieltransaktion Abfragemöglichkeiten JPA und Hibernate Ressourcen und Quellen Einleitung (1) - Geschichtliches

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