galera
eu to fazendo uma aplicação usando jboss seam, e to começando a estudar ele agora.
Dai eu to fazendo um login, e na hora de chamar o entity manager…ta vindo nulo.
Segue o erro dado:
23:32:37,453 INFO [org.jboss.bootstrap.impl.base.server.AbstractServer] JBossAS [6.0.0.Final "Neo"] Started in 43s:959ms
23:33:09,064 WARN [org.jboss.seam.security.jaas.SeamLoginModule] Error invoking login method: javax.el.ELException: org.jboss.seam.RequiredException: @In attribute requires non-null value: authenticator.em
at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:339) [:1.0_02.CR5]
at org.jboss.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:348) [:1.0_02.CR5]
at org.jboss.el.parser.AstPropertySuffix.invoke(AstPropertySuffix.java:58) [:1.0_02.CR5]
at org.jboss.el.parser.AstValue.invoke(AstValue.java:96) [:1.0_02.CR5]
at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276) [:1.0_02.CR5]
at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:175) [:2.2.1.Final]
at org.jboss.seam.security.jaas.SeamLoginModule.login(SeamLoginModule.java:109) [:2.2.1.Final]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_22]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_22]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [:1.6.0_22]
at java.lang.reflect.Method.invoke(Unknown Source) [:1.6.0_22]
at javax.security.auth.login.LoginContext.invoke(Unknown Source) [:1.6.0_22]
at javax.security.auth.login.LoginContext.access$000(Unknown Source) [:1.6.0_22]
at javax.security.auth.login.LoginContext$5.run(Unknown Source) [:1.6.0_22]
at java.security.AccessController.doPrivileged(Native Method) [:1.6.0_22]
Caused by: org.jboss.seam.RequiredException: @In attribute requires non-null value: authenticator.em
at org.jboss.seam.Component.getValueToInject(Component.java:2361) [:2.2.1.Final]
at org.jboss.seam.Component.injectAttributes(Component.java:1739) [:2.2.1.Final]
at org.jboss.seam.Component.inject(Component.java:1557) [:2.2.1.Final]
at org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:61) [:2.2.1.Final]
at org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68) [:2.2.1.Final]
at org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:44) [:2.2.1.Final]
meu components.xml
[code]<?xml version=“1.0” encoding=“UTF-8”?>
<components xmlns="http://jboss.com/products/seam/components"
xmlns:core="http://jboss.com/products/seam/core"
xmlns:persistence="http://jboss.com/products/seam/persistence"
xmlns:drools="http://jboss.com/products/seam/drools"
xmlns:bpm="http://jboss.com/products/seam/bpm"
xmlns:security="http://jboss.com/products/seam/security"
xmlns:mail="http://jboss.com/products/seam/mail"
xmlns:web="http://jboss.com/products/seam/web"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
“http://jboss.com/products/seam/core http://jboss.com/products/seam/core-2.2.xsd
http://jboss.com/products/seam/persistence http://jboss.com/products/seam/persistence-2.2.xsd
http://jboss.com/products/seam/drools http://jboss.com/products/seam/drools-2.2.xsd
http://jboss.com/products/seam/bpm http://jboss.com/products/seam/bpm-2.2.xsd
http://jboss.com/products/seam/security http://jboss.com/products/seam/security-2.2.xsd
http://jboss.com/products/seam/mail http://jboss.com/products/seam/mail-2.2.xsd
http://jboss.com/products/seam/web http://jboss.com/products/seam/web-2.2.xsd
http://jboss.com/products/seam/components http://jboss.com/products/seam/components-2.2.xsd”>
<core:init debug=“true” jndi-pattern="@jndiPattern@"/>
<core:manager concurrent-request-timeout="500"
conversation-timeout="120000"
conversation-id-parameter="cid"
parent-conversation-id-parameter=“pid”/>
<!-- Make sure this URL pattern is the same as that used by the Faces Servlet -->
<web:hot-deploy-filter url-pattern="*.seam"/>
<persistence:managed-persistence-context name=“entityManager” auto-create="true"
persistence-unit-jndi-name=“java:/CondominioEntityManagerFactory”/>
<drools:rule-base name=“securityRules”>
<drools:rule-files>
<value>/security.drl</value>
</drools:rule-files>
</drools:rule-base>
<security:rule-based-permission-resolver security-rules="#{securityRules}"/>
<security:identity authenticate-method="#{authenticator.authenticate}" remember-me=“true”/>
<event type=“org.jboss.seam.security.notLoggedIn”>
<action execute="#{redirect.captureCurrentView}"/>
</event>
<event type=“org.jboss.seam.security.loginSuccessful”>
<action execute="#{redirect.returnToCapturedView}"/>
</event>
<mail:mail-session host=“localhost” port=“25”/>
<!-- For use with jBPM pageflow or process management -->
<!–
<bpm:jbpm>
<bpm:process-definitions></bpm:process-definitions>
<bpm:pageflow-definitions></bpm:pageflow-definitions>
</bpm:jbpm>
–>
</components>
[/code]
meu persistence.xml
[code]<?xml version=“1.0” encoding=“UTF-8”?>
<!-- Persistence deployment descriptor for dev profile -->
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version=“1.0”>
<persistence-unit name=“Condominio”>
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/CondominioDatasource</jta-data-source>
<class>br.com.cond.entidade.Usuario</class>
<!-- The <jar-file> element is necessary if you put the persistence.xml in the WAR and the classes in the JAR -->
<!–
<jar-file>…/…/vehicles.jar</jar-file>
–>
<properties>
<property name=“hibernate.dialect” value=“org.hibernate.dialect.PostgreSQLDialect”/>
<property name=“hibernate.hbm2ddl.auto” value=“update”/>
<property name=“hibernate.show_sql” value=“true”/>
<property name=“hibernate.format_sql” value=“true”/>
<property name=“jboss.entity.manager.factory.jndi.name” value=“java:/CondominioEntityManagerFactory”/>
</properties>
</persistence-unit>
</persistence>
[/code]
minha entidade:
[code]package br.com.cond.entidade;
@Entity
@Name(“usuario”)
@Scope(ScopeType.SESSION)
@Table(name=“usuario”)
@SequenceGenerator(name=“usuario_seqc”, sequenceName=“usuario_codigo_seq”)
public class Usuario implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="usuario_seqc")
private long codigo;
private String login;
private String password;
private String nome;
private String email;
public long getCodigo() {
return codigo;
}
public void setCodigo(long codigo) {
this.codigo = codigo;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
[/code]
Meu autenticator:
[code]@Name(“authenticator”)
public class Authenticator
{
@Logger private Log log;
@In Identity identity;
@In Credentials credentials;
@In (required=false )private Usuario usuario;
@In(create=true, required=true)
@Out(required=true)
private EntityManager em;
public boolean authenticate()
{
log.info("authenticating {0}", credentials.getUsername());
boolean result = false;
if(getUsuario() == null)
{
try
{
Identity identity = Identity.instance();
Query q = em.createQuery(" from usuario where login = :userName and password= :password")
.setParameter("username", identity.getUsername())
.setParameter("password", identity.getPassword());
setUsuario((Usuario)q.getSingleResult());
}
catch(NoResultException nre)
{
FacesMessages.instance().add("Usuario/senha não localizado");
}
}
result = (getUsuario() == null)?false:true;
return result;
}
@Destroy @Remove
public void destroy()
{
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
[/code]
alguem tem ideia do que pode ser o erro? :?