Komponensek együttműködése web-alkalmazás környezetben. Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT richard.jonas@tsoft.



Hasonló dokumentumok
környezetben Debreceni Egyetem, Informatiai Intézet T-Soft Mérnökiroda KFT

Bevezető. Servlet alapgondolatok

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

és az instanceof operátor

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Programozási nyelvek Java

OOP: Java 8.Gy: Abstract osztályok, interfészek

Adatbázisok webalkalmazásokban

PHP II. WEB technológiák. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) PHP II / 19

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

JAVA PROGRAMOZÁS 2.ELŐADÁS

Osztályok. 4. gyakorlat

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?


ELTE SAP EXCELLENCE CENTER Oktatóanyag. Sas László: ABAP Objects Objektumorientált ABAP

ELTE SAP Excellence Center Oktatóanyag 1

Programozási nyelvek Java

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Komponens alapú programozás Bevezetés

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Programozási nyelvek Java

Miután létrehoztuk, szeretnénk neki beszédesebb nevet adni. A név változtatásához a következőt kell tenni:

Adatbázis Rendszerek II. 1. SQL programozási felületek 39/1B IT MAN

Programozás III KIINDULÁS. Különböző sportoló típusok vannak: futó, magasugró, focista, akik teljesítményét más-más módon határozzuk meg.

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Abstract osztályok és interface-ek. 7-dik gyakorlat

OOP: Java 8.Gy: Gyakorlás

Java programozási nyelv 11. rész Adatbázis-programozás

Adatbázis rendszerek II. Adatbázis elérése C# kliens programból ADO.NET API-n keresztül

Web-technológia PHP-vel

A könyv tartalomjegyzéke

Objektumelvű programozás

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

Enterprise JavaBeans 1.4 platform (EJB 2.0)

Java programozási nyelv 4. rész Osztályok II.

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Programozási nyelvek II.: JAVA

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Java és web programozás

Tranzakciókezelés PL/SQL-ben

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Unit Teszt. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Unit Teszt / 22

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

Adatbázis használat I. 5. gyakorlat

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

