Olá,
Eu sou newbie em EJBs e estou tendo alguns problemas para pegar o usuário que chamou um determinado EJB ( javax.ejb.SessionContext.getCallerPrincipal().getName() ).
Quando eu chamo sc.getCallerPrincipal().getName() no EJB sempre retorna anonymous.
Depois de uma longa jornada eu consegui autenticar o usuário (não dá mais erro de user/pass inválido), então porque está retornando anonymous ???
- Se eu troco a senha do usuário 900080 da error de autenticação, isso quer dizer que ele está autenticando o usuário 900080…
Abaixo segue o código que eu uso para fazer lookup NO MEU JSP:
Properties props = new Properties();
props.put( Context.INITIAL_CONTEXT_FACTORY, “com.evermind.server.rmi.RMIInitialContextFactory” );
props.put( javax.naming.Context.SECURITY_PRINCIPAL, “900080” );
props.put( javax.naming.Context.SECURITY_CREDENTIALS, “900080” );
props.put( Context.PROVIDER_URL, “ormi://10.1.213.197:23891” );
// props.put(javax.naming.Context.SECURITY_PRINCIPAL, (usuario==null||usuario.equals("")?“anonimo”:usuario));
InitialContext ctx = new InitialContext(props);
Object auxCreate = ctx.lookup( “java:comp/env/ejb/Servicos/Traducao” );
Aqui esta o meu ejb-jar.xml
<?xml version = ‘1.0’ encoding = ‘ISO-8859-1’?>
<!DOCTYPE ejb-jar PUBLIC “-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN” “http://java.sun.com/dtd/ejb-jar_2_0.dtd”>
<ejb-jar>
<enterprise-beans>
<session>
<description>Session Bean ( Stateless )</description>
<display-name>Traducao</display-name>
<ejb-name>Servico/Traducao</ejb-name>
<home>Servico.TraducaoHome</home>
<remote>Servico.Traducao</remote>
<ejb-class>Servico.impl.TraducaoBean</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
<security-role-ref>
<description>administrators</description>
<role-name>administrators</role-name>
<role-link>administrators</role-link>
</security-role-ref>
<security-identity>
<run-as>
<role-name>administrators</role-name>
</run-as>
</security-identity>
</session>
</enterprise-beans>
</ejb-jar>
Aqui esta o trecho do meu web.xml
<?xml version = ‘1.0’ encoding = ‘ISO-8859-1’?>
<!DOCTYPE web-app PUBLIC “-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN” “<a href="http://java.sun.com/dtd/web-app_2_3.dtd">http://java.sun.com/dtd/web-app_2_3.dtd</a>”>
<web-app>
<description>Empty web.xml file for Web Application</description>
(…)
(…)
(…)
<security-role>
<description>Administrators</description>
<role-name>Administrators</role-name>
</security-role>
<ejb-ref>
<ejb-ref-name>ejb/Servico/Traducao</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>Servico.TraducaoHome</home>
<remote>Servico.Traducao</remote>
<ejb-link>Servico/Traducao</ejb-link>
<run-as>Administrators</run-as>
</ejb-ref>
</web-app>
Aqui esta o meu jazn-data.xml
<?xml version=“1.0” encoding=“UTF-8” standalone=‘yes’?>
<!DOCTYPE jazn-data PUBLIC “JAZN-XML Data” “http://xmlns.oracle.com/ias/dtds/jazn-data-9_04.dtd”>
<jazn-data>
<!-- JAZN Realm Data -->
<jazn-realm>
<realm>
<name>jazn.com</name>
<name>anonymous</name>
<description>The default guest/anonymous user</description>
<name>900080</name>
<credentials>{903}o9BHVNXAPjIbUfWUiMIItIYp0SW2naTk</credentials>