Enterprise Java Beans. Thomas van Husen
|
|
- Arwed Kappel
- vor 8 Jahren
- Abrufe
Transkript
1 Enterprise Java Beans Thomas van Husen 1
2 Standard Edition J2SE Java Enterprise Edition J2EE 1.3 2
3 J2EE 1.3 packages Package App Client Applet Web EJB JDBC 2.0 JA N JA JA Extension EJB 2.0 JA N JA JA EJB 2.0 Servlets Servlets N N JA N JSP 1.2 N N JA N JSP 1.2 JMS 1.0 JA N JA JA JMS JTA 1.0 N N JA JA JavaMail 1.2 N N JA JA JAF 1.0 N N JA JA JAXP JAXP JA N JA JA Connector 1.0 N N JA JA JAAS JAAS JA N JA JA 3
4 Applet Container J2EE Architecture Applet Webcontainer EJB Container J2SE JSP Servlet EJB Application Client Container Application Client JTA JAAS JMS Java Mail JAF J2SE Connectors JAXP JDBC JTA JAAS JMS Java Mail JAF J2SE Connectors JAXP JDBC DB JDBC JAXP JAAS JMS J2SE 4
5 Firewall Client Client J2EE Environment EJB Container Entity Bean Session Bean Entity Bean Enterprise Information System Client Client Web Container Servlets JSP, HTML Database ERP Legacy Applications Client Tier Middle Tier EIS Tier 5
6 J2EE Application Scenarios Browser Web Container EJB Container Stand-Alone Client Database 6
7 EJB Enterprise Java Beans EJB Container Kunde Entity Bean Client A Kunde Remote Object JDBC Client B Kunde Remote Object Kunde Nr... Kunde Name 5153 Weka Bau... Ort Stuttga rt 7
8 Presentation Tier EJB Container Kunde Entity Bean Browser A Browser B Web Container Page Session B Model Controller Session A Model JDBC Gui Client A Kunde Remote Object Kunde Nr... Kunde Name Ort Gui Client B Kunde Remote Object 5153 Weka Bau... Stuttga rt 8
9 Enterprise Beans Client Home Remote Home EJB Container Product Order Callback Methoden: Jede Bean implementiert einen Subtyp des EnterpriseBean Interfaces, das verschiedene Methoden definiert, die "Callbacks" genannt werden. Jede Callback Methode instruiert die Bean über einen bestimmten Event in ihrem Lebenszyklus. Der Container ruft diese Methoden auf, wenn die Bean aktiviert wird, wenn sie gespeichert werden soll, wenn sie passiviert wird usw. Die Bean kann in den Callback Methoden das Ihrige tun, um dem jeweiligen Event gerecht zu werden. Remote 9
10 Enterprise Beans Client Home create() Remote neworder() selectcustomer() addline() EJB Container Order Controller Session Bean Home Interface Remote Interface Implementierung Home findbyprimarykey() Remote getdetail() setdetail() Product Enitity Bean 10
11 Client EJB Container EJB Container Bean Transaktion Management Persistence Management Security Management Jndi ENC, EJBContext Callback Methods Der Container isoliert die Enterprise Bean gegen den direkten Zugriff eines Clients. Wenn eine Client Anwendung eine "remote" Methode einer Bean aufruft, fängt der Container diesen Aufruf ab und sichert die Belange von Persistenz, Transaktionsmanagement und Security. Security, Transaktionssteuerung und Persistenz werden vom Container automatisch gesteuert, ohne dass sich der Client darum kümmern muss. Callback Methoden: Jede Bean implementiert einen Subtyp des EnterpriseBean Interfaces, das verschiedene Methoden definiert, die "Callbacks" genannt werden. Jede Callback Methode instruiert die Bean über einen bestimmten Event in ihrem Lebenszyklus. Der Container ruft diese Methoden auf, wenn die Bean aktiviert wird, wenn sie gespeichert werden soll, wenn sie passiviert wird usw. Die Bean kann in den Callback Methoden das Ihrige tun, um dem jeweiligen Event gerecht zu werden. 11
12 Entity und Session Beans Entity Bean EJB Container Customer Product Order zwei grundsätzliche Typen von Enterprise Beans: Entity Beans und Session Beans. Entity Beans stehen für Objekte, die persistent in einer Datenbank gehalten werden, und können typischerweise mit einem Substantiv bezeichnet werden. Session Beans repräsentieren hingegen Prozesse und Aufgaben. Kandidaten für Session Beans sind Objekte, die mit Verben bezeichnet werden.. Session Bean Order Controller 12
13 Session Entity Beans EJB Container Kunde Entity Bean Browser A Browser B Web Container Kunde Remote Auftrag Remote Auftrag Remote Kunde Remote Auftrag Session Bean A Auftrag Session Bean B Gui Client C Auftrag Remote Object Kunde Remote Object Auftrag Session Bean C Gui Client D Kunde Remote Auftrag Object Remote Object Auftrag Session Bean D 13
14 Bean Entity Bean Product Home Interface create(5153, Cotes du Rhone, 7.80) Remote Interface setprice(...) getprice() int id String name; double price; ejbcreate(...) setprice(double d) { price = d; getprice() { return price; Product ID... Product Name 5153 Cotes du Rhone... Preis
15 Entity Bean ejbcreate der create() Methode auf dem Home Interface entspricht immer eine ejbcreate() Methode in der Bean die ejbcreate() Methode der Bean enthält (bei BMP) den SQL Code (oder DAO Aufruf), um den Record, der die Bean persistent repräsentiert, der Datenbank hinzuzufügen durch das create() auf dem Home Interface erhält der Client ein Remote Interface, das die einzelne erzeugte Bean repräsentiert und durch das der Client Methoden der Bean aufrufen kann das Remote Interface enthält keine Methode Save 15
16 Product Table MEASUREUNIT MEASUREUNITID CHAR(3) MEASUREUNITDESC CHAR(50) PRODUCT PRODUCTNUM NUMERIC(7) PRODUCTDESC CHAR(50) PRICE DECIMAL(15,2) MEASUREUNITID CHAR(3) MEASUREUNITID = MEASUREUNITID create table PRODUCT ( PRODUCTNUM NUMERIC(7) not null, PRODUCTDESC CHAR(50), PRICE DECIMAL(15,2), MEASUREUNITID CHAR(3), primary key (PRODUCTNUM) ); 16
17 public class ProductEJBBean implements EntityBean { private int id; private String desc; private double price; private String measureunitid; Product Bean Impl public EntityContext context; public ProductPK ejbcreate (String desc, double price, String measureunitid) throws CreateException, DuplicateKeyException {
18 Product ejbcreate() - 1 public ProductPK ejbcreate (String desc, double price, String measureunitid) throws CreateException, DuplicateKeyException { this.desc = desc; this.price = price; this.measureunitid = measureunitid; String sql = "insert into PRODUCT " + "(" + "PRODUCTNUM, PRODUCTDESC, PRICE, MEASUREUNITID" + ") " + "values " + "(" + "?,?,?,? " + ")"; Connection dbconnection = null; PreparedStatement stmt = null; try { try {... 18
19 ... try { try { finally { Product ejbcreate() - 2 dbconnection = getdbconnection(); this.id = getmaxproductnumber(dbconnection) + 1; stmt = dbconnection.preparestatement(sql); int i = 1; stmt.setint(i++, this.id); stmt.setstring(i++, this.desc); stmt.setdouble(i++, this.price); stmt.setstring(i++, this.measureunitid); if (stmt.executeupdate() == 1) return new ProductPK(this.id); else throw new CreateException("Error creating Product"); if (stmt!= null) stmt.close(); if (dbconnection!= null) dbconnection.close(); catch (java.sql.sqlexception e) { throw new EJBException (e); 19
20 Entity Bean ejbcreate() Aufgaben in der ejbcreate() Methode müssen: die Instanzvariablen der Bean gesetzt werden das Objekt der Datenbank (per JDBC) hinzugefügt werden die Werte, die zum Erstellen des Objekts notwendig sind, erhält die ejbcreate() Methode als Parameter bei Erfolg gibt ejbcreate() den Primary Key zurück (auf dem Home Interface gibt die entsprechende create() Methode das Remote Object zurück) auftretende SQLExceptions (sind Subsystem Exceptions) werden in EJBExceptions (sind RuntimeExceptions) umgewandelt und geworfen 20
21 public class ProductPK implements java.io.serializable { private final int id; public ProductPK(int id) { this.id = id; public int getid() { return id; public boolean equals(object o) { if (this == o) return true; if (!(o instanceof ProductPK)) // will also return false when o == null return false; ProductPK other = (ProductPK) o; return this.id == other.id; public int hashcode() { return id; public String tostring() { return "[" + getclass().getname() + ": " + id + "]"; Product Primary Key 21
22 Entity Bean Primary Key Aufgaben jede Entity Bean hat einen Primary Key im genannten Beispiel wäre es nicht notwendig gewesen, eine eigene Klasse als Primary Key zu verwenden in der Praxis sind Primary Keys wegen der Zusammensetzung aus mehreren DB Feldern (Mandant etc.) jedoch immer eigene Klassen die PK Klasse muss das Interface java.io.serializable haben die equals() Methode von java.lang.object muss überschrieben werden und damit auch die hashcode() Methode die Klasse sollte als Immutable codiert werden (alle Instanzvariable final) 22
23 <ejb-jar> <enterprise-beans> <entity> </entity> <description>product</description> <ejb-name>productejb</ejb-name> <home>schulung.app.product.productejbhome</home> <remote>schulung.app.product.productejb</remote> <ejb-class>schulung.app.product.productejbbean</ejb-class> <persistence-type>bean</persistence-type> <prim-key-class>schulung.app.product.productpk</prim-key-class> <reentrant>false</reentrant>... Primary Key im Deployment Descriptor die Primary Key Klasse wird im Deployment Descriptor der Bean eingetragen 23
24 private java.sql.connection getdbconnection() { InitialContext jndicontext; javax.sql.datasource ds; try { Database Connection jndicontext = new InitialContext(); ds = (javax.sql.datasource) jndicontext.lookup("java:comp/env/jdbc/edu"); java.sql.connection con = ds.getconnection("sa", ""); return con; catch (javax.naming.namingexception e) { e.printstacktrace(); throw new javax.ejb.ejbexception(e); catch (java.sql.sqlexception e) { e.printstacktrace(); throw new javax.ejb.ejbexception(e); 24
25 Database Connection Aufgaben Die JDBC Connection wird prinzipiell aus einer DataSource genommen. Die DataSource wird über JNDI Lookup aufgefunden. Dies ist möglich, weil der EJB Container die DataSource in seinem JNDI Service zuvor registriert hat entsprechend seiner (Container spezifischen Konfigurations) Einstellungen und der (J2EE Standard) Angaben im Deployment Descriptor Dadurch dass die Connection nicht direkt mit dem JDBC Driver erstellt, sondern aus einer vom Container zur Verfügung gestellten Datasource gezogen wird, kann der Container seine Services wie Connection Pooling und Transaktionssteuerung injizieren. Bei Connection Pooling müssen im Anwendungscode Connections immer gleich wieder geschlossen werden. 25
26 <ejb-jar> <enterprise-beans> <entity> </entity> <description>product</description> <ejb-name>productejb</ejb-name> <home>schulung.app.product.productejbhome</home> <remote>schulung.app.product.productejb</remote> <ejb-class>schulung.app.product.productejbbean</ejb-class> <persistence-type>bean</persistence-type> <prim-key-class>schulung.app.product.productpk</prim-key-class> <reentrant>false</reentrant> <resource-ref> </resource-ref> Database Connection im Deployment Descriptor <description>datasource for Product EJB</description> <res-ref-name>jdbc/edu</res-ref-name> <res-type>javax.sql.datasource</res-type> <res-auth>container</res-auth> try { jndicontext = new InitialContext(); ds = (javax.sql.datasource) jndicontext.lookup("java:comp/env/jdbc/edu"); 26
27 Home Interface Bean Enterprise Bean Home, Remote, Impl Remote Interface int id String name; double price; ejbcreate(...) Jede Enterprise Bean besteht aus drei Klassen: Home Interface, Remote Interface und Bean Implementierung Ein Client kann immer nur das Home und Remote Interface verwenden, niemals die Bean selbst Der Container verwendet die Bean Implementierungsklasse Auf dem Client wird das Home Interface verwendet, um spezifische Instanzen zu erzeugen Das Home Interface gibt ein Remote Interface zurück. Das Remote Interface ist ein Proxy für die Bean im Container. Der Client kann transparent Methoden vom Remote Interface aufrufen, als wäre es ein lokales Objekt. 27
28 public static void main(string [] args) { try { Home Interface Remote Interface Properties p = new Properties(); p.setproperty(context.initial_context_factory, p.setproperty(context.provider_url, "org.jnp.interfaces.namingcontextfactory"); p.setproperty("java.naming.factory.url.pkgs", "localhost:1099"); "org.jboss.naming:org.jnp.interfaces"); InitialContext context = new InitialContext(p); Object ref = context.lookup("productejb"); ProductEJBHome productejbhome = // insert (ProductEJBHome) PortableRemoteObject.narrow(ref, ProductEJBHome.class); ProductEJB productcrt = productejbhome.create("cotes du Rhone", 7.8, "fl"); System.out.println("Product: id=" + productcrt.getid() + ", desc=" + productcrt.getdesc() + ", price=" + productcrt.getprice() + ", measureunitpk=" + productcrt.getmeasureunitpk() ); Client - Product Insert container spezifische Properties für Initial JNDI Context Name für Bean aus Deployment Descriptor 28
29 public static void main(string [] args) { try {... InitialContext context = new InitialContext(p); Object ref = context.lookup("productejb"); ProductEJBHome productejbhome = (ProductEJBHome) PortableRemoteObject.narrow(ref, ProductEJBHome.class);... Client - PortableRemoteObject.narrow Downcast und nicht: Object ref = context.lookup("productejb"); ProductEJBHome productejbhome = (ProductEJBHome) ref;... 29
30 Entity Bean ejbfindxxx Mit einer create() Methode auf dem Home Interface wird auf dem Server ein Objekt instantiiert und zugleich neu erzeugt d.h. mit der Instantiierung des Objekts ist ein neu Erstellen im persistenten Storage verbunden Objekte, die schon in der Datenbank vorhanden sind, werden dagegen durch Aufruf von find() Methoden auf dem Home Interface im Container Objekte instantiiert, d.h. in der Datenbank aufgefunden und als Bean Instanzen mit Datenbank Werten geladen einer findxxx() Methode auf dem Home Interface entspricht immer eine ejbfindxxx() Methode in der Bean jede Entity Bean muss mindestens eine findbyprimarykey() Methode auf dem Home Interface und eine ejbfindbyprimarykey() Methode in der Bean Implementierung haben 30
31 Bean Entity Bean Product find() Home Interface findbyprimarykey (5153) Remote Interface setprice(...) getprice() int id String name; double price; ejbfindbyprimarykey(...) setprice(double d) { price = d; getprice() { return price; Product ID... Product Name 5153 Cotes du Rhone... Preis
32 public static void main(string [] args) { try { Home Interface Remote Interface Properties p = new Properties();... InitialContext context = new InitialContext(p); Object ref = context.lookup("productejb"); ProductEJBHome productejbhome = (ProductEJBHome) PortableRemoteObject.narrow(ref, ProductEJBHome.class); // find by primary key ProductPK pk = new ProductPK(5); ProductEJB productejb; try { Client - Product find Primary Key productejb = productejbhome.findbyprimarykey(pk); catch (javax.ejb.finderexception e) { System.err.println("No object found for " + pk); return; System.out.println("Product: id=" + productejb.getid() + ", desc=" + productejb.getdesc() + ", price=" + productejb.getprice() + ", measureunitpk=" + productejb.getmeasureunitpk() ); 32
33 Product Home Interface public interface ProductEJBHome extends EJBHome { public ProductEJB create(string desc, double price, String measureunitid) throws RemoteException, CreateException, DuplicateKeyException; public ProductEJB findbyprimarykey(productpk productpk) throws RemoteException, FinderException; 33
34 public ProductPK ejbfindbyprimarykey(productpk pk) throws FinderException { Connection dbconnection = null; Statement stmt = null; ResultSet rs = null; String sql = "select PRODUCTNUM from PRODUCT " + "where PRODUCTNUM = " + pk.getid() ; try { try { dbconnection = getdbconnection(); stmt = dbconnection.createstatement(); rs = stmt.executequery(sql); if (rs.next()) { return pk; finally { else { Bean ejbfindbyprimarykey() throw new javax.ejb.objectnotfoundexception( "No product found in database for " + pk); if (dbconnection!= null) dbconnection.close(); Primary Key catch (java.sql.sqlexception e) { throw new EJBException ("SQL Exception in find by primary key" + e); 34
35 ejbfindbyprimarykey() Aufgaben Die Aufgabe der ejbfindbyprimarykey() Methode ist nur, den Primary Key, den die Methode schon als Parameter bekommen hat, zurückzugeben, falls ein entprechendes Objekt in der Datenbank vorhanden ist, d.h. im Grunde nur festzustellen, ob für den Primary Key ein Satz in der Datenbank vorhanden ist. Wird kein Satz in der Datenbank gefunden wird, muss die Methode eine FinderException werfen. Aufgabe ist nicht(!!!), die Werte aus der Datenbank zu laden und damit die Instanzvariablen zu setzen. Das ist Aufgabe der ejbload() Methode. 35
36 Bean ejbload() public void ejbload() { ProductPK pk = (ProductPK)context.getPrimaryKey(); Connection dbconnection = null; String sql = "select * from PRODUCT " + "where PRODUCTNUM = " + pk.getid() ; Statement stmt = null; ResultSet rs = null; try { try { dbconnection = getdbconnection(); stmt = dbconnection.createstatement(); rs = stmt.executequery(sql); if (rs.next()) { this.id = rs.getint("productnum"); this.desc = rs.getstring("productdesc"); this.price = rs.getdouble("price"); this.measureunitid = rs.getstring("measureunitid"); finally { if (rs!= null) rs.close(); if (stmt!= null) stmt.close(); if (dbconnection == null) dbconnection.close(); catch (java.sql.sqlexception e) { throw new EJBException (e); 36
37 ejbload() Aufgaben ejbload() kann nicht vom Client, sondern allein vom Container aufgerufen werden wann ejbload() aufgerufen wird, ist durch die Sequenzdiagramme der EJB Spezifikation geregelt (bei Find Sequenzen wird ejbload() nach ejbfindxxx aufgerufen und bevor der Client Methoden des durch die Find Methode erhaltenen Remote Interface aufruft) Aufgabe ist, mit dem Primary Key aus dem Entity Context die Werte für das Objekt aus der Datenbank zu laden und die Instanzvariablen zu setzen. 37
38 Enity Context public void setentitycontext(entitycontext context) { this.context = context; setentitycontext() ist eine Methode, die von der Bean implementiert werden muss. Sie wird vor ejbload() aufgerufen (genauer gesagt vor ejbactivate() oder vor ejbpostcreate()) Der Enity Context hat eine Methode getprimarykey(). Die getprimarykey() Methode gibt den Primary Key des EJB Objekts zurück, das mit der Bean Instanz assoziiert ist. 38
39 Product Remote Interface public interface ProductEJB extends EJBObject { public int getid() throws RemoteException; public String getdesc() throws RemoteException; public void setdesc(string desc) throws RemoteException; public double getprice() throws RemoteException; public void setprice(double price) throws RemoteException; public MeasureUnitPK getmeasureunitpk() throws RemoteException; public void setmeasureunitpk(measureunitpk measureunitpk) throws RemoteException; Das Remote Interface enthält keine Methode save. Wenn das Server Objekt durch eine setxxx() Methode verändert wurde, kann der Client davon ausgehen, dass das Objekt persistent geändert wurde. Er braucht sich um die Persistenz der Änderung nicht zu kümmern. 39
40 public void ejbstore() { ProductPK pk = (ProductPK)context.getPrimaryKey(); Connection dbconnection = null; String sql = "update PRODUCT set " + "PRODUCTNUM =?" + ", PRODUCTDESC =?" + ", PRICE =?" + ", MEASUREUNITID =?" + " where PRODUCTNUM = " + pk.getid(); PreparedStatement stmt = null; try { try { dbconnection = getdbconnection(); stmt = dbconnection.preparestatement(sql); int i = 1; stmt.setint(i++, this.id); stmt.setstring(i++, this.desc); stmt.setdouble(i++, this.price); stmt.setstring(i++, this.measureunitid); if (stmt.executeupdate() == 1) return; else throw new SQLException("Error on update"); finally { if (stmt!= null) stmt.close(); if (dbconnection!= null) dbconnection.close(); catch (java.sql.sqlexception e) { throw new EJBException (e); Bean ejbstore() 40
41 Implementierung der Business Methods Trivia public int getid() { return this.id; public String getdesc() { return this.desc; public void setdesc(string desc) { this.desc = desc; public double getprice() { return this.price; public void setprice(double price) { this.price = price; public MeasureUnitPK getmeasureunitpk() { return new MeasureUnitPK(this.measureUnitId); public void setmeasureunitpk(measureunitpk measureunitpk) { this.measureunitid = measureunitpk.measureunitid; 41
42 public class ProductEJBBean implements EntityBean { Entity Bean - Skelett public ProductPK ejbcreate (...) throws CreateException, DuplicateKeyException { // returns Primary Key Object // für jede create() Methode aus Home eine von der Signatur her passende // für einen Satz in die Datenbank, der die Bean repräsentiert // setzt die Instanz Variablen public void ejbpostcreate(...) { // EJB object identity ist jetzt verfügbar (EntityContext.getEJBObject()) public void ejbremove() throws RemoveException { // entfernt Satz aus Datenbank, der die Bean repräsentiert public void ejbload() { // synchronisiert Instanzvariable mit Satz aus Datenbank public void ejbstore() { // schreibt Zustand der Instanzvariablen in Datenbank public ProductPK ejbfindbyprimarykey(productpk pk) throws FinderException { // locates one entity object in the database public void setentitycontext(entitycontext context) { // container übergibt reference to EntityContext // bean allocates resources held for the bean's lifetime public void unsetentitycontext() { // Freigabe von Ressource, die allokiert wurden in setentitycontext public void ejbactivate() { // container associates EJB object identity with an instance // bean allocates additional resources needed in ready state public void ejbpassivate() { // container dissociates identity from instance // bean frees resources allocated in ejbactivate 42
43 Entity Bean Zustandsablauf 1 Client: ProductEJB productcrt = productejbhome.create("cotes du Bourgogne", 7.8, "fl"); log EJB Server: [Default] schulung.app.product.productejbbean: setentitycontext() null [Default] schulung.app.product.productejbbean: ejbcreate() null [Default] schulung.app.product.productejbbean: ejbpostcreate() [schulung.app.product.productpk: 104] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] Client: System.out.println("Product: id=" + productcrt.getid() + ", desc=" + productcrt.getdesc() + ", price=" + productcrt.getprice() + ", measureunitpk=" + productcrt.getmeasureunitpk() ); log EJB Server: [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 104] Client: productcrt.remove(); log EJB Server: [Default] schulung.app.product.productejbbean: ejbremove() [schulung.app.product.productpk: 105] 43
44 Client: ProductPK pk = new ProductPK(5); productejb = productejbhome.findbyprimarykey(pk); Entity Bean Zustandsablauf 2 log EJB Server: [Default] schulung.app.product.productejbbean: setentitycontext() null [Default] schulung.app.product.productejbbean: ejbfindbyprimarykey() [Default] schulung.app.product.productejbbean: found [schulung.app.product.productpk: 5] Client: System.out.println("Product: id=" + productejb.getid() + ", desc=" + productejb.getdesc() + ", price=" + productejb.getprice() + ", measureunitpk=" + productejb.getmeasureunitpk() ); log EJB Server: [Default] schulung.app.product.productejbbean: setentitycontext() null [Default] schulung.app.product.productejbbean: ejbactivate() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbload() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] Client: String desc = productejb.getdesc().trim(); log EJB Server: [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] Client: desc = desc + "-1"; productejb.setdesc(desc); log EJB Server: [Default] schulung.app.product.productejbbean: ejbstore() [schulung.app.product.productpk: 5] 44
45 Deployment Descriptor ejb-jar.xml 1 <?xml version="1.0" encoding="utf-8"?> - <ejb-jar> <description>libra edu Enterprise Beans</description> <display-name>libra edu Enterprise Beans</display-name> - <enterprise-beans> - <entity> <description>product</description> <ejb-name>productejb</ejb-name> <home>schulung.app.product.productejbhome</home> <remote>schulung.app.product.productejb</remote> <ejb-class>schulung.app.product.productejbbean</ejbclass> <persistence-type>bean</persistence-type> <prim-key-class>schulung.app.product.productpk</prim-keyclass> <reentrant>false</reentrant> - <resource-ref> <description>datasource for Product EJB</description> <res-ref-name>jdbc/edu</res-ref-name> <res-type>javax.sql.datasource</res-type> <res-auth>container</res-auth> </resource-ref> </entity> 45
46 <?xml version="1.0" encoding="utf-8"?> - <ejb-jar> - <enterprise-beans>... </enterprise-beans> - <assembly-descriptor> - <container-transaction> - <method> <ejb-name>productejb</ejb-name> <method-name>*</method-name> </method> <trans-attribute>required</trans-attribute> </container-transaction> - <container-transaction> - <method> <ejb-name>productejb</ejb-name> <method-name>findbyprimarykey</method-name> </method> <trans-attribute>notsupported</trans-attribute> </container-transaction> - <container-transaction> - <method> <ejb-name>productejb</ejb-name> <method-name>getdetail</method-name> </method> <trans-attribute>notsupported</trans-attribute> </container-transaction> </assembly-descriptor> </ejb-jar> Deployment Descriptor ejb-jar.xml 2 46
47 EJB Server Deployment edu.jar Jar File META-INF/ejb-jar.xml ProductEJB.class ProductEJBHome.class ProductEJBBean.class ProductPK.class jar cvf edu.jar META-INF/ejb-jar.xml META-INF/jboss.xml schulung/app/product/*.class copy edu.jar "\jboss-2.4.3\deploy" 47
48 J2EE Patterns DAO (Data Access Object) Auslagerung des SQL Codes in eine eigene Klasse Value Objects Bündelung von Attributen in einer Klasse -> Core J2EE Patterns Best Practices and Design Strategies by Alur / Cupri / Malks ISBN
49 EJB 2.0 Entity Beans CMP Modell hat sich erheblich verbessert Container managed Relations zwischen Entity Beans Neben Remote Interfaces auch Local Interfaces Query Language für Entity Beans 49
50 Session Beans Session Beans werden dazu verwendet, um serverseitige Aufgaben im Auftrag des Clients auszuführen, Ressourcen (wie Kurse und Tabellen) zugänglich zu machen und das Zusammenspiel von Entity Beans zu organisieren. Session Beans haben keine Persistenz und repräsentieren keine Daten aus einer Datenbank (sehr wohl kann es aber zu ihren Aufgaben gehören, Daten aus der Datenbank zu lesen und zu schreiben) und enkapsulieren typischerweise die Business Logik einer Anwendung. Typische Beispiele für Session Beans sind: Warenkorb, der sich während einer Session aufbaut Währungsumrechner, Buchungsprozesse 50
51 Es gibt zwei grundsätzliche Arten von Session Beans: Stateless und Stateful. Stateless Session Beans behalten keine Zustandsinformation von einem Aufruf zum nächsten. Man kann sie wie Funktionsaufrufe verstehen, die allein mit den übergebenen Parametern arbeiten: Eingabe von einer Währung Ausgabe in Euro Stateful Stateless Session Beans Stateful Session Beans behalten einen Zustand von Aufruf zu Aufruf. Wenn einem Warenkorb ein Artikel hinzugefügt wird, ist dieser auch beim nächsten Hinzufügen noch erhalten. Eine "stateful" Session Bean spiegelt den Zustand einer client-seitigen "Session" wider. Der Container kann (aus Container Management Gründen) eine Session Bean zeitweise aus dem Memory nehmen und in einen Secondary Storage (Disk) schreiben. Dieser Transfer wird Instanz "Passivation" genannt. Der umgekehrte Transfer ist "Activation". Der Container sollte eine Session Bean nur passivieren, wenn sie nicht Teil einer Transaktion ist. Damit der Container den "State" einer Session Bean besser managen kann, wird ihm im Deployment Descriptor der Bean mitgeteilt, ob es sich um eine STATELESS oder STATEFUL Session Bean handelt. Bei STATELESS Session Beans bleibt kein Zustand zwischen Methoden Aufrufen vorhanden und kann eine Bean Instanz von jedem Client verwendet werden. Bei STATEFUL Session Beans muss der Zustand der Bean zwischen Methoden und über Transaktionsgrenzen hinweg erhalten bleiben. 51
52 OrderController Session Bean OrderController SessionBean Home Interface create(); List positions; ejbcreate() {... Remote Interface addproduct( ProductPK pk); gettotalprice(); addproduct(productpk pk) { productejb = producthome. findbyprimarykey(pk); productdetail = productejb.getdetail(); positions.add(productdetail); Home Interface findbyprimarykey (5153) Product EntityBean int id String name; double price; ejbfindbyprimarykey(...) Remote Interface getdetail() getdetail() { return new ProductDetail(id, name, price..); Product ID... Product Name 5153 Cotes du Rhone... Preis
53 public class OrderControllerEJBBean implements SessionBean { SessionBean - Skelett public void ejbcreate () throws CreateException { public void ejbremove() throws RemoveException { public void setentitycontext(entitycontext context) { // container übergibt reference to EntityContext // bean allocates resources held for the bean's lifetime public void unsetentitycontext() { // Freigabe von Ressource, die allokiert wurden in setentitycontext public void ejbactivate() { // container associates EJB object identity with an instance // bean allocates additional resources needed in ready state public void ejbpassivate() { // container dissociates identity from instance // bean frees resources allocated in ejbactivate Kein public void ejbpostcreate(...) { public void ejbload() { public void ejbstore() { public... ejbfindbyprimarykey(...) throws FinderException { 53
54 public class OrderControllerEJBBean implements SessionBean { private SessionContext context; private javax.naming.initialcontext jndicontext; private List positions; public void ejbcreate() throws RemoteException, CreateException { positions = new ArrayList(); public void addproduct(productpk productpk) { // check for duplicates Iterator it = positions.iterator(); while (it.hasnext()) { OrderPos pos = (OrderPos) it.next(); Product product = pos.getproduct(); if (product.getpk().equals(productpk)) { pos.setquantity( pos.getquantity() + 1); return; // find product and add it to positions try { ProductEJBHome producthome = getproductejbhome(); ProductEJB productejb = producthome.findbyprimarykey(productpk); OrderPos pos = new OrderPos(); pos.setproduct(productejb.getdetail()); pos.setquantity(1); positions.add(pos); catch (javax.ejb.finderexception e) { throw new EJBException(e); catch (java.rmi.remoteexception e) { throw new EJBException(e); OrderController SessionBean 54
5.2 Workshop EJB. Entwicklung von EJB-Anwendungen. Das JOnAS-System
5.2 Workshop EJB Entwicklung von EJB-Anwendungen Welche Schritte werden benötigt, bis eine verteilte EJB-Anwendung einsatzbereit ist? Was muss alles implementiert werden? An welchen Stellen unterstützt
Mehr4.2 Workshop EJB. Entwicklung von EJB-Anwendungen
4.2 Workshop EJB Entwicklung von EJB-Anwendungen Welche Schritte werden benötigt, bis eine verteilte EJB-Anwendung einsatzbereit ist? Was muss alles implementiert werden? An welchen Stellen unterstützt
MehrEnterprise 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
MehrSoftwareentwicklung 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
MehrDer 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
MehrEJB 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
MehrEJB 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.
MehrEntwicklung 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
MehrJ2EEKurs. 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
MehrAnwendung 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
MehrSession 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
MehrEnterprise Java Beans
silbergrau Consulting & Software GmbH Enterprise Java Beans Fachhochschule Hagenberg WS 2001 / 2002 Silbergrau Consulting & Software GmbH Dr. Andreas Erlach Inhaltsübersicht Application Server J2EE Architektur
MehrEnterprise 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
MehrClient/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)
MehrEnterprise 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?
MehrJava 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
MehrKonfigurationslanleitung für J2EE und Eclipse im KBS-Pool
Konfigurationslanleitung für J2EE und Eclipse im KBS-Pool JBoss vorbereiten Wir haben ein zip-archiv mit JBoss 4.0.5 in /opt/jboss-4.0.5.zip hinterlegt. Entpacken Sie dieses in ihrem Homeverzeichnis an
Mehr6.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
MehrAnalyse 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
MehrOracle: 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
MehrGroß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,
MehrORACLE 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
MehrIAC-Programmierung HELP.BCFESITSIACPROG. Release 4.6C
IAC-Programmierung HELP.BCFESITSIACPROG Release 4.6C IAC-Programmierung SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen
MehrWorkshop 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
MehrJDBC. 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
Mehrseit 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
MehrBeispiel: 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
MehrObjektorientierte 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)
MehrThemen. 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
MehrErstellung 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
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrEclipse 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
MehrAnleitung. 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
MehrEnterprise 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
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrApplet Firewall und Freigabe der Objekte
Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable
MehrWebSphere 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
MehrKonfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier)
Konfiguration Firewall (Zyxel Zywall 10) (von Gruppe Schraubenmeier) Firewall über Seriellen Anschluss mit Computer verbinden und Netzteil anschliessen. Programm Hyper Terminal (Windows unter Start Programme
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
Mehrdesk.modul : WaWi- Export
desk.modul : WaWi- Export Die Schnittstelle besteht aus einem Programm, welches die Daten aus der OfficeLine ausliest und in eine XML-Datei exportiert. Die Schnittstelle ist als ein eigenständiges Programm
MehrOERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt
OERA OpenEdge Reference Architecture Mike Fechner PUG Infotag 19. Mai 05 Frankfurt Überblick OERA Separated presentation and integration layers Common business logic with advanced models Data access abstracted
MehrBei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren
NetWorker - Allgemein Tip 399, Seite 1/8 Bei der Benutzung des NetWorker Client Configuration Wizards könnten Sie die Namen Ihrer Datenbanken verlieren Die EMC EmailXtender Server Software erstellt auf
MehrLokale Installation von DotNetNuke 4 ohne IIS
Lokale Installation von DotNetNuke 4 ohne IIS ITM GmbH Wankelstr. 14 70563 Stuttgart http://www.itm-consulting.de Benjamin Hermann hermann@itm-consulting.de 12.12.2006 Agenda Benötigte Komponenten Installation
Mehr11. 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
MehrRemote 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
MehrOP-LOG www.op-log.de
Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server
MehrArchitekturen 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
MehrObjectBridge Java Edition
ObjectBridge Java Edition Als Bestandteil von SCORE Integration Suite stellt ObjectBridge Java Edition eine Verbindung von einem objektorientierten Java-Client zu einer fast beliebigen Server-Komponente
MehrEnterprise 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
MehrDie Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter
Die Programmiersprache Java Dr. Wolfgang Süß Thorsten Schlachter Eigenschaften von Java Java ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache. Java ist......a simple,
MehrLizenzen auschecken. Was ist zu tun?
Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.
MehrR-BACKUP MANAGER v5.5. Installation
R-BACKUP MANAGER v5.5 Installation Microsoft, Windows, Microsoft Exchange Server and Microsoft SQL Server are registered trademarks of Microsoft Corporation. Sun, Solaris, SPARC, Java and Java Runtime
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrProgrammierung 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,
Mehrphp 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.
MehrUnsere Webapplikation erweitern
Unsere Webapplikation erweitern Um die Webapplikation zu benutzen: 1. Starten Sie den Server, indem Sie das Hauptprogramm in der Klasse ImdbServer starten. 2. Laden Sie im Browser die Seite http://localhost:8080/html/index.html.
MehrArchitekturen. 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
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrSoftwareentwicklung 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
MehrWarum 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
MehrEJBs und Sicherheit. Vorlesung: Applikationsserver. Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen.
EJBs und Sicherheit Vorlesung: Applikationsserver Prof. Dr. Ch. Reich rch@fh furtwangen.de http://www.informatik.fh furtwangen.de/~reich Deklarative Sicherheit Zugriffsrechte auf die EJB-Methoden werden
Mehr3. Stored Procedures und PL/SQL
3. Stored Procedures und PL/SQL Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln
MehrVerbinden von IBM Informix mit Openoffice mittels JDBC
Verbinden von IBM Informix mit Openoffice mittels JDBC Voraussetzungen Installierte und laufende IBM Informixdatenbank. Getestet wurde mit IDS 9.40 und 10.00. Sollte aber auch mit älteren Versionen funktionieren.
MehrFujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013
Fujitsu BeanConnect TM V3.0 Software 0 FUJITSU LIMITED 2013 Die Herausforderung: Hostanbindung Viele Unternehmen besitzen Mainframe- und Legacy-Anwendungen, so genannte Enterprise Information Systems (EIS),
MehrSecure Network Communications (BC-SEC-SNC)
Secure Network Communications (BC-SEC-SNC) HELP.BCSECSNC Release 4.6C SAP AG Copyright Copyright 2001 SAP AG. Alle Rechte vorbehalten. Weitergabe und Vervielfältigung dieser Publikation oder von Teilen
MehrWhitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und 2005. combit GmbH Untere Laube 30 78462 Konstanz
combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager Datensatzhistorie mit dem SQL Server 2000 und 2005 Datensatzhistorie mit dem SQL Server 2000 und 2005-2 - Inhalt
MehrWie können Sie eine Client Lizenz wieder freigeben?
NetWorker - Allgemein Tip #267, Seite 1/5 Wie können Sie eine Client Lizenz wieder freigeben? Auch diese Frage wird häufig gestellt - sie ist wichtig, wenn ein Computer außer Dienst gestellt wurde und
MehrSE2-10-Entwurfsmuster-2 15
Architektur und Skalierbarkeit SE2-10-Entwurfsmuster-2 15 Skalierbarkeit Skalierbarkeit bedeutet die Anpassung einer Software an wachsende Last: Interaktionsfrequenz Nutzerzahl Anpassung durch Hinzufügen
MehrStudentische Lösung zum Übungsblatt Nr. 7
Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int
MehrEinführung in Javadoc
Einführung in Javadoc Johannes Rinn http://java.sun.com/j2se/javadoc Was ist Javadoc? Javadoc ist ein Werkzeug, dass eine standardisierte Dokumentation für die Programmiersprache Java unterstützt. Vorteil:
MehrEnterprise JavaBeans Überblick
Enterprise JavaBeans Überblick 1. Überblick Java EE 5 und Komponententechnologien 2. Einführung Java EE 5 Plattform 3. Enterprise JavaBeans Architektur 4. Ressourcen Management und Primäre Services 6.
MehrAlbert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen
Open Source professionell einsetzen 1 Mein Background Ich bin überzeugt von Open Source. Ich verwende fast nur Open Source privat und beruflich. Ich arbeite seit mehr als 10 Jahren mit Linux und Open Source.
MehrWebService in Java SE und EE
Schlüsselworte Java, JAX-WS, JAX-RS, JAXB, XML. Einleitung WebService in Java SE und EE Wolfgang Nast MT AG Ratingen Es werden die Mölichkeiten von WebServices in Java SE und EE, mit SOAP und REST gezeigt.
MehrPraktische Übung 'JUnit-Test'
Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse
MehrUmbenennen eines NetWorker 7.x Servers (UNIX/ Linux)
NetWorker - Allgemein Tip #293, Seite 1/6 Umbenennen eines NetWorker 7.x Servers (UNIX/ Linux) Dies wird offiziell nicht von unterstützt!!! Sie werden also hierfür keinerlei Support erhalten. Wenn man
MehrMobile 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
MehrGetting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen
Getting Started Guide CRM Online, 2013 & 2015 xrm1 Verpflegungspauschalen 1 Download und Import der Lösung 2 Import der aktuellenverpflegungspauschalen 3 Weitere Informationen und Problembehandlung 1 Download
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
Mehri 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
Mehr4D Server v12 64-bit Version BETA VERSION
4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und
MehrKlassendefinitionen verstehen
Klassendefinitionen verstehen Java-Programme bestehen aus Klassendefinitionen und sonst nichts! 1 1.0 Konzepte Felder Konstruktoren Methoden Parameter Zuweisungen ( = ) Anweisungen bedingte Anweisungen
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrDieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.
Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html
MehrJDBC. 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
MehrOWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes
OWASP Stammtisch München Sep 2014 XSS und andere Sicherheitslücken aus der Perspektive des Programmcodes 1 XSS: Cross-Site Scripting 1.) Es gelangen Daten in den Web-Browser, die Steuerungsinformationen
MehrInstallation SQL- Server 2012 Single Node
Installation SQL- Server 2012 Single Node Dies ist eine Installationsanleitung für den neuen SQL Server 2012. Es beschreibt eine Single Node Installation auf einem virtuellen Windows Server 2008 R2 mit
MehrOnline Banking System
Online Banking System Pflichtenheft im Rahmen des WI-Praktikum bei Thomas M. Lange Fachhochschule Giessen-Friedberg Fachbereich MNI Studiengang Informatik Erstellt von: Eugen Riske Yueksel Korkmaz Alper
MehrSEP 114. Design by Contract
Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit
MehrProf. Dr. Uwe Schmidt. 21. August 2007. Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)
Prof. Dr. Uwe Schmidt 21. August 2007 Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252) Zeit: 75 Minuten erlaubte Hilfsmittel: keine Bitte tragen Sie Ihre Antworten und fertigen
MehrDatenbanken & Informationssysteme Übungen Teil 1
Programmierung von Datenbankzugriffen 1. Daten lesen mit JDBC Schreiben Sie eine Java-Anwendung, die die Tabelle Books in der Datenbank azamon ausgibt. Verwenden Sie dabei die SQL-Anweisung select * from
MehrInformationsintegration 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
MehrJSP Grundlagen. JEE Vorlesung Teil 5. Ralf Gitzel ralf_gitzel@hotmail.de
JSP Grundlagen JEE Vorlesung Teil 5 Ralf Gitzel ralf_gitzel@hotmail.de 1 Übersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht JSP Konzept Model-View-Controller mit JSPs JSP Expression Language EL Literale
MehrAnforderungen an die HIS
Anforderungen an die HIS Zusammengefasst aus den auf IBM Software basierenden Identity Management Projekten in NRW Michael Uebel uebel@de.ibm.com Anforderung 1 IBM Software Group / Tivoli Ein Feld zum
MehrEin neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen.
Ein neues Outlook Konto können Sie im Control Panel über den Eintrag Mail erstellen. Wählen Sie nun Show Profiles und danach Add. Sie können einen beliebigen Namen für das neue Outlook Profil einsetzen.
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrApplication Frameworks
Seminar Software Engineering 1 Grundlagen Agenda Spring Framework Dependency Injection Aspektorientierte Programmierung Datenbankanbindung Modell View Controller Sicherheit Spring vs. Java EE Zusammenfassung
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrJ2EE-Praktikum. Enterprise JavaBeans Patterns. Peter Thiemann. J2EE-Praktikum, WS2005/2006. Universität Freiburg
J2EE-Praktikum Enterprise JavaBeans Patterns Peter Thiemann Universität Freiburg J2EE-Praktikum, WS2005/2006 Inhalt 1 Designmuster Sitzungsfassade Wertobjekte 2 Implementierungsmuster Geschäftsinterfaces
MehrAVID-Übung 3. EJB mit JBoss und Eclipse. 17. Juni Andreas I. Schmied Abteilung Verteilte Systeme Projektgruppe AspectIX
Abteilung Verteilte Systeme Projektgruppe AspectIX Universität Ulm Fakultät für Informatik AVID-Übung 3 EJB mit JBoss und Eclipse 17. Juni 2004 Andreas I. Schmied (schmied@inf...) AVID-Übung 3 Aufgabenstellung
Mehr