1 EJB e Portal Component Object http://desvino.altervista.org



Documenti analoghi
1 Applicazione J2EE sul SAP WAS con SAP NWDS

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione

1 JSPDynPage, componenti portale e Java Server Pages

EJB Components. Leonardo Mariani Esercitazione di Sistemi Distribuiti. Oggetti Distribuiti

1 SAP Netweaver e Adobe BlazeDS Framework Flex

Flavio De Paoli. Agenda. Introduzione Architettura J2EE (Java 2 Enterprise Edition) Servizi e Comunicazione Enterprise Java Beans Future directions

Tomcat & Servlet. Contenuti. Programmazione in Ambienti Distribuiti. Tomcat Applicazioni Web. Servlet JSP Uso delle sessioni

Enterprise Java Beans e Web Services

Programmazione server-side: Java Servlet

Il Web-Service SDMX dell ISTAT

RMI Remote Method Invocation

Tale attività non è descritta in questa dispensa

7 Esercitazione (svolta): Callback. Polling. Java RMI: callback. Server. Server. Client. Client. due possibilità:

Applicazioni web. Sommario. Parte 6 Servlet Java. Applicazioni web - Servlet. Alberto Ferrari 1. Servlet Introduzione alle API ed esempi

Laboratorio di Basi di Dati

JNDI. Massimo Merro Programmazione di Rete 214 / 229

Test di unità con JUnit4

Java Remote Method Invocation

Spring WS Sviluppare WebService in Java

ProgettAzione V anno Unità 3 - Architetture per applicazioni web Lezione: Esempio sviluppo applicazioni

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Laboratorio di sistemi Prima Web Application JSP [Java]

Socket & RMI Ingegneria del Software - San Pietro

RMI. Java RMI RMI. G. Prencipe

Java Enterprise Edi.on. Gabriele Tolomei DAIS Università Ca Foscari Venezia

JUG Ancona Italy. Google Web Toolkit. Giovanni Baleani Programmatore Java. Filippetti S.r.l.

Note pratiche sullo sviluppo di servlet (I)

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

Tutorial web Application

Office Web Components in programmi C# da

Web Services con Axis Delia Di Giorgio Anna Celada 1 marzo 2005

3 ServletContext. Marco Tessarotto Programmazione dei Web Server Anno Accademico

Architettura MVC-2: i JavaBeans

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Client e Server comunicano tramite il protocollo SOAP.

Specifica i tipi di oggetti a creare, utilizzando un istanza prototipo, e crea nuove istanze tramite la copia di questo prototipo.

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

Telematica II 17. Esercitazione/Laboratorio 6

Programmazione a Oggetti Lezione 10. Ereditarieta

Visual Studio 2010 RC Ria Services - Business Application and datagrid Part 1

Configuration Managment Configurare EC2 su AWS. Tutorial. Configuration Managment. Configurare il servizio EC2 su AWS. Pagina 1

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa.

Utilizzare il NetBeans GUI Builder. Dott. Ing. M. Banci, PhD

Sistemi Mobili e Wireless Android Primi passi

12/12/11 Data ultimo aggiornamento

PRACTICAL DEVELOPMENT OF A WEB SERVICE

Implementazione di MVC. Gabriele Pellegrinetti

Application Server per sviluppare applicazioni Java Enterprise

Operazioni di input/output. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

Main System Monitor Keyboard

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

PHP e Java ovvero come poter sfruttare entrambi i linguaggi e vivere felici... forse

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Fondamenti di Informatica C Esercitazioni di Laboratorio / 3 Outline

Progettazione: Tecnologie e ambienti di sviluppo

1 Vincenzo de Stefano SAP e Servizi Web

Modulo 4: Ereditarietà, interfacce e clonazione

Architettura MVC-2 A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

SITI-Reports. Progetto SITI. Manuale Utente. SITI-Reports. ABACO S.r.l.

Programmazione ad Oggetti Modulo A (Esame del 11/9/2015)

Il Web-Service SDMX dell ISTAT

Tricks & Tips. [Access] Tutorial - ActiveX - Controllo Tree View. - Michele de Nittis - Versione: 1 Data Versione: venerdì 30 agosto 2002

The Hitchhiker's Guide to testable code

Programmazione distribuita

Organizzazione della lezione. 15. Java Remote Method Invocation (3) Lo schema del Factory Design Pattern - 1. Factory design pattern

Architetture Web: un ripasso

Registratori di Cassa

