Seam

7 respostas
F

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

7 Respostas

F

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

F
minha entity

@Entity

@Table(name=USUARIO)

@Name(usuario)

@Scope(ScopeType.SESSION)

public class Usuario extends BaseEntity {

uso jboss-4.2.2.GA

att

R

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 ?

F

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

F

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 ??

Alessandro_Lazarotti

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 …

F

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

Criado 15 de setembro de 2008
Ultima resposta 19 de set. de 2008
Respostas 7
Participantes 4