Seam

Boa noite amigos, estou com seguinte problema, configurei um ambiente com jboss seam 2
e estou com seguinte problema, criei uma pagina xhtml so pra teste e chamei de login.

nela tenho a seguinte estrutura:
na managerbean
@Name(“usuarioAction”)
@Scope(ScopeType.CONVERSATION)
public class UsuarioAction implements Serializable{

/**
 * 
 */
private static final long serialVersionUID = -6032758428709357665L;

@In(required=true,create=true)
@Out(required=true)
private Usuario usuario;

@In
private UsuarioServicoImpl usuarioBean;


@End
public String validar(){
	usuarioBean.recuperar(usuario.getId());
	return "/consulta_cliente.seam";
}

no xhml

<h:form id=“usuarioForm”>

Usuario:
Senha:

qdo executo o botao acessar acontece o seguinte erro:
Exception during request processing:
Caused by javax.servlet.ServletException with message: “/login.xhtml @25,71 value=”#{usuario.login}": Target Unreachable, identifier ‘usuario’ resolved to null"

JBoss Seam Debug Page
This page allows you to view and inspect any component in any Seam context associated with the current session.

sera que ja passaram por esse problema !!

Att

Essa sua classe Usuario tem a Anotação @Name especificando o nome da Entity? e em que servidor você esta rodando a aplicação?

Atte

minha entity
@Entity
@Table(name=“USUARIO”)
@Name(“usuario”)
@Scope(ScopeType.SESSION)
public class Usuario extends BaseEntity {

uso jboss-4.2.2.GA

att

Assim como o frazzato disse, eu também diria que era a sua entidade que não estava com o @Name, mas como vc verificou e está lá…

Outra coisa que pode ser é que vc esta usando o escopo de conversation. Nesse seu caso eu acho que deveria ter algum método que inicia a conversação, um método com a anotação @Begin, algo assim:

@Begin
public void selecionaUsuario(Usuario usuario) {

// ??

}

Esse método irá iniciar sua conversação e o usuario estará disponível nesse escopo.

Mas no seu caso vc realmente precisa de um escopo de conversação ?

entao amigo, boa pergunta.
o que eu fiz deixei o kra como IN e Out, pois na verdade é assim estou montando esse xhtml so pra teste, para ver como realmente funciona o processo do seam.

entao qual foi a ideia, entro no sistema como localhost:8080/Treinamento/login.seam
nesse momento nao chamo nenhum begin, ele me mostra a tela com dois campos login e password e o botao validar.

quando clico no validar gostaria que o seam popule o objeto usuario, onde teria o usuario com seu atributo login e password populado.

porem ele da um erro de null pointer, nao consegui visualizar ainda o que estou errando, pois creio que o seam deveria dar o new no objeto assim que a pagina seja submetida correto???

att

Bom dia Galera ainda nao consegui resolver meu problema,
apesar de chegar proximo, mas nao consigo ver solucao para ele.

vi que nao esta sendo gerado para as classes de ejb. oq é gerado para classe da camada web.
no console do jboss quando sobe o servidor ele acha o componente action
21:01:20,015 INFO [Component] Component: usuarioAction, scope: EVENT, type: JAVA_BEAN, class: br.com.treinamento.usuario.
action.UsuarioAction
esse usuarioAction é meu @Name, porem nao vejo o mesmo processo para os de ejb:

agora para os ejb ele so gera
21:01:00,062 INFO [Ejb3Configuration] found EJB3 Entity bean: br.com.treinamento.domain.Cliente
21:01:00,062 INFO [Ejb3Configuration] found EJB3 Entity bean: br.com.treinamento.domain.ClienteEndereco
21:01:00,062 INFO [Ejb3Configuration] found EJB3 Entity bean: br.com.treinamento.domain.TipoCliente
21:01:00,062 INFO [Ejb3Configuration] found EJB3 Entity bean: br.com.treinamento.domain.Usuario
21:01:00,156 INFO [Configuration] Reading mappings from resource : META-INF/orm.xml
21:01:00,343 INFO [Ejb3Configuration] [PersistenceUnit: TreinamentoEJB] META-INF/orm.xml found
21:01:00,562 INFO [AnnotationBinder] Binding entity from annotated class: br.com.treinamento.domain.Cliente
21:01:00,687 INFO [EntityBinder] Bind entity br.com.treinamento.domain.Cliente on table CLIENTE
21:01:00,984 INFO [AnnotationBinder] Binding entity from annotated class: br.com.treinamento.domain.ClienteEndereco
21:01:01,000 INFO [EntityBinder] Bind entity br.com.treinamento.domain.ClienteEndereco on table CLIENTE_ENDERECO
21:01:01,015 INFO [AnnotationBinder] Binding entity from annotated class: br.com.treinamento.domain.TipoCliente
21:01:01,015 INFO [EntityBinder] Bind entity br.com.treinamento.domain.TipoCliente on table TIPO_CLIENTE
21:01:01,015 INFO [AnnotationBinder] Binding entity from annotated class: br.com.treinamento.domain.Usuario
21:01:01,015 INFO [EntityBinder] Bind entity br.com.treinamento.domain.Usuario on table USUARIO
21:01:01,265 INFO [CollectionBinder] Mapping collection: br.com.treinamento.domain.Cliente.listaEndereco -> CLIENTE_ENDERECO
21:01:01,421 INFO [ConnectionProviderFactory] Initializing connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
21:01:01,437 INFO [InjectedDataSourceConnectionProvider] Using provided datasource
21:01:01,765 INFO [SettingsFactory] RDBMS: PostgreSQL, version: 8.2.7
21:01:01,765 INFO [SettingsFactory] JDBC driver: PostgreSQL Native Driver, version: PostgreSQL 8.2 JDBC3 with SSL (build 506)
21:01:01,812 INFO [Dialect] Using dialect: org.hibernate.dialect.PostgreSQLDialect
21:01:01,843 INFO [TransactionFactoryFactory] Transaction strategy: org.hibernate.ejb.transaction.JoinableCMTTransactionFactory
21:01:01,859 INFO [TransactionManagerLookupFactory] instantiating TransactionManagerLookup: org.hibernate.transaction.JBossTransactionManagerLookup
21:01:01,859 INFO [TransactionManagerLookupFactory] instantiated TransactionManagerLookup
21:01:01,859 INFO [SettingsFactory] Automatic flush during beforeCompletion(): disabled
21:01:01,859 INFO [SettingsFactory] Automatic session close at end of transaction: disabled
21:01:01,859 INFO [SettingsFactory] JDBC batch size: 15
21:01:01,859 INFO [SettingsFactory] JDBC batch updates for versioned data: disabled
21:01:01,859 INFO [SettingsFactory] Scrollable result sets: enabled
21:01:01,859 INFO [SettingsFactory] JDBC3 getGeneratedKeys(): disabled
21:01:01,859 INFO [SettingsFactory] Connection release mode: auto
21:01:01,859 INFO [SettingsFactory] Default batch fetch size: 1
21:01:01,859 INFO [SettingsFactory] Generate SQL with comments: disabled
21:01:01,859 INFO [SettingsFactory] Order SQL updates by primary key: disabled
21:01:01,859 INFO [SettingsFactory] Order SQL inserts for batching: disabled
21:01:01,859 INFO [SettingsFactory] Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
21:01:01,875 INFO [ASTQueryTranslatorFactory] Using ASTQueryTranslatorFactory
21:01:01,875 INFO [SettingsFactory] Query language substitutions: {}
21:01:01,875 INFO [SettingsFactory] JPA-QL strict compliance: enabled
21:01:01,875 INFO [SettingsFactory] Second-level cache: enabled
21:01:01,875 INFO [SettingsFactory] Query cache: disabled
21:01:01,875 INFO [SettingsFactory] Cache provider: org.hibernate.cache.HashtableCacheProvider
21:01:01,890 INFO [SettingsFactory] Optimize cache for minimal puts: disabled
21:01:01,890 INFO [SettingsFactory] Cache region prefix: TreinamentoEAR_ear,TreinamentoEJB_jar,TreinamentoEJB
21:01:01,890 INFO [SettingsFactory] Structured second-level cache entries: disabled
21:01:01,921 INFO [SettingsFactory] Echoing all SQL to stdout
21:01:01,921 INFO [SettingsFactory] Statistics: disabled

porem no meu jar do ejb ja possui o seam.properties.
alguem pde me ajudar ??

O EJB Module deve conter na raiz do classpath o arquivo seam.properties. O Seam possui um mecanismo conhecido como automatic discovery que vascullha no classpath a presença deste arquivo para habilitar componentes Seam no pacote. Independente se seu EAR possuir 15 modulos EJBs, todos os modulos deverão conter o seam.properties.

Quanto ao Login, invez de atribuir diretamente o user e password para o Usuario, primeiro faça o binding para Identity e configure o sistema de segurança do Seam para a validação. Se autenticar, aí então carregue o usuario do seu sistema de persistencia e continue a brincadeira …

amigos, de nao conseguir gerar os componentes eu descobri, qdo deixa o jboss-seam.jar no path do ear e também no lib de web-inf da app web o infeliz gera os componentes apenas do projeto web, entao fiz o seguinte removi do projeto web e deixei apenas no ear, e logo vi no console do jboss ele gerando os componentes, agora estou com outro problema queé de viewhandle, como nao mexi a fundo e deve ser problema de biblioteca, qualquer coisa abro um novo post.

grato pela ajuda de todos !!!

Att