Hello, EJB! Egy egyszerű példa

Hasonló dokumentumok
Enterprise Java Beans. EJB - Általános bevezető

CREATE {DATABASE SCHEMA} [IF NOT EXISTS] db_name [create_specification]

Adatbázisok webalkalmazásokban

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Stateless Session Bean

JNDI - alapok. Java Naming and Directory Interface

JEE tutorial. Zsíros Levente, 2012

Bevezetés a Seam keretrendszer használatába

Adatkezelés. 11. előadás (Entity Beans)

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

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

libgdx alapok, első alkalmazás

EFER, TELEPÍTÉSI UTASÍTÁS EFER PAYMENT GATEWAY

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

8. rész: Implementáció JDeveloperben

Biztonság java web alkalmazásokban

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

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

JAVA webes alkalmazások

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

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

Adatbázis-kezelés ODBC driverrel

Előszó. Bevezetés. Java objektumok leképzése relációs adatbázisokra OJB-vel Viczián István Viczián István

Enterprise JavaBeans 1.4 platform (EJB 2.0)

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

A Java EE 5 plattform

Vizuális programozás gyakorlat

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Java Remote Method Invocation API

10. Gyakorlat: Alkalmazások publikálása Remote Desktop Szervízen keresztül

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

JDBC - adatbáziskezelés

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

Mobil Informatikai Rendszerek

Lottery. WebLogic JMS, Jersey, JMX, JNDI. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 8. Bedők Dávid v0.

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

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

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Java és web programozás

EJB - Perzisztencia. EntityManager

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Tartalom. Az EJB 2.1 problémái Az EJB 3 megoldásai

Java RMI Áttekintés. A Java RMI. A Java RMI architektúrája. Ficsor Lajos. Általános Infromatikai Tanszék Miskolci Egyetem 1.

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

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

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

JavaServer Pages (JSP) (folytatás)

Microsoft SQL Server telepítése

Grafikus felhasználói felületek. Abstract Window Toolkit, a java.awt és java.awt.event csomagok

Java és web programozás

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

OOP: Java 8.Gy: Gyakorlás

Bevezetés a Java programozási nyelvbe

A Java Persistence API PersistenceAPI / 3

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

MDAC - Microsoft Data Access Components

Szoftvertechnológia alapjai Java előadások

2. gyakorlat: Tartományvezérlő, DNS, tartományba léptetés, ODJ, Core változat konfigurálása, RODC

LINUX LDAP címtár. Mi a címtár?

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

Shopping. JDBC, Datasource, Jasper Report. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 12. Bedők Dávid v0.

SQL Backup and FTP. A program telepítésének menete. A szoftvert a következő weboldalról ingyenesen tölthető le:

Java. Java Message Service. ANTAL Margit. JMS API technológia. ANTAL Margit. Sapientia - EMTE

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

Java RMI Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Utolsó módosítás: Ficsor Lajos. javarmi / 1

OOP és UML Áttekintés

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ 2D tömb: Java versus C++ 2D tömb: Java.

KROMESCH SÁNDOR APP FELHŐ. API-k és Webszolgáltatások a Cloudban. Magyarországi Web Konferencia November 8.

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

Kivételkezelés, naplózás. Exception handling, logging

Mobil Informatikai Rendszerek

RapidMiner telepítés i. RapidMiner telepítés

Java. JIT (Just in Time) fordítók alkalmazása, optimalizálás AOT (Ahead of Time) fordítók alkalmazásának lehetősége

Az új be- és kimenet könyvtár

ANDROID ALKALMAZÁSFEJLESZTÉS

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

4. rész: Java Enterprise Edition bevezetı. Bakay Árpád dr. NETvisor kft (30)

Java Programozás 3. Gy: Java GUI. Swing, AWT

ÁLTALÁNOSAN LEÍRVA: KONKRÉTAN AZ INSOMNIA ESETÉBEN:

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

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

Kliens oldali SQL-API

Kézikönyv ABAS-TOOLS használata

Modern unit és integrációs tesztelés

Sokan nehezen tudják elképzelni, hogy hogyan és hol tudják az jeiket megkapni.

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

Programozási nyelvek Java

Bánsághi Anna

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

4. Gyakorlat: Csoportházirend beállítások

Átírás:

Hello, EJB! Egy egyszerű példa

Előkészítés Java SDK letöltése és telepítése Java EE platform és alkalmazásszerver letöltése és telepítése Glassfish (open-source edition, v3) Fejlesztői környezet letöltése, konfigurálása Eclipse IDE for Java EE Developers Az alkalmazásszervernek megfelelő Eclipse plug-in letöltése, telepítése Adatbázisszerver letöltése, telepítése, konfigurálása Adatbázis-specifikus driver letöltése (MySQL Connector), a jar állomány bemásolása az alkalmazásszerver megfelelő könyvtárába (glassfishv3/glassfish/lib) Adatbázis létrehozása JRE beállítása az Eclipse környezetben Preferences Java Installed JREs a JDK könyvtár hozzáadása (SDK szükséges!) Server beállításai az Eclipse környezetben: Preferences Server Runtime Environments Glassfish server Beállítások: szerver könyvtár (glassfishv3/glassfish), JRE

Adatbázis Adatforrás beállítása az Eclipse környezetben Data Source Explorer New beállítások Adatbázis táblák létrehozása (Eclipse new SQL file execute SQL files) Példa: create table CABIN ( ID int primary key NOT NULL, SHIP_ID int, BED_COUNT int, NAME char(30), DECK_LEVEL int )

