Sunteți pe pagina 1din 8

SUBIECTE PARTIAL 2

1. Structura unei aplicatii JSF.


myJSFapp / ant build.xml / JavaSource / WebContent / WEB-INF / classes / lib jsf-impl.jar jsf-api.jar faces-config.xml web.xml /pages Comentarii la aceasta structuta: -myJSFapp-directorul de baza al aplicatiei cu numele aplica!iei -/ant-directorul care con!ine scripturi construite Ant cu un fi"ier implicit build.xml -/JavaSource-clase de aplica!ie specifice sursei Java "i propriet#!i de fi"iere -/WebContent-con!ine fi"ierele de aplica!ii Web utilizate de serverul de aplica!ii sau de c#tre container web -/WEB-INF -con!ine fi"ierele utilizate ca parte a execu!ie aplicatiei web -/classes clase Java compilate "i fi"ierele de propriet#!i copiate de la directorul JavaSource -/lib - con!ine bibliotecile necesare aplica!iei -jsf-impl.jar, jsf-api.jar fi"iere incluse n directorul lib , obligatoriu pentru orice aplicatie JSF -web.xml descriptorul de implementare a aplica!iei, inclus n directorul / WEB-INF -faces-config.xml fi"ierul de configurare JSF, inclus n directorul / WEB-INF -pages directorul con!ine pagini de prezentare JSP "i HTML

2.Pasi in crearea unei aplicatii JSF.


-Creare pagini JSP -Definire reguli de navigare -Creare managed beans -Creare fisiere de proprietati -Editarea paginilor JSP -Creare fisier index.jsp -Compilare aplicatie -Implementare si rulare a aplicatiei

3. Enumerati cele 6 faze din ciclul de viata al unei aplicatii JSF.


