Erro: Spring security + Hibernate + JSF

Bom dia pessoal, estou estudando JSF a partir de um livro chamado “Programando Java para Web” livro muito bom, recomendo a todos que se interessam no assunto.
Até o capítulo 5 ele ensina como configurar, e desenvolver a parte de criação, alteração, exclusao de usuário utilizando hibernate e JSF. até aqui blz, funcionou certinho.
No capítulo 6 ele ensina como implementar o controle de acessos utilizando o Spring Security para garantir a autenticação e autorização de usuários para que acessem somente o conteudo para qual receba permissao.

Já tentei de tudoo… alguem pode me ajudar pleasee. gostaria muito de continuar os estudos no livro, mais estou dependendo de conseguir descobrir esse erro.

Agradeço a todos pela ajuda.

abaixo o projeto:
http://www.megaupload.com/?d=HIGSPFEQ

que está apresentando o seguinte erro:

na página: The requested resource () is not available.

SEVERE: End event threw exception java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:928) at org.apache.catalina.startup.SetNextNamingRule.end(SetNextNamingRule.java:98) at org.apache.tomcat.util.digester.Rule.end(Rule.java:229) at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1138) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1642) at org.apache.catalina.startup.ContextConfig.applicationWebConfig(ContextConfig.java:365) at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1076) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4611) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) at org.apache.catalina.core.StandardService.start(StandardService.java:525) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) Caused by: java.lang.NullPointerException at java.util.Hashtable.put(Unknown Source) at org.apache.catalina.deploy.NamingResources.addResource(NamingResources.java:298) ... 37 more Apr 13, 2011 10:11:37 AM org.apache.catalina.startup.ContextConfig applicationWebConfig SEVERE: Parse error in application web.xml file at jndi:/localhost/FinanceiroWebJSFCp6/WEB-INF/web.xml java.lang.NullPointerException at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2806) at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:2832) at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1141) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1642) at org.apache.catalina.startup.ContextConfig.applicationWebConfig(ContextConfig.java:365) at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1076) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4611) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardHost.start(StandardHost.java:840) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) at org.apache.catalina.core.StandardService.start(StandardService.java:525) at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) at org.apache.catalina.startup.Catalina.start(Catalina.java:595) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) Caused by: java.lang.NullPointerException at java.util.Hashtable.put(Unknown Source) at org.apache.catalina.deploy.NamingResources.addResource(NamingResources.java:298) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:928) at org.apache.catalina.startup.SetNextNamingRule.end(SetNextNamingRule.java:98) at org.apache.tomcat.util.digester.Rule.end(Rule.java:229) at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1138) ... 29 more Apr 13, 2011 10:11:37 AM org.apache.catalina.startup.ContextConfig applicationWebConfig SEVERE: Occurred at line 29 column 17 Apr 13, 2011 10:11:37 AM org.apache.catalina.startup.ContextConfig start SEVERE: Marking this application unavailable due to previous error(s) Apr 13, 2011 10:11:37 AM org.apache.catalina.core.StandardContext start SEVERE: Error getConfigured Apr 13, 2011 10:11:37 AM org.apache.catalina.core.StandardContext start SEVERE: Context [/FinanceiroWebJSFCp6] startup failed due to previous errors Apr 13, 2011 10:11:37 AM org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc SEVERE: The web application [/FinanceiroWebJSFCp6] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. Apr 13, 2011 10:11:37 AM com.sun.faces.config.ConfigureListener contextInitialized INFO: Initializing Mojarra 2.1.0 (FCS FCS) for context '/FinanceiroWebJSFCp5'

Posta seus arquivos de configuração:web.xml e os arquivos de configuração do Spring por favor, mas imagino que este problema seja falta de alguma lib.

SEVERE: Parse error in application web.xml file at jndi:/localhost/FinanceiroWebJSFCp6/WEB-INF/web.xml  

Tem coisa errada nesse arquivo

Aqui estão os arquivos de configuração:
E desde já agradeço a atenção de todos!

WEB-INF\web.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

FinanceiroWebJsfCp4

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

<filter>
	<filter-name>conexaoFiter</filter-name>
	<filter-class>financeiro.web.filter.ConexaoHibernateFilter</filter-class>
</filter>
<filter-mapping>
	<filter-name>conexaoFiter</filter-name>
	<url-pattern>*.jsf</url-pattern>
</filter-mapping>

<!-- Avisa para o Tomcat que o DataSource JNDI está disponivel -->
<resource-ref>
	<description>DataSource FinanceiroBD</description>
	<res-ref-name>jdbc/FinanceiroDB</res-ref-name>
	<res-auth>Container</res-auth>
</resource-ref>

