JBoss Community

Konfiguratio of security domains in JBoss AS 6 with EJB 3.1

created by Süleyman Vurucu in EJB3 - View the full discussion

Hi @ all,

 

My Environment at first:

 

Aplication Sevrer :      jboss-6.0.0.20100911-M5 (default configuration without any changes)

IDE:                          Eclipse 3.6

Jboss Tools               V 3.2

Java Version:             JDK 1.6 U 20

OS:                          Windows Vista 32 Bit

 

My Problem:

 

I Create a test Application. It Contains only one Stateless Bean with local and remote interfaces:

 

package beans.stateless;

import interfaces.stateless.FirstStatelessBeanLocal;
import interfaces.stateless.FirstStatelessBeanRemote;

import javax.annotation.*;
import javax.annotation.security.*;
import javax.ejb.*;

import org.apache.commons.logging.*;
import org.jboss.aop.*;
import org.jboss.beans.metadata.api.annotations.*;
import org.jboss.security.annotation.*;

/**
* Session Bean implementation class FirstStatelessBean
*/

@Stateless
@SecurityDomain("JBossWS")
@RolesAllowed("{friend}")
public class FirstStatelessBean implements FirstStatelessBeanRemote, FirstStatelessBeanLocal {

    /**
     * Default constructor.
     */

    private int    pCounterLocal    = 0;
    private int    pCounterRemote    = 0;

    @Resource
    private SessionContext myCtx ;
   
    public FirstStatelessBean() {
    }

    @PreDestroy
    public void destroy() {
        LogFactory.getLog( getClass() ).warn( "Destroy" );
        pCounterLocal=0;
        pCounterRemote=0;
    }
   
    @PostConstruct
    public void create(){
        LogFactory.getLog( getClass() ).warn( "Create" );
    }

   
    @Override
    public String sayHelloLocal( String pMesssage ) {
        String lMessage = "Hello Local to " + pMesssage + " " + ( ++pCounterLocal ) + " Times";
        LogFactory.getLog( getClass() ).info( lMessage );
        return lMessage;
    }

    @Override
    public String sayHelloRemote( String pMesssage ) {
        String lMessage = "Hello Remote to " + pMesssage + " " + ( ++pCounterRemote ) + " Times";
        LogFactory.getLog( getClass() ).info( lMessage );
//      LogFactory.getLog( getClass() ).info( myCtx.getCallerPrincipal() );
        return lMessage;
    }

    @Override
    @PrePassivate
    public void passviate() {
        LogFactory.getLog( getClass() ).warn( "Passivate" );       
    }


}

 

On The Client side I get the JNDI Refrence on the following way:

 

Properties p = new Properties();
                p.put( Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory" );
                p.put( Context.PROVIDER_URL, "jnp://" + pServerAddr + ":" + pServerPort );
InitialContext jndiContext = new InitialContext( p );

 

So  my excpected behavior (when I call sayHelloRemote) is an Exception. But  this request still works with worong user information.

 

So what I'm doing wrong ?

 

I try the example from

http://community.jboss.org/wiki/Chapter15-SecurityandSchoolEJBAccess

as well. But the result i the same. I can call every method withaout an exception. And when I call getCallerPrincipal from SessionContext I get an Exception. This occurs while the bean don't in a security domain am I rigth ?

 

Reply to this message by going to Community

Start a new discussion in EJB3 at Community