-Restore View(Actualizare) -Apply Request Values(Aplicare valori solicitate) -Process Validations(Valid#ri proces) -Update Model Values(Actualizare valori model) -Invoke Application(Invoca aplicatia) -Render Response(Transmite raspuns)

4. Definiti (in faces-config.xml) o regula de navigare (<navigation-rule>) cu 3 cazuri de navigare (<navigation-case>).


<navigation-rule> <from-view-id>/catalog.jsp</from-view-id> <navigation-case> <from-outcome>success</from-outcome> <to-view-id>/bookcashier.jsp</to-view-id> </navigation-case> <navigation-case> <from-outcome>out of stock</from-outcome> <from-action> #{catalog.buy} </from-action> <to-view-id>/outofstock.jsp</to-view-id>

</navigation-case> <navigation-case> <from-outcome>error</from-outcome> <to-view-id>/error.jsp</to-view-id> </navigation-case> </navigation-rule>

5. Clase de validare in JSF. (12.21)


O implementare Validator este o clas! care poate efectua validarea (verific!ri privind exactitatea) pe o EditableValueHolder. Clase de implementare: DoubleRangeVlidator - Un Validator care verific! valoarea corespunz!toare componentei mpotriva valorilor maxime "i minime specificate LengthValidator - un Validator care verific! num!rul de caractere din "ir reprezentate de valorile asociate componentei LongRangeValidator - un Validator care verific! valoarea corespunz!toare componentei mpotriva valorilor maxime "i minime specificate. Pachetul con#ine o excep#ie, de asemenea. Un ValidatorException este o excep#ie aruncata de metoda validate () a lui Validator care indic! faptul c! validarea nu a reu"it..

6. Sisteme de numire si namespaces. (15.2.5) Un sistem de numire este un set conectat de contexte de acela"i tip (au aceeasi conventie de nume), "i ofer# un set comun de opera!iuni. De exemplu, un sistem care implementeaz# DNS este un sistem de numire. Un sistem care comunic# folosind LDAP este un sistem de numire. Un sistem de numire ofer# un serviciu de numire clien!ilor s#i pentru efectuarea operatiilor legate de numire. Un serviciu de numire este accesat prin propria sa interfa!a .De exemplu, DNS ofer# un serviciu de numire care mapeaza numele de masini la adresele IP. LDAP ofer# un serviciu de numire care mapeaza numele LDAP la intr#rile LDAP. Un sistem de fi"iere ofer# un serviciu de numire care mapeaza numele de fi"iere la fi"iere "i directoare. Un spa!iu de nume(namespace) este un set de nume ntr-un sistem de denumire. De exemplu, sistemul de fi"iere UNIX are un namespace compus din toate numele de fi"iere "i directoare, n acel sistem de fi"iere. Spa!iul de nume DNS con!ine nume de domenii DNS "i inregistrari. Spa!iul de nume LDAP con!ine nume de intr#ri(inregistrari) LDAP. 7. Specificati elementele JMS cu ceva detalii.
JMS (Java Message Service) API-ul este un mesaj Java Oriented Middleware (MOM), API pentru trimiterea de mesaje ntre doi sau mai mul#i clien#i. JMS este o parte din platforma Java, Enterprise Edition, "i este definit de o specifica#ie dezvoltat sub Java Community Process ca JSR 914. Elementele JMS sunt urmatoarele: JMS provider - O implementare a interfe#ei JMS pentru un mesaj orientat middleware (MOM). Furnizorii sunt implementati fie ca o implementare Java JMS sau un adaptor pentru un MOM non-Java JMS client - -O aplica#ie sau un proces care produce "i / sau consum! mesaje. JMS producer - un client JMS care creeaz! "i trimite mesaje JMS consumer -un client JMS care prime"te mesaje. JMS message - un obiect care con#ine datele transferate ntre clien#i JMS. JMS queue - o zon! de a"teptare care con#ine mesajele care au fost trimise "i sunt n a"teptare pentru a fi citite. Dup! cum sugereaz! numele cozii, mesajele sunt livrate n ordinea trimisa. Un mesaj este scos din coada dup! ce a fost citit. JMS topic - Un mecanism de distribu#ie pentru publicarea mesajelor care sunt livrate mai multor abona#i.

8. Modele JMS.
JMS accepta doua modele:

punct-la-punct sau model de a"teptare publica si subscrie modelul n modelul punct-la-punct sau de a"teptare, un produc#tor posteaza mesaje la o anumit# coad# "i un consumator cite"te mesajele din coada..Aici, produc#torul cunoa"te destina!ia mesajului "i posteaza mesajul direct la coada consumatorului. Acesta este caracterizat prin urm#toarele: -Doar un singur consumator va primi mesajul -Producatorul nu trebuie sa difuzeze in timpul in care consumatorul consuma mesajul,nici consumatorul nu trebuie sa difuzeze in momentul in care mesajul este trimis. -Fiecare mesaj procesat cu succes este recunoscut de c#tre consumator. Publica / subscrie modelul accept# mesaje de publicare pentru un anumit mesaj subiect.Zero sau mai mul!i abona!i pot nregistra interesul de a primi mesaje de la un anumit mesaj subiect. n acest model, nici editorul, nici abonatul nu "tie despre cel#lalt. Urm#toarele sunt caracteristicile ale acestui model: -Consumatori multipli pot primi mesajul -Exist# o dependen!# de sincronizare ntre editori "i abona!i. Editorul trebuie s# creeze un abonament pentru ca clien!ii s# poat# subscrie.Abonatul trebuie s# r#mne activ continuu pentru a primi mesaje, cu excep!ia cazului n care le-a stabilit un durabil abonament..n acest caz, mesajele publicate n timp ce abonatul nu este conectat vor fi redistribuite ori de cte ori se reconecteaz#.

9.Enumerati cele cinci tipuri de mesaje in JMS. (16.4.7) -text message, -map message, -bytes message, -stream message, -object message 10.Scrieti codul de creare a unei conexiuni JMS. (16.4.1, 16.4.2)
Context ctx = new InitialContext(); ConnectionFactory connectionFactory =(ConnectionFactory)ctx.lookup("jms/ConnectionFactory"); Connection connection = connectionFactory.createConnection(); //operations connection.close();

11.Presupunand ca exista deja un obiect de tip Session, scrieti codul de producere a unui mesaj JMS si postarea acestuia pe un topic.
Destination myTopic = (Destination) ctx.lookup("jms/MyTopic"); MessageProducer producer = session.createProducer(myTopic); producer.send(message);

12.Presupunand ca exista deja un obiect de tip Session, scrieti codul de producere a unui mesaj JMS si trimiterea acestuia pe o coada.
Queue myQueue = (Queue) ctx.lookup("jms/MyQueue"); MessageProducer producer = session.createProducer(myQueue); producer.send(message);

13.Presupunand ca exista deja un obiect de tip Session, scrieti codul de creare a unui consumator de mesaje si citirea unui mesaj de pe un topic.

Context ctx = new InitialContext(); ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup("jms/ConnectionFactory"); Connection connection = connectionFactory.createConnection(); Destination myTopic = (Destination) ctx.lookup("jms/MyTopic"); MessageConsumer consumer = session.createConsumer(myTopic); connection.start(); Message m = consumer.receive();

14.Presupunand ca exista deja un obiect de tip Session, scrieti codul de creare a unui consumator de mesaje si citirea unui mesaj de pe o coada.
Context ctx = new InitialContext(); ConnectionFactory connectionFactory = (ConnectionFactory) ctx.lookup("jms/ConnectionFactory"); Connection connection = connectionFactory.createConnection(); Queue myQueue = (Queue) ctx.lookup("jms/MyQueue"); MessageConsumer consumer = session.createConsumer(myQueue); Listener myListener = new Listener(); consumer.setMessageListener(myListener); connection.start();

15.Enumerati serviciile oferite de un container EJB.


1 persistenta interactiunea cu baza de date; 2 tranzactii managementul tranzactiilor poate sa fie complex, in special cand avem mai multe baze de date si mai multe componente de acces; 3 data caching performante imbunatatite, fara cod de la programator; 4 securitate accesul EJB poate sa fie initiat fara cod extra; 5 error handling; 6 scalabilitate; 7 portabilitate; 8 maleabilitate.

16.Ce interfata trebuie sa extinda interfata Home a unui EJB? Enumerati cele 4 metode ale acestei interfete.
Trebuie sa extinda interfata EJBHome (care face parte din pachetul javax.ejb). -public void remove(Handle han) throws RemoteException,RemoveException -public void remove(Object primaryKey) throws RemoteException, RemoteException -public EJBMetaData getEJBMetaData() throws RemoteException -public HomeHandle getHomeHandle() throws RemoteException

17.Ce interfata din pachetul javax.ejb trebuie sa extinda interfata Remote a unui EJB? Enumerati cele 5 metode ale acestei interfete.
Interfata Remote a unui EJB trebuie sa extinda interfata standard Remote si javax.ejb.EJBObject. Interfata EJBObject declara 5 metode: -public EJBHome getEJBHome() throws RemoteException -public Object getPrimaryKey() throws RemoteException -public Handle getHandle() throws RemoteException -public boolean isIdentical(EJBObject obj) throws RemoteException -public void remove() throws RemoteException, RemoveException

18.Un exemplu de cod pentru crearea unei interfete Home. (17.4)


package myBeans; import.javax.ejb.*;

import java.rmi.RemoteException; public interface MyBeanHome extends EJBHome { MyBeanObject create() throws CreateException, RemoteException; }

19.Un exemplu de cod pentru crearea unei interfete Remote. (17.5)


package myBeans; import.javax.ejb.*; import java.rmi.RemoteException; public interface MyBeanObject extends EJBObject { // assume that we have two business logic methods void processEntry(String firstName, String lastName, int custId) throws RemoteException; void deleteEntry(int custId) throws RemoteException; }

20.Un exemplu de cod pentru un SessionBean. (17.7)


package com.bank11.ccards.ejbeans; import javax.ejb.SessionContext; public class MyBean implements javax.ejb.SessionBean { public void processEntry(String firstName, String lastName, int custId) { // method implementation ... } public void deleteEntry(int custId) { // method implementation ... } // mandatory methods for session beans // method implementations may be empty public void ejbCreate() {} public void ejbRemove() {} public void ejbActivate() {} public void ejbPassivate() {} public void setSessionContext(SessionContext ctx) {} }

21.Ce metode de callback trebuie sa "implementeze" un session bean?


public void ejbActivate() public void ejbPassivate() public void ejbCreate() public void ejbRemove() public void setSessionContext(SessionContext ctx)

22.Ce metode de callback trebuie sa "implementeze" un entity bean?


public void ejbActivate() public void ejbPassivate() public void setEntityContext(EntityContext ctx) public void unsetEntityContext()

23.Ciclul de viata al unui stateful session bean.

24.Ciclul de viata al unui stateless session bean.

25. Ciclul de viata al unui entity bean.

26.Ciclul de viata al unui message-driven bean.

27.Care sunt cele doua tipuri de entity beans si prin ce se deosebesc?


Cele 2 tipuri de entity bean sunt: - CMPs (Container Managed Persistence) - BMPs (Bean Managed Persistence) pentru care dezvolatorul bean ofera codul real(actual) de persistenta Deosebiri Fiecare entitate bean(entity bean) are o cheie primara. Cheia primara trb sa fie reprezentata de o clasa de cheie primara. Cerintele ce trebuie respectate de cheia primara sunt diferite pentru cele doua tipuri principale de entitati beans. Pentru BMPs: -cheia primara poate fi orice tip legal RMI/IIOP -trebuie sa asigure implementari potrivite pentru hashCode(), equals() -trebuie sa aiba o valoare unica printre beans de un tip particular Pentru CMPs: -Containerul trebuie sa fie capabil sa creeze o cheie primara -Clasa cheie trebuie sa aibe un constructor fara argumente

28.Ce conditii trebuie sa indeplineasca clasa de cheie primara a unui BMP?


-cheia primara poate fi de orice tip legal RMI/IIOP -trebuie sa prevada implementari corespunzatoare pentru hashCode(), equals() -trebuie sa aiba o valoare unica printre bean-urile de un tip particular

29.Care este continutul minimal al unui EJB (clase, descriptor)?


Un EJB este constituit din (cel putin) 3 clase Java si un descriptor de desfasurare ejb-jar.xml: 1. bean-ul propriu-zis (the class that contains the business logic ) 2. interfata home a bean-ului 3. interfata remote bean-ului 4. descriptorul de desfasurare, care este un fisier xml, numit ejb-jar.xml

30. Precizati continutul unui element <session> din descriptorul de desfasurare al unei aplicatii EJB.
<session> <ejb-name>CCEnroll</ejb-name> <home>com.bank11.ccards.ejb.CCEnrollHome</home> <remote>com.bank11.ccards.CCEnrollObject</remote> <ejb-class>com.bank11.ccards.CCEnroll</ejb-class> <session-type>Stateless</session-type> <transaction-type>Container<transaction-type> <ejb-ref> <ejb-ref-name>ejb/CCAccount</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <home>com.bank11.ccards.ejb.AccountHome</home> <remote>com.bank11.ccards.ejb.AccountObj</remote> </ejb-ref> <security-role-ref> <description> This role relates to cash advances from ATMs

</description> <role-name>CashAdvATM</role-name> <security-role-ref> </session>

S-ar putea să vă placă și