Présentation - membres

publicité
Les portails
1) Les Portails
2) JetSpeed
3) Démonstration JetSpeed
Julien BURET
Arnaud AUNE
DESS Informatique Option SRR
Contexte



Les portails sont nés du constat que
l’information sur l’Internet et les
intranets est diffuse et pas du tout
structurée.
L’internaute est débordé par le nombre
d’outils en tout genre.
souhait d’une approche plus simple et
unifiée.
Contexte


Visent à regrouper sous un accès unique
 Un espace informationnel de recherche
 Un espace communautaire de partage
 Un espace personnalisé de services
Caractéristiques :
 Point d’accès unique
 Organisation des informations accessibles et des applications
disponibles
 Personnalisation des services offerts, individuelle ou par
groupe
 Contrôle d’accès centralisé et gestion des utilisateurs
Définition générale

Un portail, qu’est ce que c’est ?
 Un portail est un point d’entrée sous forme
d’application Web regroupant un certains
nombres de services et de contenues à un
ensemble de clients.
Les Portails
Vise à remplacer le bureau.
avantages :



Ils sont accessibles de n’importe quel poste
Ils sont personnalisés
Les services augmentent : calendrier, agenda, répertoire en ligne,
traitement de texte, un tableur…
Des obstacles restent à surmonter:



les temps de chargement
les coûts de connexion
la largeur de la bande passante
Selon un responsable de Netcenter (Netscape) les bureaux
représenteraient l’évolution naturelle des portails.
Les principaux portails web

Les moteurs ou annuaires de recherche


Site des fournisseurs d’accès


msn.com (Microsoft) , netcenter.com (Netscape)
Les éditeurs de contenu


Aol.com, wanadoo.fr, …
Site de logiciel de navigation


Yahoo!, Voilà,…
Hachette.fr, go.com (Disney), …
Portail spécialisé ou privé

Portail d’entreprise, site de communauté
Différents type de portails
Web

Portail généraliste ou horizontal




1er types de portail apparu
Regroupe le maximum d’informations de
tous les thèmes sur un seul site.
Point d’entrée sur le Web
Yahoo, Altavista, Site Web des providers
(Aol, Wanadoo, Free, …).
Différents type de portails
Web

Portail spécialisé ou vertical



Portail spécialisé dans un thème donné
Portail d’entreprise ou inter-entreprise
Il regroupe et partage des ressources pour
un groupe de client ayant un intérêt
commun.
Les portails horizontaux

But





Attirer un maximum de client sur le serveur
Vendre de l’espace aux annonceurs (Estimation
2000 : 8 Milliards de dollars).
Prendre des commissions sur des transactions
Vendre des services améliorés aux clients (boite
aux lettres plus grande avec plus de
fonctionnalités).
Moyen mis en œuvre

Fournir et ordonner du contenu et des services
pour attirer un maximum de clients
Les portails horizontaux.
L’exemple Yahoo!


Au début un annuaire de sites classés
par thèmes.
Dans le but de garder les clients après
la consultation des annuaires création
de services comme les calendriers, les
carnets d’adresses…
Les portails horizontaux.
L’exemple Yahoo!

Maintenant les principales activités de Yahoo! sont
l’agrégation de contenue :








Le service de news de Yahoo! regroupe les informations
publiés par d’autres site et les classes
Le service de mail
Yahoo! Messager
Jeux en ligne
Chat
Page personnalisée à un utilisateur
Boutique
Services de plus en plus évolués comme la personnalisation
de page (MyYahoo!)
Exemple yahoo
Les portails verticaux


Regroupe les sites de communautés et
les portails d’entreprises.
Spécialisés dans un domaine unique.
Sites de communautés

Le but est proche des portails
horizontaux. Ils cherchent à créer un
annuaire de personnes intéressées par
un même thème (permet des annonces
beaucoup plus ciblées).
Portails d’entreprise

Le but de ces portails est de faciliter et de
regrouper l’accès au différents systèmes
d’informations d’une entreprise.



