Exemple : Code d'application de bean enterprise

L'exemple de composant EJB (Enterprise JavaBeans) suivant illustre l'utilisation des méthodes isCallerInRole et getCallerPrincipal dans un module EJB.

Il est recommandé d'utiliser une sécurité déclarative. Vous trouverez ci-après un exemple d'utilisation des méthodes isCallerInRole et getCallerPrincipal. L'application peut utiliser ce résultat de quelque manière qui lui convient.

Une interface Remote

Fichier : Hello.java

package tests;
import java.rmi.RemoteException;
/**
 * Interface éloignée du bean enterprise : Hello
 */
public interface Hello extends javax.ejb.EJBObject {
      public abstract String getMessage()throws RemoteException;
    	public abstract void setMessage(String s)throws RemoteException;
}

Une interface Home

Fichier : HelloHome.java
package tests;
/**
 * Interface éloignée du bean enterprise : Hello
 */
public interface HelloHome extends javax.ejb.EJBHome {
	/**
	 * Crée une instance par défaut du bean session : Hello
	 */
	public tests.Hello create() throws javax.ejb.CreateException, 
  java.rmi.RemoteException;
}

Une implémentation du bean

Fichier : HelloBean.java

package tests;
/**
 * Classe d'implémentation du bean enterprise : Hello
 */
public class HelloBean implements javax.ejb.SessionBean {
	private javax.ejb.SessionContext mySessionCtx;
	/**
	 * getSessionContext
	 */
	public javax.ejb.SessionContext getSessionContext() {
		return mySessionCtx;
	}
	/**
	 * setSessionContext
	 */
	public void setSessionContext(javax.ejb.SessionContext ctx) {
		mySessionCtx = ctx;
	}
	/**
	 * ejbActivate
	 */
	public void ejbActivate() {
	}
	/**
	 * ejbCreate
	 */
	public void ejbCreate() throws javax.ejb.CreateException {
	}
	/**
	 * ejbPassivate
	 */
	public void ejbPassivate() {
	}
	/**
	 * ejbRemove
	 */
	public void ejbRemove() {
	}
	
	public java.lang.String message;
	
	
      //méthodes d'activité

      // tous les utilisateurs peuvent appeler getMessage()
      public String getMessage() {
          return message;
      }

      // tous les utilisateurs peuvent appeler setMessage() mais seuls quelques-uns peuvent définir un nouveau message.
      public void setMessage(String s) {
    	
        // obtenir l'appelant du bean à l'aide de getCallerPrincipal()
        java.security.Principal principal = mySessionCtx.getCallerPrincipal();     
        java.lang.String  callerId= principal.getName();

        // vérifier si le rôle Mgr est accordé à l'appelant du bean
        boolean isMgr = mySessionCtx.isCallerInRole("Mgr");

        // ne définir le message fourni que si l'appelant est "bob" ou si le rôle Mgr lui est accordé
        if ( isMgr || callerId.equals("bob") )
            message = s;
        else 
            message = "Hello";
      }

}
Après avoir développé le bean entity, créez une référence de rôle de sécurité dans le descripteur de déploiement, sous le bean session Hello :
<security-role-ref>
     <description>Seuls les gestionnaires peuvent appeler
setMessage() sur ce bean (Hello)</description>
     <role-name>Mgr</role-name>
</security-role-ref>

Pour savoir comment créer un élément <security-role-ref>, voir Sécurisation des applications de bean enterprise. Pour créer l'élément, utilisez les informations fournies dans Mappage de security-role-ref et role-name à role-link.


Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=xsec_ejb
Nom du fichier : xsec_ejb.html