Szerver konfigurálása Eclipse, Servers view szerver (Glassfish) hozzáadás indítás view Admin Console Adatforrás beállítása: Resources JDBC Connection Pools New Pool name: MySQLPool Resource type: javax.sql.datasource Database vendor: MySQL Datasource class name: com.mysql.jdbc.jdbc2.optional.mysqldatasource Server name (pl. localhost) Database name (pl. test) URL (pl. jdbc:mysql://localhost:3306/test ) Url (pl. jdbc:mysql://localhost:3306/test ) User (pl. root) Password (pl. root password) Ha szükséges, további tulajdonságok beállítása Resources JDBC JDBC Resource JNDI name (pl. MySQL) Pool - MySQLPool

Projekt létrehozása Eclipse New EJB project Megjegyzés: szükségesek a Glassfish lib könyvtárában található jar állományok (az Eclipse ezeket automatikusan hozzárendeli): appserv-rt.jar, javaee.jar, jndi-properties.jar META-INF persistence.xml létrehozása <persistence> <persistence-unit name="titan"> <jta-data-source>mysql</jta-data-source> </persistence-unit> </persistence> Az ejbmodule mappában a csomagok létrehozása (pl. domain, travelagent) Bean-ek létrehozása: Entity bean-ek (pl. Cabin) Interfészek (pl. TravelAgentRemote) EJB-k (pl. TravelAgentBean) Projekt fordítása, telepítése a szerverre: Export EJB JAR file (megjegyzés: ha a szerver konfigurálásánál hozzárendeltük a projektet, és bekapcsoltuk az autodeploy opciót, az Eclipse automatikusan a megfelelő könyvtárba másolja a csomagot: pl. glassfish/domains/domain1/autodeploy/ejb_example.jar) Projekt futtatása: Run on server Megjegyzés: a log konzolon megtekinthetjük a bean-ekhez hozzárendelt azonosítókat/neveket (JNDI)

Entity bean package dev.com.titan.domain; import javax.persistence.column; import javax.persistence.entity; import javax.persistence.id; import javax.persistence.table; @Entity @Table(name="CABIN") public class Cabin implements java.io.serializable { private static final long serialversionuid = 1L; private int id; private String name; private int decklevel; private int shipid; private int bedcount; @Id @Column(name="ID") public int getid() { return id; public void setid(int id) { this.id = id;

Entity bean @Column(name="NAME") public String getname() { return name; public void setname(string name) { this.name = name; @Column(name="DECK_LEVEL") public int getdecklevel() { return decklevel; public void setdecklevel(int decklevel) { this.decklevel = decklevel; @Column(name="SHIP_ID") public int getshipid() { return shipid; public void setshipid(int shipid) { this.shipid = shipid; @Column(name="BED_COUNT") public int getbedcount() { return bedcount; public void setbedcount(int bedcount) { this.bedcount = bedcount; public static long getserialversionuid() { return serialversionuid; public String tostring() { return id + " " + name;

Remote interface package dev.com.titan.travelagent; import javax.ejb.remote; import dev.com.titan.domain.cabin; @Remote public interface TravelAgentRemote { public void createcabin(cabin cabin); public Cabin findcabin(int id);

Session bean package dev.com.titan.travelagent; import dev.com.titan.domain.cabin; import javax.ejb.stateless; import javax.persistence.entitymanager; import javax.persistence.persistencecontext; @Stateless(name="TravelAgent", mappedname="ejb/travelagentremote") public class TravelAgentBean implements TravelAgentRemote { @PersistenceContext(unitName="titan") private EntityManager manager; public Cabin findcabin(int id) { return manager.find(cabin.class, id); public void createcabin(cabin cabin) { manager.persist(cabin);

Kliens létrehozása Kliensalkalmazás projekt létrehozása A Glassfish modules könyvtárából a gf-client.jar csomag hozzárendelése Példa: package dev.com.titan.clients; import javax.naming.initialcontext; import dev.com.titan.domain.cabin; import dev.com.titan.travelagent.travelagentremote; public class StandaloneClient { public static void main(string args[]) { try { InitialContext ic = new InitialContext(); TravelAgentRemote tar = (TravelAgentRemote) ic.lookup("java:global/ejb_example/travelagent"); Cabin c1 = new Cabin(); c1.setid(1); c1.setname("valami"); c1.setdecklevel(1); c1.setbedcount(2); tar.createcabin(c1); Cabin c2 = tar.findcabin(1); System.out.println(c2); catch(exception e) { e.printstacktrace();

Kliens, más példa package dev.com.titan.clients; import dev.com.titan.domain.*; import dev.com.titan.travelagent.*; import javax.naming.*; import java.util.properties; import javax.rmi.portableremoteobject; public class RemoteClient { public static void main(string[] args) { try { Context jndicontext = getinitialcontext(); Object ref = jndicontext.lookup( "java:global/ejb_example/travelagent"); TravelAgentRemote dao = (TravelAgentRemote) PortableRemoteObject.narrow(ref, TravelAgentRemote.class); Cabin c1 = new Cabin(); c1.setid(1); c1.setname("valami"); c1.setdecklevel(1); c1.setbedcount(2); dao.createcabin(c1); Cabin c2 = dao.findcabin(1); System.out.println(c2); catch (javax.naming.namingexception ex) { ex.printstacktrace();

Kliens, más példa public static Context getinitialcontext() throws javax.naming.namingexception { Properties props = new Properties(); props.setproperty("java.naming.factory.initial", "com.sun.enterprise.naming.serialinitcontextfactory"); props.setproperty("java.naming.factory.url.pkgs", "com.sun.enterprise.naming"); props.setproperty("java.naming.factory.state", "com.sun.corba.ee.impl.presentation.rmi.jndistatefactoryimpl"); return new InitialContext(props);