Olá pessoal,
Continua minha saga. Agora, com tudo configurado mas com um erro na hora de rodar. Criei um projeto WEB com JSF no netbeans, classe simples de pessoa com id e descrição, utilizando o hibernate como entity manager.
Após isso utilizei o wizard para criar o “JSF Page from entity”. Ele criou as páginas e tal.
Na hora de rodar o projeto, qdo clico no link pra listar o tomcate me retorna:
javax.servlet.ServletException: javax.faces.FacesException: javax.naming.NameNotFoundException: Name br.mil.fabsisos.PessoaController is not bound in this Context
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
Creio que o netbeans ( ou eu ) esqueceu de configurar alguma coisa.
IDE: NetBeans 6.1
Container: Tomcat 6.0.16
PU
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" 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">
<persistence-unit name="SISOS-WEBPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.password" value="admin123"/>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/sisos"/>
<property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence>
Parte mais relevante do PessoaController.java
package br.mil.fabsisos;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.PersistenceUnit;
import javax.persistence.Query;
import javax.faces.application.FacesMessage;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.faces.FacesException;
import java.util.HashMap;
import javax.transaction.UserTransaction;
public class PessoaController {
private Pessoa pessoa = null;
private List<Pessoa> pessoas = null;
@Resource
private UserTransaction utx = null;
@PersistenceUnit(unitName = "SISOS-WEBPU")
private EntityManagerFactory emf = null;
public EntityManager getEntityManager() {
return emf.createEntityManager();
}
// ...
// ... resto do codigo
// ...
}
Agradeço qualquer ajuda. Qualquer dica é valida.
–
Abraços,
Carlos MacLeod
Continuando:
faces-config.xml
<?xml version='1.0' encoding='UTF-8'?>
<!-- =========== FULL CONFIGURATION FILE ================================== -->
<faces-config version="1.2"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
<managed-bean>
<managed-bean-name>pessoa</managed-bean-name>
<managed-bean-class>br.mil.fabsisos.PessoaController</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<converter>
<converter-for-class>br.mil.fabsisos.Pessoa</converter-for-class>
<converter-class>br.mil.fabsisos.PessoaConverter</converter-class>
</converter>
<navigation-rule>
<navigation-case>
<from-outcome>pessoa_create</from-outcome>
<to-view-id>/pessoa/New.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<navigation-case>
<from-outcome>pessoa_list</from-outcome>
<to-view-id>/pessoa/List.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<navigation-case>
<from-outcome>pessoa_edit</from-outcome>
<to-view-id>/pessoa/Edit.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<navigation-case>
<from-outcome>pessoa_detail</from-outcome>
<to-view-id>/pessoa/Detail.jsp</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/welcomeJSF.jsp</welcome-file>
</welcome-file-list>
</web-app>
gleise
Junho 28, 2008, 7:46am
#3
Pela sua descricao, acho que deve ser algo com seu JSP… vc pode postar o codigo do “/pessoa/List.jsp” ? Pode ser só os trechos que você chama seu controller.
Olá Gleise.
Não pude acessar os fontes da empresa aqui de casa, mas como o projeto é pequenos ainda resolvi reproduzir aqui em casa e obtive sucesso ( ao menos em reproduzir o erro ). O erro persiste mesmo com uma “fresh install” do Netbeans.
Aqui vai o “…/pessoa/List.jsp”
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Listing Pessoa Items</title>
</head>
<body>
<f:view>
<h:messages errorStyle="color: red" infoStyle="color: green" layout="table"/>
<h1>Listing Pessoa Items</h1>
<h:form>
<h:outputText escape="false" value="(No Pessoa Items Found)<br />" rendered="#{pessoa.itemCount == 0}" />
<h:panelGroup rendered="#{pessoa.itemCount > 0}">
<h:outputText value="Item #{pessoa.firstItem + 1}..#{pessoa.lastItem} of #{pessoa.itemCount}"/>
<h:commandLink action="#{pessoa.prev}" value="Previous #{pessoa.batchSize}" rendered="#{pessoa.firstItem >= pessoa.batchSize}"/>
<h:commandLink action="#{pessoa.next}" value="Next #{pessoa.batchSize}" rendered="#{pessoa.lastItem + pessoa.batchSize <= pessoa.itemCount}"/>
<h:commandLink action="#{pessoa.next}" value="Remaining #{pessoa.itemCount - pessoa.lastItem}"
rendered="#{pessoa.lastItem < pessoa.itemCount && pessoa.lastItem + pessoa.batchSize > pessoa.itemCount}"/>
<h:dataTable value='#{pessoa.pessoas}' var='item' border="0" cellpadding="2" cellspacing="0" rowClasses="jsfcrud_oddrow,jsfcrud_evenrow" rules="all" style="border:solid 1px">
<h:column>
<f:facet name="header">
<h:outputText value="Id"/>
</f:facet>
<h:outputText value=" #{item.id}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nome"/>
</f:facet>
<h:outputText value=" #{item.nome}"/>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText escape="false" value=" "/>
</f:facet>
<h:commandLink value="Show" action="#{pessoa.detailSetup}">
<f:param name="jsfcrud.currentPessoa" value="#{pessoa.asString[item]}"/>
</h:commandLink>
<h:outputText value=" "/>
<h:commandLink value="Edit" action="#{pessoa.editSetup}">
<f:param name="jsfcrud.currentPessoa" value="#{pessoa.asString[item]}"/>
</h:commandLink>
<h:outputText value=" "/>
<h:commandLink value="Destroy" action="#{pessoa.destroy}">
<f:param name="jsfcrud.currentPessoa" value="#{pessoa.asString[item]}"/>
</h:commandLink>
</h:column>
</h:dataTable>
</h:panelGroup>
<br />
<h:commandLink action="#{pessoa.createSetup}" value="New Pessoa"/>
<br />
<a >Index</a>
</h:form>
</f:view>
</body>
</html>
Obrigado pela ajuda.
–
Abraços,
Carlos MacLeod
Recriei o mesmo projeto utilizando o Glassfish no lugar do Tomcat. Não dá mais aquele erro e consigo acessar as páginas do crud. O problema agora é que ele diz que insere, mas não insere nada… e nem dá erro. Ele cria a tabela normalmente no banco. Debuguei mas sem nenhum erro aparente.
Tô pirando já
:roll:
Bem, mudei o EM de Hibernate para Toplink e agora ele consegue executar tudo do CRUD, mas ainda queria trabalhar com o Tomcat e não com um AS ( Glassfish no caso ).
–
Atenciosamente,
Carlos MacLeod
luuu
Junho 30, 2008, 6:38pm
#7
Caro,
estou na mesma busca que voce.
So consigo usar as JSF from Entity rodando no Glassfish, e necessito usa-las no tomcat.
Parece ser algo de Naming Binding que o Tomcat não possui.
[quote=luzeras]Caro,
estou na mesma busca que voce.
So consigo usar as JSF from Entity rodando no Glassfish, e necessito usa-las no tomcat.
Parece ser algo de Naming Binding que o Tomcat não possui.[/quote]
Será que precisa algo como o openEJB no Tomcat para funcionar ?
–
Abraços,
Carlos MacLeod
eu fiz um teste com o netbeans6.1 e o servidor da sun.
aparentemente funcionou certinho. Vou testar pra ver se há limitações.