Ejemplo: código de aplicación de enterprise bean

El siguiente ejemplo de componente EJB (Enterprise JavaBeans) ilustra el uso de los métodos isCallerInRole y getCallerPrincipal en un módulo EJB.

Se recomienda utilizar la seguridad declarativa. El siguiente ejemplo representa un modo de utilizar los métodos isCallerInRole y getCallerPrincipal. La aplicación puede utilizar estos resultados del modo que resulte más adecuado.

Interfaz remota

File : Hello.java

package tests;
import java.rmi.RemoteException;
/**
 * Interfaz remota para Enterprise Bean: Hello
 */
public interface Hello extends javax.ejb.EJBObject {
      public abstract String getMessage()throws RemoteException;
    		public abstract void setMessage(String s)throws RemoteException;
}

Interfaz de factoría

File : HelloHome.java
package tests;
/**
 * Interfaz de factoría para Enterprise Bean: Hello
 */
public interface HelloHome extends javax.ejb.EJBHome {
	/**
	 	 * Crea una instancia predeterminada de Session Bean: Hello
	 */
		public tests.Hello create() throws javax.ejb.CreateException, 
  java.rmi.RemoteException;
}

Implementación del bean

File : HelloBean.java

package tests;
/**
 * Clase de implementación de bean para Enterprise Bean: 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étodos de empresa

      // todos los usuarios pueden llamar a getMessage()
      public String getMessage() {
          return message;
      }

      // todos los usuarios pueden llamar a setMessage() pero sólo unos pocos usuarios pueden establecer un nuevo mensaje.
      public void setMessage(String s) {
    	
        // obtener el emisor del bean utilizando getCallerPrincipal()
        java.security.Principal principal = mySessionCtx.getCallerPrincipal();     
        .lang.String  callerId= principal.getName();

        // comprobar si el emisor del bean tiene el rol Mgr
        boolean isMgr = mySessionCtx.isCallerInRole("Mgr");

        // establecer sólo el mensaje proporcionado si el emisor es "bob" o si tiene el rol Mgr
        if ( isMgr || callerId.equals("bob") )
            message = s;
        else 
            message = "Hello";
      }

}
Después de desarrollar el bean de entidad, cree una referencia de rol de seguridad en el descriptor de despliegue bajo el bean de sesión, Hello:
<security-role-ref>
     <description>Sólo los gestores pueden llamar a setMessage() en este bean (Hello)</description>
     <role-name>Mgr</role-name>
</security-role-ref>

Para obtener información sobre cómo crear un elemento <security-role-ref>, consulte Protección de aplicaciones de enterprise bean. Utilice la información contenido en Correlacionar security-role-ref y role-name a role-link para crear el elemento.


Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=xsec_ejb
File name: xsec_ejb.html