Android con App Inventor

Introduzione alla programmazione Http lato server in Java

Breve introduzione curata da Alessandro Benedetti. Struts2-Introduzione e breve guida

RMI: metodi equals e hashcode

App-V Dynamic Suite Composition

Java Web Services. Uso di Eclipse e Apache Axis

Introduzione Un software per l automazione di procedure statistiche su dati Pet Il Pre-Processing La fase di statistica...

Registri RMI. Massimo Merro Univ. Verona Programmazione di Rete 90 / 247

Transcript:

1 EJB e Portal Component Object http://desvino.altervista.org In questo tutorial studiamo come sfruttare la tecnologia EJB, Enterprise JavaBean, all interno del SAP Netweaver Portal. In breve, EJB è un architettura a componenti distribuita che permette lo sviluppo e il deploy delle componenti business relativamente ad applicazioni J2EE. In particolare, utilizziamo un bean session statless per ottenere dall UME, User Management Engine, del portale l utente loggato. Non è scopo di questo tutorial illustrare nel dettaglio il funzionamento di EJB o di un session bean nello specifico. Nelle figure sottostanti elenchiamo i passi necessari per la creazione di un progetto di tipo J2EE EJB Module Project e di un session bean stateless con l ausilio del NetWeaver Developer Studio (NWDS). NWDS Nuovo progetto J2EE EJB Module Project NWDS nuovo EJB

2 EJB e Portal Component Object http://desvino.altervista.org NWDS nome, progetto, tipo e package per il bean Nella figura seguente vediamo le interfacce e classi da estendere: Remote Interface: javax.ejb.ejbobject. Definisce i servizi che il bean deve implementare (metodi di logica); Home Interface: javax.ejb.ejbhome. La classe "Factory", cioè la classe che si occupa della creazione del bean; Bean Class: javax.ejb.sessionbean. Questa classe deve riprendere i metodi della Remote Interface ed è questa che conterrà la logica applicativa vera e propria; Local Interface: javax.ejb.ejblocalobject. Come per Remote Interface, con la differenza che l'accesso non avviene su rete; Local Home: javax.ejb.ejblocalhome. Come per Home Interface, con la differenza che l'accesso è diretto;

3 EJB e Portal Component Object http://desvino.altervista.org NWDS interfacce e superclassi per il bean NWDS crea in automatico un deployment descriptor, ejb-jar.xml, ed un deployment descriptor specific per il server J2EE, ejb-j2ee-engine.xml. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <description>ejb JAR description</description> <display-name>ejb JAR</display-name> <enterprise-beans> <session> <ejb-name>testejbbean</ejb-name> <home>it.videsfot.testejbhome</home> <remote>it.videsoft.testejb</remote> <local-home>it.videsoft.testejblocalhome</local-home> <local>it.videsoft.testejblocal</local> <ejb-class>it.videsoft.testejbbean</ejb-class> <session-type>stateless</session-type> <transaction-type>container</transaction-type> </session> </enterprise-beans> </ejb-jar> ejb-jar.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE ejb-j2ee-engine SYSTEM "ejb-j2ee-engine.dtd">

4 EJB e Portal Component Object http://desvino.altervista.org <ejb-j2ee-engine> <enterprise-beans> <enterprise-bean> <ejb-name>testejbbean</ejb-name> <jndi-name>testejbbean</jndi-name> <session-props/> </enterprise-bean> </enterprise-beans> </ejb-j2ee-engine> ejb-j2ee-engine.xml La struttura completa del progetto è visibile nella figura sottostante. Sono presenti sia l EJB module project che l ear. Struttura progetto EJBTEST La classe TestEjbBean implementa l interfaccia SessionBean. Per il nostro scopo abbiamo bisogno di implementare soltanto il metodo getuser(). Infatti, al suo interno creiamo un oggetto di tipo IUser ed otteniamo dalla UMFactory l utente loggato. I metodi get della classe IUser consentono di ottenere i dati che ci interessano. Affinchè sia possibile utilizzare l API UME è necessario aggiungere al build path relativo al modulo EJB la libreria esterna com.sap.security.api presente nella cartella sap/ide/ie70/eclipse import javax.ejb.sessionbean; import javax.ejb.sessioncontext; import javax.ejb.createexception; import com.sap.security.api.iuser; import com.sap.security.api.umfactory;

5 EJB e Portal Component Object http://desvino.altervista.org * @ejbhome <{it.videsoft.testejbhome> * @ejblocal <{it.videsoft.testejblocal> * @ejblocalhome <{it.videsoft.testejblocalhome> * @ejbremote <{it.videsoft.testejb> * @stateless * @transactiontype Container public class TestEjbBean implements SessionBean { public void ejbremove() { public void ejbactivate() { public void ejbpassivate() { public void setsessioncontext(sessioncontext context) { mycontext = context; private SessionContext mycontext; * Business Method. public String getuser() { IUser user = UMFactory.getAuthenticator().getLoggedInUser(); String result = "UniqueID: " + user.getuniqueid() + " " + "UniqueName: " + user.getuniquename() + " " + "FirstName: " + user.getfirstname() + " " + "LastName: " + user.getlastname() + " " + "Name: " + user.getname() + " " + "DisplayName: " + user.getdisplayname(); return result; * Create Method. public void ejbcreate() throws CreateException { // TODO : Implement TestEjbBean.java import javax.ejb.ejbobject; import java.rmi.remoteexception; public interface TestEjb extends EJBObject { * Business Method. public String getuser() throws RemoteException; TestEjb.java

6 EJB e Portal Component Object http://desvino.altervista.org import javax.ejb.ejbhome; import java.rmi.remoteexception; import javax.ejb.createexception; public interface TestEjbHome extends EJBHome { * Create Method. public TestEjb create() throws CreateException, RemoteException; TestEjbHome.java import javax.ejb.ejblocalobject; public interface TestEjbLocal extends EJBLocalObject { * Business Method. public String getuser(); TestEjbLocal.java import javax.ejb.ejblocalhome; import javax.ejb.createexception; public interface TestEjbLocalHome extends EJBLocalHome { * Create Method. public TestEjbLocal create() throws CreateException; TestEjbLocalHome.java Per effettuare il deploy sul server, creiamo un nuovo Enterprise Application Project ed aggiungiamo ad esso il modulo EJB creato in precedenza. ear deploy su J2EE

7 EJB e Portal Component Object http://desvino.altervista.org Utilizziamo l EJB deployato sul nostro server J2EE, all interno di un componente portale. Creiamo un nuovo progetto di tipo Portal Application Project e chiamiamolo PCEjb, successivamente creiamo un Portal Application Object e chiamiamo anch esso PCEjb. Il componente portale non far altro che richiamare l EJB per ottenere dal metodo getuser l utente loggato e restituirlo nella response. Il passo iniziale concerne lo specificare, all interno dello Java Build Path relativo al progetto, raggiungibile attraverso tasto destro -> properties, il progetto EJBTEST nella tab Projects (Required projects on the build path). PCEjb Java Build Path import com.sapportals.portal.prt.component.*; import it.saisei.testejb; import it.saisei.testejbhome; import java.rmi.remoteexception; import javax.ejb.createexception; import javax.naming.context; import javax.naming.initialcontext; import javax.naming.namingexception; import javax.rmi.portableremoteobject; public class PCEjb extends AbstractPortalComponent { public void docontent(iportalcomponentrequest request, IPortalComponentResponse response) {

8 EJB e Portal Component Object http://desvino.altervista.org try { InitialContext ic = new InitialContext(); Context context = new InitialContext(); Object objref = context.lookup("testejbbean"); TestEjbHome home = (TestEjbHome) PortableRemoteObject.narrow(objref,TestEjbHome.class); try{ TestEjb testejb = home.create(); response.write(testejb.getuser()); catch(createexception e) {response.write("create Exception " + e.getmessage()); catch(remoteexception e1) {response.write("remote Exception " + e1.getmessage()); catch(namingexception e2) { response.write("naming Exception " + e2.getmessage()); PCEjb.java Nel file di configurazione portalapp.xml è necessario specificare il riferimento al progetto (ear) contenente l EJB, inserendo la riga <property name="privatesharingreference" value="sapj2ee::sap.com/ejbtestear"/> <?xml version="1.0" encoding="utf-8"?> <application> <application-config> <property name="privatesharingreference" value="sapj2ee::sap.com/ejbtestear"/> </application-config> <components> <component name="pcejb"> <component-config> <property name="classname" value="it.videsoft.pcejb"/> </component-config> <component-profile/> </component> </components> <services/> </application> portalapp.xml L ultimo passo concerne la creazione di una IView di tipo componente prortale e la sua esecuzione in preview. risultato dell esecuzione di una Iview di tipo componente portale