Problemas com JSF

Fala amigos do GUJ, estou começando o aprendizado de JSF e estou fazendo um cadastro basico de clientes com MySQL, todavia estou tento um problema ate parecido com o dos amigos aqui do forum tiveram estudando jsf, todavia a solucao deles não serviu para mim, estou postando o stack, as classes, web-xml e o face-config para os mais experientes que quiserem/poderem me ajudar.

stack

Fev 10, 2013 10:06:36 AM com.sun.faces.context.ExceptionHandlerImpl log
SEVERE: JSF1073: javax.faces.event.AbortProcessingException obtido durante o processamento de INVOKE_APPLICATION 5: UIComponent-ClientId=j_id_jsp_1570179329_1:j_id_jsp_1570179329_9, Message=Method not found: com.clients.controller.ClientsController@48fe4210.insert()
Fev 10, 2013 10:06:36 AM com.sun.faces.context.ExceptionHandlerImpl log
SEVERE: Method not found: com.clients.controller.ClientsController@48fe4210.insert()
javax.faces.event.AbortProcessingException: Method not found: com.clients.controller.ClientsController@48fe4210.insert()
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:722)
Caused by: javax.el.MethodNotFoundException: Method not found: com.clients.controller.ClientsController@48fe4210.insert()
	at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:245)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:271)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:274)
	at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153)
	... 25 more

faces-config

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 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>clientsBean</managed-bean-name>
  <managed-bean-class>com.clients.ClientsBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <managed-bean>
  <managed-bean-name>clientsControll</managed-bean-name>
  <managed-bean-class>com.clients.controller.ClientsController</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
</faces-config>

NewClient.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="f"  uri="http://java.sun.com/jsf/core"%>
<%@ taglib prefix="h"  uri="http://java.sun.com/jsf/html"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Clientes</title>
</head>
<body>
<f:view>
	<h:form>
		<h:panelGrid columns="2">
			<h:outputLabel value="Nome do Cliente" />
			<h:inputText value="#{clientsBean.name}"/>
			<h:outputLabel value="Endereço" />
			<h:inputText value="#{clientsBean.adress}" />
			<h:outputLabel value="Telefone" />
			<h:inputText value="#{clientsBean.tel}" />
			<h:commandButton value="Cadastrar" actionListener="#{clientsControll.insert}" />
		</h:panelGrid>
	</h:form>
</f:view>
</body>
</html>

ClientsBean
Obs.: So geters and setter

package com.clients;



public class ClientsBean {
	
	private String name;
	private String adress;
	private String tel;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAdress() {
		return adress;
	}
	public void setAdress(String adress) {
		this.adress = adress;
	}
	public String getTel() {
		return tel;
	}
	public void setTel(String tel) {
		this.tel = tel;
	}	
}

ClientsController
Obs.: geters and setter e o fatidico metodo insert

package com.clients.controller;

import javax.faces.event.ActionEvent;
import com.clients.ClientsBean;
import com.clients.model.ClientsDB;

public class ClientsController {
	private ClientsBean Clients;
	
	public ClientsBean getClients() {
		return Clients;
	}

	public void setClients(ClientsBean clients) {
		Clients = clients;
	}
	
	public void insert() {
		try {
			ClientsDB.insert(this.getClients());
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	}
	
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>JSF-Test</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <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>*.jsf</url-pattern>
  </servlet-mapping>
  <context-param>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>
</web-app>

Não postei a classe de acesso a dados (nao estou usando nenhum ORM) pois a mesma esta funcionando pois ja usei em outro projetos…se alguem poder dar uma analisado fico grato, pois repito que apesar de ser um problema recorrente dos amigos aqui do forum pois chequei nas pesquisas antes de postar mas nenhuma solucao resolveu para o problema. Agradeço e obrigado

Qual jsf voce estah usando?

no seu method insert tenta usar essa assinatura

public void insert(javax.faces.event.ActionEvent event){
// alguma coisa
}

[quote=mauriciot.silva]Qual jsf voce estah usando?

no seu method insert tenta usar essa assinatura

[code]
public void insert(javax.faces.event.ActionEvent event){
// alguma coisa
}

[/code][/quote]

Entao kra, antes estava usando ActionEvent no metodo insert, todavia removi pois tinha lido que este metodo não receberia parametro, mas de todo jeito, estava levantando a mesma exceçao.

Estou usando o JSF 2.0 e meu container é o tomcat 7

[quote=rodrigues882009][quote=mauriciot.silva]Qual jsf voce estah usando?

no seu method insert tenta usar essa assinatura

[code]
public void insert(javax.faces.event.ActionEvent event){
// alguma coisa
}

[/code][/quote]

Entao kra, antes estava usando ActionEvent no metodo insert, todavia removi pois tinha lido que este metodo não receberia parametro, mas de todo jeito, estava levantando a mesma exceçao.

Estou usando o JSF 2.0 e meu container é o tomcat 7[/quote]

Po obrigado amigo, consegui resolver, antes levantava a mesma exceçao pois eu estava assinando que este metodo podia disparar uma exceçao, mudando a assinatura, logo de fato o metodo nao era achado, ao tratar a exceçao localmente o problema se resolveu…obrigado pela luz…

E ai beleza? Só uma coisa, já que está desenvolvendo em JSF 2.0 é recomendado utilizar facelets ao invés de JSP.

Po, vlw mesmo pela dica Douglas, tem algum material dessa especificação alem da oficial?

Po, vlw mesmo pela dica Douglas, tem algum material dessa especificação alem da oficial?[/quote]

Cara tem o livro Core Java Server Faces, 3ª edição, e tem o livro do Gilliard Cordeiro da editora Casa do Código, que aborda a integração do JSF 2.0 e JPA 2.0, o livro possui dicas para um bom uso das duas tecnologias, aumento de desempenho, um ótimo livro.

Agora para um material completo de JSF 2.0 é ler o livro Core Java Server Faces mesmo.

Bons estudos.

Amigo, estou começando estudar sobre JSF também. Na verdade, estou estudando o framework primefaces.

Essa classe Controller, que voce utilizou, como o jsp conseguiu comunicação com o java sem defini-lo @ManagedBean ?

Até agora, o unico jeito que consegui acessar foi através dessa anotação. Ali no código não vi definida.

Outra coisa, estudando sobre MVC (que por sinal quando achei que estava entendendo, aprendi isso do jsf… kkkkk), aprendi que no JSF e outros frameworks, quem faz o Controller do MVC é o proprio framework, que no caso, é o FacesServlet.

Caso quiser ler a explicação certinha, dê uma olhada nisso:

Então, na verdade, o seu Bean (Com metodos getters e setters) e essa sua classe Controller (que não é um controller), são apenas do Model.

Não sei se já viu mas o JSF possui alguns ciclos de vida. Eu não sabia, foi interessante para mim ler isso, embora tenha entendido apenas o contexto em geral, nada bem aprofundado ainda.

http://javafree.uol.com.br/artigo/878298/JSF-ciclo-de-vida.html

Abraços