NameNotFoundException usando Seam + JBoss As 5.1 + Eclipse Helios

Salve galera.

Estou estudando JBoss Seam e comecei a implementar alguns exemplos bem básicos que encontrei por aew.

Neste momento, estou implementando o exemplo citado na Java Magazine nº 58, o qual desenvolve uma simples agenda de contatos telefonicos.

Porém, estou me deparando com o erro: javax.naming.NameNotFoundException: AgendaBean not bound.

Dei uma pesquisada na net e percebi que o erro pode estar no JNDI.

Pod ser um erro bobo, mas como estou apenas começando com o desenvolvimento usando tecnologias WEB, estou apanhando bastante… :oops:

Alguem pod me ajudar a descascar esse pequeno abacaxi?

Se precisar que seja postado qualquer código, é soh me solicitar que prontamente o postarei por aki.

Obrigado a todos. :slight_smile:

Este AgendaBean vc esta injetando ele em algum lugar?
Se estiver verifica la no AgendaBean se vc esta injetando ele com o mesmo nome que vc declarou na classe.
Sua classe AgendaBean deve estar anotada com algo como Ex:

@AutoCreate @Name("AgendaBean") @Scope(ScopeType.CONVERSATION) public class AgendaBean implements Serializable { //seus metodos e propriedades aqui }

  • A anotação @AutoCreate é usada para sempre q a classe for injetada se ela ainda não existir em nenhum escopo ela sera criada.
  • A anotação @Name é a utilizada para injeção de sua classe em qualquer outro componente. No caso se vc declarar na anotação @Name(“AgendaBean”) e la no seu componente vc for usar:

@In AgendaBean agendaBean; Não vai funcionar pq o nome declarado esta diferente (lembre-se case-sensitive)

A anotação Scope imagino que vc ja deve ter dado um lida.

Qualquer coisa posta codigo ai.

[]'s

Opa boa tarde thiagocg.

Muito obrigado pela resposta.

Bom…vou postar aki alguns trechos do meu código pra vc dar uma olhada:

Agenda.java

package beans;

import javax.ejb.Local;
import entity.Contato;


@Local
public interface Agenda {
	String editar(Contato contato);
	String remover(Contato contato);
	String salvar();
	String novoContato();
	void listarContatos();
}

AgendaBean.java

@Stateless
@TransactionAttribute(value=TransactionAttributeType.REQUIRED)
@Name("agenda")
public class AgendaBean implements Agenda {
//Atributos e métodos.
}

A página contato.xhtml é a página responsável por salvar o contato.
Em todos os campos que eu chamo algum método da classe AgendaBean, eu utilizo o nome dado no @Name, ou seja, agenda.

<h:commandButton value="confirmar" action="#{agenda.salvar}" />

O mesmo acontece na página contatos.xhtml, que é a página responsável por listar os dados armazenados no banco.

<h:column>
     <f:facet name="header">#</f:facet>
     <s:link id="editar" action="#{agenda.editar(contato)}">
            <h:graphicImage border="0" url="imagens/alterar.png" />
     </s:link>
     <s:link id="remover" action="#{agenda.remover(contato)}" onclick="javascript: if (! confirm('Deseja remover este contato?')) { return (false); }">
            <h:graphicImage border="0" url="imagens/remover.png" />
     </s:link>
</h:column>

Eu revisei esses arquivos em busca de alguma referencia errada, mas naum achei nada, estão todas chamando por agenda.metodo.

Existe alguma configuração extra para que se possa utilizar o bean?

Estudei um pouco de JSF puro, tanto no 1.2 quanto no 2.0, para utilizar o Bean, ou eu adicionava uma entrada no Web.xml ou utilizava a annotation @ManagedBean.

Com o Seam tem q fazer algo?

Bom, é isso, valew thiagocg :smiley:

Creio que faltou vc indicar o escopo, como citei no poste anterior, ai o interessante seria vc dar uma lida sobre o escopo Conversation que é bem interessante.

Pelo erro o q eu consegui deduzir foi que o componente não foi criado, dai volto a falar da anotação @AutoCreate no seu AgendaBean.

Por agora só isso me vem a cabeça.

[]'s