Pour facilité la lecture et la mise à jour par les
employés.
Pour présenter de l’information à des clients ou à
des partenaires.
Beaucoup de produits commerciaux
spécifiques existent pour créer ces types de
portails.
Développement de portails
Pourquoi un portail
Les outils de développements
Pourquoi développer un portail
dans une entreprise


Un utilisateur doit utilisé
un grand nombre
d’application pour
accéder à toutes les
informations de
l’entreprise.
Multiplicité des formats
de données, des IHM,
informations présentées
de façon désordonnées.
Pourquoi développer un portail
dans une entreprise

Le but est qu’une
application interroge
elle-même les
applications, puis
traitent les données
pour les présentées de
façon ordonnée et
unifiée. L’utilisateur y
accédera d’une façon
unique, en général un
navigateur.
Apport d’un système de portail





Un accès simplifié aux informations et
aux applications intranet
Intégration de contenus tiers
Constitution d’espaces de travail et
d’accès à l’information
Personnalisation des services
Gestion de l’accès au différentes
données de l’entreprise (single sign-on)
Fonctionnalités attendues des
différents systèmes de portails

Agrégation de contenu


Organisation de contenu


Classement des données de l’entreprises.
Personnalisation des services


Collecte d’informations sur des sources internes ou
externes, puis présentation de ces données de
façon unifiée.
Adapter l’accès aux informations par
l’intermédiaire de profils utilisateurs
Accès au contenu

Moteur de recherche et indexation
Fonctionnalités attendues des
différents systèmes de portails

Information et diffusion du contenu


Communication et travail collaboratif


Mail, forum, agenda partagé, éditeur de documents
collaboratifs
Services à valeur ajouté


Service de diffusions sélectives d’informations ou d’alertes
Synthèse de documents évolués (analyse sémantique),
traduction automatique
Administration et sécurité

Contrôles des accès, annuaire d’entreprise, statistiques,
pare-feu
Fonctionnalités attendues des
différents systèmes de portails


Les différents produits fournissent un ou
plusieurs de ces services.
Avant de choisir un produit il faut avoir bien
cerné les besoins de l’entreprise choisir un
produit en fonction de ses priorités. Peu de
produits fournissent tous types de services.
Ou alors on peut utiliser des produits plus
généraux qui nécessiteront le développement
des différents services.
Les différents produits de
création de portails

2 types d’outils de création de portails.


Des infrastructures de portails. Elles
fournissent les outils de bases à la création
de tout types de portails.
Des portails beaucoup plus spécifique
souvent très spécialisés dans un domaine
Panorama des produits du
marché
Exemples de portail
JETSPEED
return
Exemples de portail
Mediapps Net.Portal
Exemples de portail
Oracle Portal Online
Exemples de portail
Websphere
Présentation d’une infrastructure
de portail : JETSPEED




Architecture
Portlet
Les fichiers de configuration
Démonstration
JetSpeed
Introduction
JetSpeed :

Open source

Conçu pour créer un portail rapidement

Rend accessible les ressources distantes

Accessible par le WEB et le WAP

JAVA PORTLET API

Sécurité

Utilisateur, groupe, rôle

Single Sign On

une base de données interne : Hypersonic-SQL
…
Services déjà implémentés :

Cache

Persistance

Personnalisation

Authentification
…
installation
JetSpeed
Architecture




Globale
ESC
RSS
OSC
JetSpeed
Architecture – introduction
JetSpeed regroupe les projets suivant :

turbine : un framework permettant de se connecter à un base de
données et de gérer l’affichage, les utilisateurs et les sessions.

Velocity : traite les fichiers templates.

ECS : génère du HTML et XML à partir d’objets JAVA.
On peut se servir aussi des projets suivants :

cocoon : permet de générer du HTML à partir de XML et XLS.

Xerces et Xalan : est un support XML et XSL.