<!-- Spring Security -->
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>
	/WEB-INF/applicationContext.xml
	/WEB-INF/applicationContext-security.xml
</param-value>
</context-param>
<filter>
	<filter-name>springSecurityFilterChain</filter-name>
	<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
	<filter-name>springSecurityFilterChain</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
	<param-name>com.sun.faces.expressionFactory</param-name>
	<param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>

<welcome-file-list>
	<welcome-file>index.html</welcome-file>
	<welcome-file>index.htm</welcome-file>
	<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

[/code]

WEB-INF\applicationContext-security.xml

[code]<?xml version="1.0" encoding="UTF-8"?>
<b:beans xmlns=“http://www.springframework.org/schema/security
xmlns:b=“http://www.springframework.org/schema/beans
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd">






<authentication-manager>
	<authentication-provider> 
		<jdbc-user-service data-source-ref="financeiroDataSource" 
			authorities-by-username-query="SELECT u.login, p.permissao 
										 FROM usuario u, usuario_permissao p 
										WHERE u.codigo = p.usuario 
										  AND u.login = ?"
			users-by-username-query="SELECT login, senha, ativo FROM usuario WHERE login = ?" />
	</authentication-provider>
</authentication-manager>

</b:beans>
[/code]

WEB-INF\applicationContext.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

<bean id="financeiroDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
	<property name="jndiName">
		<value>java:comp/env/jdbc/FinanceiroDB</value>
	</property>
</bean> 	
[/code]

META-INF\context.xml

<?xml version="1.0" encoding="UTF-8"?> <Context reloadable="true"> <Resource name="jdbc/FinanceiroDB" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="estudo" password="estudo" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/financeiro?autoReconnect=true"/> </Context>

hibernate.cfg.xml

[code]<?xml version="1.0" encoding="UTF-8"?>

org.hibernate.dialect.MySQLDialect java:/comp/env/jdbc/FinanceiroDB thread update
	<mapping class="financeiro.usuario.Usuario"/>
</session-factory>
[/code]

.

Opa. Perguntei em um outro tópico que vc tbm entrou. Conseguiu sair deste capítulo?..estou desesperado!!!

Cuidado pra nao ficar mto preso a implementacao dos livros e tutoriais, ao ponto de nao conseguir aprender o que esta sendo feito, apenas digitar o que foi escrito no tutorial…

tente entender o que está sendo feito, quais os processos que estao sendo executados, ao inves de ficar pensando “Sera que o livro está errado? Será que copiei algo errado? Poxa, o livro faz coisas erradas”

Parece que esta acontecendo isso com vcs, e ao inves de tentar entender os conceitos, estao procurando outras pessoas que passaram pela mesma situacao, pra saber como que eles resolveram este caso. Se vcs pegarem o codigo pronto de alguem com isso corrigido, vai ser a mesma coisa que “copiar o que estava faltando do livro”

Apenas uma dica…

Sua dica é válida e totalmente pertinente. Obrigado!

Pessoal, consegui sair do capítulo…e não fiz nada demais!

1º - Retirei todos os JAR’s da aplicação e recoloquei, atualizando o que tinha que atualizar…só no Spring Security que coloquei o 3.0.5…não sei se faz sentido mas como o facelets-taglib só vai até essa versão no site do repositório, resolvi deixar o SS da mesma versão pra ver qual é!!..e funfou aqui!

2º - A dica do Cristiano funcionou perfeitamente aqui. O “Bad Credencials” parou de acontecer quando retireia linha do algoritmo de criptografia da aplicação. Não testei ainda zerar a base, recolocar o MD5 de volta e depois cadastrar um usuário, assim que eu tiver mais tempo faço isso. Meu prazo pra entrega do sistema acaba dia 31…tô na m@#$da…

3º - Estou utilizando dois bancos ao mesmo tempo pra testar a aplicação. O MySQL é o padrão de todo desenvolvedor caseiro, mas como aqui só se usa Oracle, apanhei um pouquinho agora no final pra descobrir um erro que me aconteceu na hora de gerar a tabela de permissões pelo HIbernate. Um consultor aqui da empresa me socorreu nessa. O Oracle não aceita o “?autoReconnect=true”…estava dando erro direto pra criar a tabela. Quando ele viu isso e retirou, pq achou estranho esse código, retestei e funfou na moral…

Bom, agora vamos que vamos pq o tempo não pára, como dizia o poeta Cazuza…capítulo 7, aí vou eu…

Galera, qualquer coisa é só me mandar e-mail, blz?..estou a disposição pra tentar ajudar no que for preciso. No GUJ tbm é fácil de me localizar…eu postei algumas coisas lá sobre essas dúvidas do livro.

Abração!!! :smiley: