Fiches / Articles

Cadre Fonctionnel

Relation JSP et SessionBean

Cadre Technique

NT/WebLogic 6.1

Identifiant 

SYS_JSP_04

Référent technique 


Version 

1.0

Auteur 

Alexandre Brillant

Date

30/10/01

Source

Documentation WebLogic 6.1

WebLogic propose des facilités pour l'exploitation de SessionBean dans un JSP. Ces facilités reposent sur la génération d'une bibliothèque TagLib grâce à l'outil weblogic.servlet.ejb2jsp.gui.Main.

  1. Etape 1 : Construction d'un sessionBean sous la forme d'un Jar

Exemple d'interface d'un sessionBean :


package test;

import java.rmi.RemoteException;
import javax.ejb.EJBObject;

/**
 * Exemple Interface TestSession.
 *
 * Cette interface sert pour les acces distants. L'implementation
 * est generee par WebLogic grace a la commande weblogic.ejbc
 *
 * @author Alexandre Brillant <abrillant@wanadoo.fr>
 * @version 1.0 */
public interface TestSession extends EJBObject {

    /**
     * @return une valeur */
    public String getData() throws RemoteException;
    
    /**
     * Cette methode...
     * @param value Une valeur */
    public void setData( String value ) throws RemoteException;
}

  1. Etape 2 : Exécution de l'application ejb2jsp :



java -classpath C:\bea\wlserver6.1\lib\weblogic.jar
weblogic.servlet.ejb2jsp.gui.Main

Exécuter l'action New... dans File et sélectionner le Jar correspondant à votre session bean. Une arborescence apparaît avec la liste des méthodes trouvées. Chaque méthode servira à la construction d'un Tag. Les propriétés du tag seront équivalentes aux paramètres de chaque méthode.

  1. Etape 3 : Génération de la TagLib

Cliquer sur le nœud « Project Build Options ». Une liste d'option de génération des Jar apparaît à gauche. Modifier le champ 'Output Type' pour avoir la valeur JAR. Modifier le champ JAR output File pour pointer vers un répertoire WEB-INF\lib inclut dans votre répertoire d'application JSP.

Il est aussi nécessaire de spécifier le chemin des sources du SessionBean pour que l'application puisse retrouver le nom des paramètres de chaque méthode. Il suffit de cliquer sur le bouton en bas de l'écran Edit sourcePath elements et d'ajouter un path vers les sources. Sinon, il suffit de sélectionner chaque méthode du sessionBean dans l'arborescence et de modifier le champ 'Attribute Name'.

Cliquer en fin d'étape sur l'action 'Build Project' du menu File.

  1. Etape 4 : Exploitation

L'exploitation des sessions Bean en stateFul et stateLess divergent un peu. Dans tous les cas, il faut mettre à jour le fichier web.xml du répertoire WEB-INF de votre application.

Exemple de fichier web.xml si la tagLib générée s'appelle testSession2-tags.jar :



<?xml version="1.0" ?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web
Application 1.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>

<taglib>

    <taglib-uri>testSession.tld</taglib-uri>

    <taglib-location>

	/WEB-INF/lib/testSession2-tags.jar

    </taglib-location>

</taglib>

</web-app>

Remarque : Il semble aussi nécessaire de copier le Jar de votre sessionBean dans le répertoire WEB-INF/lib. Ce jar servira uniquement pour l'accès au méthode et non à l'exécution à proprement parlé du session bean.



<%@page language="java" info="Rôle
principale" contentType=""text/html;" charset=iso-8859-1"
isErrorPage="false" import=""java.util.*""
errorPage="error.jsp" %>

<%@taglib uri="testSession.tld"
prefix="testSession"%>

<%-- ******************* HTML ***************** --%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"

    "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

  <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">

  <meta http-equiv="Content-Language" content="fr">

  <title>Titre de la page</title>

  <link href="style.css" rel="stylesheet"
type="text/css">

 </head>

<body>

Test de mapping SessionBean et JSP/TagLib : <br>

<testSession:setData value="Toto" />

<testSession:getData _return="res"/>

<% out.println( "Resultat : " + res ); %>

</body>

</html>

Cet exemple utilise les méthodes public String getData() et public void setData( String value ) du session Bean respectivement par les tags : testSession:setData et testSession:getData . Lorsque une méthode retourne une valeur l'attribut '_return' doit être utilisée. Ici la valeur retournée res est une chaîne de caractère correspondant au type retourné par la méthode getData du session bean.


<%@page language="java" info="Rôle
principale" contentType=""text/html;" charset=iso-8859-1"
isErrorPage="false" import=""java.util.*""
errorPage="error.jsp" %>

<%@taglib uri="testSession.tld"
prefix="testSession"%>
<%-- ******************* HTML ***************** --%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"

    "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

  <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">

  <meta http-equiv="Content-Language" content="fr">

  <title>Titre de la page</title>

  <link href="style.css" rel="stylesheet"
type="text/css">

 </head>

<body>

Test de mapping SessionBean/StateFul et JSP/TagLib : <br>

<testSession:home-create _return="newObj">




	<testSession:setData value="Toto" />

	<testSession:getData _return="res"/>

	<% out.println( "Resultat : " + res ); %>

</testSession:home-create>

</body>

</html>

Il est indispensable pour une session bean en stateful de passer par le tag home-create. La valeur de retour associée (ici NewObj) est utilisable pour les collections de bean (entityBean).