Castor : rend les objets java persistant.
JetSpeed se sert de RSS et OCS pour rapatrier des données à partir de
sites distants.
JetSpeed
Architecture – globale (1/3)
JetSpeed
Architecture – globale (2/3)
Jetspeed

Portlet API

Turbine

JServ/Jakarta

Apache HTTPD
JetSpeed
Architecture – globale (3/3)
Affichage

PortletController

Plusieurs PortletControl

Une portlet par portletControl
JetSpeed
Architecture - ESC





La portlet utilise des éléments de
construction (ECS API) en objet java.
ECS support WML, HTML
open source
L’avantage de ECS est qu’il fait du code
propre.
ECS est limité à HTML et XML pour
l’instant.
JetSpeed
Architecture – ESC exemple
Html html = new Html()
.addElement(new Head()
.addElement(new Title("Demo")))
.addElement(new Body()
.addElement(new H1("Demo Header"))
.addElement(new H3("Sub Header:"))
.addElement(new Font().setSize("+1")
.setColor(HtmlColor.WHITE)
.setFace("Times")
.addElement("The big dog & the little cat chased each
other.")));
out.println(html.toString());
// or write to the outputstream directly
output(out);
JetSpeed
Architecture – RSS



RSS Rich Site Summary
Le format RSS est basé sur XML
Légers, multi but, format d’
importation/exportation de données,
description de métas données
exemple
Avantages :
 Permet de rendre disponible des informations
pour d’autres sites
 Une application personnel peut y accéder
JetSpeed
Architecture – OCS
exemple





OCS Open Content Syndication
Le format OCS est basé sur XML
Multi cannaux aux formats différents
Il peut aussi utiliser RDF (Resource
Description Framework) et DC (Dublin Core).
Langages permettant l’échanger des
descriptions de ressources sur le Web.
xmltree.com. plus de 1700 canaux.
JetSpeed
Les Portlets
Les Portlets :


Définition
API
JetSpeed
Portlet - Définition



concept populaire
décrit l’interface utilisateur ayant la capacité d’être
personnalisée
met à disposition du contenu, donne accès à une application ou
un service
Jetspeed inclut quelques portlets :

RSSPortlet permet de voir les documents au format RDF

FileServerPortlet permet de mettre à disposition des pages HTML

CocoonPortlet permet de transformer du XML via XSL

PortletViewerPortlet permet d’afficher des informations additionnelles sur
une portlet

…
JetSpeed
Portlet - API
Pour avoir une portlet fonctionnelle :

étendre la classe AbstractPortlet

implémenter la méthode getContent(RunData aRunData)

Renvoie un ConcreteElement de ECS
Les Portlets peuvent interagir avec le service turbine par le biais de l’objet
RunData.
Pour avoir un contrôle total sur la portlet :

étendre le classe Portlet

Beaucoup de méthodes à implémenter
Une autre méthode intéressante, valable pour les deux types de portlet,
est supportsType(). Elle permet de savoir quel type de document (WML
ou HTML) supporte le client.
JetSpeed
Les fichiers de configuration :
Fichiers template
 Fichiers .xreg
 Fichiers PSML

JetSpeed
Fichiers de configuration (1/5)
Pour configurer le portail :
 l’interface Web
 directement dans les fichiers
Chaque utilisateur, groupe et rôle a ces propres
fichiers.
La page d’accueil : compte « anon »
JetSpeed
Fichiers de configuration (2/5)
Les fichiers du cadre autour

Fichiers templates

Dans
HAUT
<JETSPEED-HOME>\WEBINF\templates\vm


Screens : propriétés pour le contenu
navigations : top.vm, left.vm,
Screen
Gauche
bottom.vm

Layouts :
appel les différentes
composantes de navigation
BAS
JetSpeed
Fichiers de configuration (3/5)
Exemple
Portlet
plusieurs niveaux d’abstraction
Pane


PortletControl
PortletController
Portlet
Portlet
Portlet
Portlet
JetSpeed
Fichiers de configuration (4/5)
Les fichiers .xreg  rendre disponible une portlet
3 sortes d’entrées:



instance
abstract
ref




: doit fournir toutes les informations nécessaires
: pas instantiable  portlet template
: une référence
Page HTML
Page JSP
RSS
Base de données
JetSpeed
Fichiers de configuration (5/5)
PSML Portal Structure Markup Language
exemple
Fichiers ou base de données.
Un fichier par utilisateur, groupe, rôle.
Ils mémorisent:

Les portlets à afficher

L’agencement

propriétés
Deux parties :

Registry : constitué d’une liste d’entrée (.xreg)

Site  5 types d’enregistrement





Entry : décrit une portlet (référence)
Portlets : décrit un groupe de Portlet (PortletSet)
Controller : décrit le portletController associé au PortletSet. Stratégie d’affichage
Control : décrit le portletControl associé au portlet. C’est un attribut de Portlets ou Entry
Reference : fait référence à un autre fichier PSML.
JetSpeed
La Démonstration.
L’implémentation
Configuration
o Graphique
o Manuelle
Portlets de JetSpeed
JetSpeed
Démonstration (1/2)
Implémentation de quelques portlets :

créer une page WEB (HTML)

créer une page WAP (WML)

créer une page WML ou HTML

récupérer des données par SOAP
Portlet
Portlet
Portlet
Portlet
Utilisation de portlet de JetSpeed :

accéder à une page HTML locale

accéder à une page HTML externe

accéder à une base de données
utilisation
utilisation
utilisation
Il faut enregistrer les portlets dans un fichier PSML
(<JETSPEED-HOME>WEB-INF/conf/nom.xrep).
JetSpeed
Démonstration (2/2)
Pour que les portlets soit visible  il faut les ajouter dans le fichier
de configuration de l’utilisateur dédié à la page d’arrivée du
portail.
<JETSPEED-HOME>\WEB-INF\psml\user\anon\html\default.psml.
Cette étape peut être faite par le biais de l’interface.
Exemple :
<entry id="P-ef1547a162-10018“ parent="DatabaseBrowserTest">
<parameter name="sql" value="select * from coffees"/>
<parameter name="windowSize" value="10"/>
</entry>
JetSpeed
Conclusion
JetSpeed assure :
 La personnalisation
 L’accès à des ressources variées
 L’intégration d’applications variées
Les améliorations attendues :
 Compléter la documentation.
 Organiser les fichiers de configuration.
Portails
Les Sources



InfoNewScreen
JDNETsolutions
Jakarta.apache.org/jetspeed
JetSpeed
The End
JetSpeed
Installation
return



Installation de tomcat
Déplacer jetspeed.war dans
<tomcat_home>\webapps\
À l’adresse
http://localhost:8080/jetspeed/ Créer
un nouvel utilisateur.
JetSpeed
Architecture – RSS - exemple
<?xml version="1.0"?>
<!DOCTYPE rss PUBLIC
"-//Netscape Communications//DTD RSS 0.91//EN"
"http://my.netscape.com/publish/formats/rss-0.91.dtd">
<rss version="0.91">
<!-- only one channel per RSS file -->
<channel>
<-- information about your channel -->
<title>My News</title>
<link>http://www.mynews.net</link>
<description>Your source for your news
</description>
<language>en-us</language>
<image>
<title>My News</title>
<url>http://www.mynews.net/logo.gif</url>
<link>http://www.mynews.net</link>
<width>88</width>
<height>31</height>
<description>Your source for your news
</description>
JetSpeed
Architecture – RSS - exemple
</image>
<!-- here starts the real news, max. 15 items -->
<item>
<title>We land on Mars!</title>
<link>
http://www.mars-lander.org/inthenews.html?id=581
</link>
<description>Live report from the Mars
space station. Read more about it in
this discussion...</description>
</item>
<item>
<title>j-Cars produces a new Java car</title>
<link>http://www.j-cars.com/press/29022007/
</link>
<description>The latest version of the
Java car is now available.
It includes security enhancements and
various bug fixes.</description>
</item>
JetSpeed
Architecture – RSS - exemple
<!-- you can include a link to a form.
It's a basic text field where you can enter
text and submit data to a CGI. -->
<textinput>
<title>Subscribe</title>
<description>Subscribe to our mailing list by
entering your email</description>
<name>email</name>
<link>
http://www.mynews.net/cgi-bin/subscribe.cgi
</link>
</textinput>
</channel>
</rss>
return
JetSpeed
Architecture – OCS - exemple
<?xml version="1.0"?>
<rdf:RDF
xmlns:rdf =
"http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:ocs =
"http://alchemy.openjava.org/ocs/directory#"
xmlns:dc =
"http://purl.org/metadata/dublin_core#">
<!-- This is information about
this channel listing -->
<!-- The about attribute points
to the directory file,
usually the same file as the
one being parsed -->
<rdf:description about=
"http://alchemy.openjava.org/ocs/ocsdirectory.rdf">
<!-- This section contains information
about the channel directory listing -->
<dc:title>Internet Alchemy OCS Directory
</dc:title>
<dc:creator>Ian Davis (mailto:[email protected])
</dc:creator>
<dc:description>This is a list of channels
available at Internet Alchemy</dc:description>
JetSpeed
Architecture – OCS - exemple
<!-- This is the first channel available -->
<rdf:description
about="http://alchemy.openjava.org">
<!-- Information about the channel -->
<dc:title>Internet Alchemy</dc:title>
<dc:creator>Ian Davis (mailto:[email protected])
</dc:creator>
<dc:description>Internet Alchemy is a random
collection of elements</dc:description>
<dc:subject>Technology, Java, XML, Web Design
</dc:subject>
<ocs:image>
http://alchemy.openjava.org/images/alchemylogo.gif
</ocs:image>
<!-- This is the first format
for this channel -->
<!-- Information about the RSS
version of Internet Alchemy -->
<rdf:description about=
"http://alchemy.openjava.org/alchemyrss.xml">
<dc:language>en</dc:language>
<ocs:format>
http://my.netscape.com/rdf/simple/0.9/
</ocs:format>
<ocs:updatePeriod>hourly</ocs:updatePeriod>
<ocs:updateFrequency>2</ocs:updateFrequency>
<ocs:updateBase>1999-05-30T00:00
</ocs:updateBase>
</rdf:description>
JetSpeed
Architecture – OCS - exemple
<!-- This is the second
format for this channel -->
<!-- Information about the
possible scriptingNews
version of Internet Alchemy -->
<rdf:description about=
"http://alchemy.openjava.org/scriptingnews.xml">
<dc:language>en</dc:language>
<ocs:format>
http://www.scripting.com/dtd/scriptingNews.dtd
</ocs:format>
<ocs:updatePeriod>daily</ocs:updatePeriod>
<ocs:updateFrequency>1</ocs:updateFrequency>
<ocs:updateBase>1999-05-30T00:00
</ocs:updateBase>
</rdf:description>
JetSpeed
Architecture – OCS - exemple
<!-- This is the third format
for this channel -->
<!-- Information about a plain
text version of Internet Alchemy -->
<rdf:description about=
"http://alchemy.openjava.org/plain.txt">
<dc:language>en</dc:language>
<ocs:contentType>text/plain</ocs:contentType>
<ocs:updatePeriod>daily</ocs:updatePeriod>
<ocs:updateFrequency>1</ocs:updateFrequency>
<ocs:updateBase>1999-05-30T00:00
</ocs:updateBase>
</rdf:description>
</rdf:description>
<!-- This is the second channel available -->
<rdf:description about=
"http://alchemy.openjava.org/othernews/">
...
</rdf:description>
</rdf:description>
</rdf:RDF>
return
JetSpeed
Fichiers de configuration
exemple de fichier PSML
<?xml version="1.0" encoding="UTF-8"?>
<portlets id="01">
<metainfo>
<title>Default Jetspeed page</title>
</metainfo>
<skin name="orange-red-Bordered"/>
<layout position="-1" size="-1"/>
<controller name="ColumnController"/>
<portlets id="02">
<metainfo>
<title>Home</title>
</metainfo>
<layout position="1" size="-1"/>
<controller name="ThreeColumnsSymetric"/>
<entry id="04" parent="SubsetMeetingWorkshop">
<layout position="-1" size="-1">
<property name="column" value="1"/>
<property name="row" value="1"/>
</layout>
</entry>
……
JetSpeed
Fichiers de configuration
exemple de fichier PSML
return
</portlets>
</portlets>
<portlet-registry>
<portlet-entry name="ESIPFederationNews" hidden="false" type="ref"
parent="RSS" application="false">
<meta-info>
<title>ESIP Federation News</title>
<description>News for ESIP Federation (XML)</description>
</meta-info>
<classname>org.apache.jetspeed.portal.portlets.NewRSSPortlet
</classname>
<url cachedOnURL="true">http://www.esipfed.org/news/newsfeed.xml
</url>
</portlet-entry>
<portlet-entry>
…
</portlet-entry>
</portlet-registry>
JetSpeed
Démonstration
Portlet - HTML
public class FirstPortlet extends AbstractPortlet {
public ConcreteElement getContent (RunData aRunData) {
Table table = new Table()
.setBorder(0)
.addElement(new TR()
.addElement(new TD()
.addElement(new B()
.addElement("I am bold."))))
.addElement(new TR()
.addElement(new TD()
.addElement("I'm the lower table row.")));
return table;
}
}
JetSpeed
Démonstration
Portlet - HTML
A ajouter au fichier de configuration xrep dans <JETSPEED-HOME>\WEB-INF\conf
<?xml version="1.0" encoding="UTF-8"?>
<registry>
<portlet-entry name="Portlet1" hidden="false" type="instance"
application="false">
<meta-info>
<title>Portlet1</title>
<description>Portlet Example 1</description>
</meta-info>
<classname>Portlet1</classname>
<media-type ref="html"/>
</portlet-entry>
</registry>
return
JetSpeed
Démonstration
Portlet - WML
public class WMLPortlet extends AbstractPortlet {
public ConcreteElement getContent (RunData runData) {
//create an ECS container for our content
ElementContainer container = new ElementContainer();
//show WML code for wireless
org.apache.ecs.wml.P p = new org.apache.ecs.wml.P()
.addElement("On wireless");
}
}
}
container.addElement(p);
return container;
return
JetSpeed
Démonstration
Portlet – HTML et WML
public class WMLPortlet extends AbstractPortlet {
//which MIME types does this portlet support
public boolean supportsType (MimeType clientMimeType) {
}
if (MimeType.HTML.equals(clientMimeType)) {
return true;
}
if (MimeType.WML.equals(clientMimeType)) {
return true;
}
return false;
public ConcreteElement getContent (RunData runData) {
//create an ECS container for our content
ElementContainer container = new ElementContainer();
//get user's browser info from the Turbine runtime data.
CapabilityMap capMap = CapabilityMapFactory.getCapabilityMap (runData);
JetSpeed
Démonstration
Portlet – HTML et WML
//show HTML code for the web
if (capMap.getPreferredType().equals (MimeType.HTML)) {
Table table = new Table()
.setBorder(0)
.addElement(new TR()
.addElement(new TD()
.addElement(new B()
.addElement("I am bold."))))
.addElement(new TR()
.addElement(new TD()
.addElement("I'm the lower table row.")));
container.addElement(table);
}
//show WML code for wireless
else if (capMap.getPreferredType().equals (MimeType.WML)) {
org.apache.ecs.wml.P p = new org.apache.ecs.wml.P()
.addElement("On wireless");
}
}
}
container.addElement(p);
return container;
return
JetSpeed
Démonstration
Portlet – accès base de données
Table Test dans la base Hypersonic.
return
On se sert d’une portlet prédéfinit dans JetSpeed  DatabaseBrowserPortlet.
À ajouter dans le fichier xrep
<portlet-entry name="DatabaseBrowserTest" hidden="false" type="ref"
parent="DatabaseBrowserPortlet"
application="false">
<meta-info>
<title>DatabaseBrowserTest</title>
<description>Simple Test Database Browser Portlet Example</description>
</meta-info>
<parameter name="template" value="database-browser-portlet" hidden="false"/>
<parameter name="customizeTemplate" value="database-browser-customize" hidden="false"/>
<parameter name="action" value="portlets.browser.DatabaseBrowserAction" hidden="false"/>
<parameter name="sql" value="select * from coffees" hidden="false"/>
<parameter name="windowSize" value="5" hidden="false"/>
<media-type ref="html"/>
</portlet-entry>
JetSpeed
Démonstration
Portlet - SOAP
Cela nécessite Apache SOAP 2.2
La portlet récupère sur le site Xmethods.net le prix du livre ayant pour ISBN :
0596000405
import org.apache.ecs.*;
import org.apache.ecs.html.*;
import org.apache.jetspeed.portal.portlets.AbstractPortlet;
import org.apache.turbine.util.RunData;
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
import java.io.*;
import java.net.*;
import java.util.Vector;
public class BookPricePortlet extends AbstractPortlet {
JetSpeed
Démonstration
Portlet - SOAP
public String getPrice(String isbn) {
URL url = null;
try {
url=new URL("http://services.xmethods.com:80/soap/servlet/rpcrouter");
} catch (MalformedURLException mue) {
return mue.getMessage();
}
// This is the main SOAP object
Call soapCall = new Call();
// Use SOAP encoding
soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
// This is the remote object we're asking for the price
soapCall.setTargetObjectURI("urn:xmethods-BNPriceCheck");
// This is the name of the method on the above object
soapCall.setMethodName("getPrice");
// We need to send the ISBN number as an input parameter to the method
Vector soapParams = new Vector();
// name, type, value, encoding style
Parameter isbnParam = new Parameter("isbn", String.class, isbn, null);
soapParams.addElement(isbnParam);
JetSpeed
Démonstration
Portlet - SOAP
soapCall.setParams(soapParams);
try {
// Invoke the remote method on the object
Response soapResponse = soapCall.invoke(url,"");
// Check to see if there is an error, return "N/A"
if (soapResponse.generatedFault()) {
return "N/A";
} else {
// read result
Parameter soapResult = soapResponse.getReturnValue ();
// get a string from the result
return soapResult.getValue().toString();
}
} catch (SOAPException se) {
}
}
return se.getMessage();
public ConcreteElement getContent(RunData runData) {
StringElement price = new StringElement();
price.addElement("Java Servlet Programming: " + getPrice("0596000405"));
return price;
}
return
JetSpeed
Démonstration HTML interne
<portlet-entry name="pageHTML1" hidden="false" type="ref"
parent="HTML" application="false">
<meta-info>
<title>ma page HTML 1</title>
<description>référence vers la page HTML 1</description>
</meta-info>
<url>/page1.html</url>
</portlet-entry>
return
JetSpeed
Démonstration HTML externe
<portlet-entry name="Page de tomcat" hidden="false" type="ref"
parent="WebPagePortlet" application="false">
<meta-info>
<title>la page de tomcat</title>
<description>Reference vers la page de
tomcat</description>
</meta-info>
<parameter name="dont_remove_applet" value="yes" hidden="false"/>
<parameter name="dont_remove_script" value="yes" hidden="false"/>
<url>http://localhost:8080/</url>
return
</portlet-entry>
JetSpeed
Démonstration Portlet RSS
<portlet-entry name="Apacheweek" hidden="false«
type="ref" parent="RSS" application="false">
<meta-info>
<title>Apacheweek</title>
</meta-info>
<url>http://www.apacheweek.com/issues/apacheweek-headlines.xml</url>
</portlet-entry>
return
Téléchargement