abkezel.java import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class abkezel extends JFrame {

AutoCAD MAP DWG mapobject TOPOBASE konvertáló program dokumentáció

Áttekintés. Tartalom. Mi is az a Bean?

Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék

Programozás BMEKOKAA146. Dr. Bécsi Tamás 7. előadás

Web-fejlesztés NGM_IN002_1

JavaServer Pages (JSP) (folytatás)

C#, OOP. Osztályok tervezése C#-ban

Adatbázisok* tulajdonságai

Programozási nyelvek II.: JAVA, 3. gyakorlat

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

III. OOP (objektumok, osztályok)

OOP #14 (referencia-elv)

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

BME MOGI Gépészeti informatika 8.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás:

Access adatbázis elérése OLE DB-n keresztül

Objektumorientált programozás C# nyelven

Adatbázis Rendszerek I. 10. SQL alapok (DML esettanulmány)

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

JAVA PROGRAMOZÁS 3.ELŐADÁS

Generikus Típusok, Kollekciók

Adatbázis-kezelés ODBC driverrel

Alkalmazott Modul III 6. előadás. Objektumorientált programozás: öröklődés és polimorfizmus

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Java VI. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. Java VI.: Öröklődés JAVA6 / 1

B I T M A N B I v: T M A N

Java programozási nyelv 6. rész Java a gyakorlatban

Haladó DBMS ismeretek 1

A WEB programozása - JSP1 dr.gál Tibor őszi félév

Java és web programozás

C++ programozási nyelv

Perzisztencia. ANTAL Margit. Sapientia - EMTE. ANTAL Margit Java technológiák 11. előadás Perzisztencia

Kalmár György Adatbázis alapú rendszerek

Szoftver-technológia II. Tervezési minták. Irodalom. Szoftver-technológia II.

JAVA webes alkalmazások

ZH mintapélda. Feladat. Felület

8. Gyakorlat SQL. DDL (Data Definition Language) adatdefiníciós nyelv utasításai:

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Közösség, projektek, IDE

WEB-PROGRAMOZÁS II. 1. Egészítse ki a következő PHP kódot a következők szerint: a,b,c,d: <?php. interface Kiir { public function kiir();

Java és web programozás

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Java programozási nyelv 5. rész Osztályok III.

ios alkalmazásfejlesztés Koltai Róbert

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

PHP5 Új generáció (2. rész)

Bevezetés: az SQL-be

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Átírás:

Komponensek együttműködése web-alkalmazás környezetben Jónás Richárd Debreceni Egyetem T-Soft Mérnökiroda KFT

Komponensek a gyakorlatban A szoftverkomponenseket fejlesztő csoportoknak szüksége van olyan technológiákra, amelyek segítségével a csoportok által fejlesztett komponensek egymáshoz illeszthetők. Köztes komponenseket is használhatnak, amelyek vagy fontosak (security), vagy nem (logging, caching). Bináris illetve third party komponensek beépítése (log4j, jndi/ldap) A kommunikációval foglalkozó kódok szétterjednek az alkalmazás forrásában, így csaknem lehetetlen megválni a komponenstől. Hogyan tudjuk a komponensek közötti kommunikációt összefogni?

Aspektus-orientált programozás A style of programming that attempts to abstract out features common to many parts of the code beyond simple functional modules and thereby improve the quality of software....approaches to allow programmers to express each of a system's aspects of concern in a separate and natural form, and then automatically combine those separate descriptions into a final executable form. These approaches have been called aspectoriented programming.

AspectJ: Fogalmak Egy join point, egy jól meghatározott pont a forrásprogramban. Jelölhet konstruktor, metódust, attribútumokat, osztályokat, stb. Egy pointcut-tal, join point-ok segítségével eseményeket/feltételeket definiálhatunk. Jelölhet konstruktor-/metódushívást, attribútum értékének elérését, beállítását. Vajon egy osztályban, metódusban vagyunk-e? Vajon egy metódus végrehajtódása alatt vagyunk-e? Egy advice egy kódrészlet, amely végrehajtódik, ha a pointcutban megadott feltételek teljesülnek. A végrehajtás történhet a pointcut-ban leírt esemény bekövetkezése előtt, után vagy helyett. Komponensek együttműködése web-alkalmazás környezetben

AspectJ: Join point példák public Connection DriverManager.getConnection(..) (1) public * ResultSet.*(..) (2) (1) Publikus, Connection-nel visszatérő, getconnection nevű metódusa a DriverManager osztálynak, tetszőleges formális paraméterlistával. (2) A ResultSet-et implementáló osztályok összes publikus metódusa, tekintet nélkül a nevükre, visszatérési típusukra.

AspectJ: Join point példák public void SomeBean.set*(String) (3) public int Number+.intValue() (4) (3) A SomeBean osztály példányainak összes publikus beállítómetódusai, amelyek egy String paramétert várnak. (4) Az intvalue nevű, int-tel visszatérő, publikus metódusa azon objektumoknak, amely a Number típussal helyettesíthetők.

AspectJ: Pointcut példák call(public String ResultSet.getString(..)) (1) execution(public int Number+.intValue()) (2) (1) A ResultSet interfészt implementáló objektumok getstring nevű, String-gel visszatérő, tetszőleges formális paraméterlistával rendelkező metódusainak hívását jelöli. (2) Az előbb említett metódusok végrehajtását jelöli.

AspectJ: Pointcut példák pointcut accessbean(object bean) : (call(public * get*()) call(public void set*(..))) && target(bean); Egy accessbean nevű nevesített pointcut-ot definiál, egy bean nevű formális paraméterrel, melynek típusa Object. Olyan pontokban teljesül, ahol vagy a lekérdező vagy a beállító metódusok hívása történik.

Alkalmazás adatmanipulációra A kliens és az alkalmazás közötti kommunikáció előtt a GUI validálja az adatokat. hatására a szerverkomponensek megkapják az adatokat. után a kliens visszakaphatja az adatokat, további javítás céljából. Adatmanipulációs utasítások végrehajtása. Nagyon hasonló kódok jelennek meg! A kód generálás nem segít!

Kérési paraméterek 1. interface RequestGetter { public ServletRequest getrequest(); public void setrequest(servletrequest request); aspect ParameterGetter { declare parents: Bean implements RequestGetter; private ServletRequest RequestGetter._rq; public ServletRequest RequestGetter.getRequest(){ return _rq;... // setrequest hasonló a getrequest-hez Komponensek együttműködése web-alkalmazás környezetben

Kérési paraméterek 2.... after(bean b, HttpServletRequest request): execution(public Bean.new(..)) && this(b) && cflow( execution(public void *.HttpJspBase._jspService( HttpServletRequest, HttpServletResponse) ) && args(request) ){ b.setrequest(request);...

Kérési paraméterek 3.... String around(requestgetter rg): get(string RequestGetter+.parameter*) && this(rg) { String attributename = thisjoinpointstaticpart.getsignature().getname(); String parametername = attributename.substring(9); return rg.getrequest().getparameter(parametername);

Kérési paraméterek 4. public class Bean { private String parameterinvoiceid; public void execute(){... ResultSet r = statement.executequery( select * from invoice where id = ' + parameterinvoiceid + ' );...

További alkalmazások Interfészek automatikus implementálása. Adatmanipulációs kódok automatikus implementálása. add (insert into), mod (update), del (delete from) Jelölni kell, hogy a paraméter az elsődleges kulcs része-e! (A kulcsrészek neve aláhúzással kezdődik.) public void mod_invoice(string _invoiceid, Date createdate){ update invoice set createdate =? where invoiceid =?

Jelenlegi kutatások Az említett stratégiák egy kereskedelmi portálrendszerbe (MythoLogic) történő integrálása növelheti a fejlesztés hatékonyságát. (a forrás 4MB) A metadata eszközrendszer kiaknázása. (JSR-175 Metadata) Komponensek automatikus környzet-detektálása, automatikus adaptáció a környező komponensekhez. Teljesítménytesztekkel és további forráskód elemzésekkel növelhető az említett megoldás hatékonysága.