Erro: Spring security + Hibernate + JSF

8 respostas
leootorres

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'

8 Respostas

D

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.

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

Tem coisa errada nesse arquivo

leootorres

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

WEB-INF\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>FinanceiroWebJsfCp4</display-name>
  
  	<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>
  
</web-app>
WEB-INF\applicationContext-security.xml
<?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">
	<http> 
		<intercept-url pattern="/admin/**" access="ROLE_ADMINISTRADOR" /> 
		<intercept-url pattern="/restrito/**" access="ROLE_USUARIO" />
		<form-login login-page="/publico/login.jsf" 
			always-use-default-target="true" 
			default-target-url="/restrito/principal.jsf"
			authentication-failure-url="/publico/login.jsf?login_error=1" />
		<logout/> 
		<remember-me /> 
	</http>

	<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>
WEB-INF\applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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">

	<bean id="financeiroDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
		<property name="jndiName">
			<value>java:comp/env/jdbc/FinanceiroDB</value>
		</property>
	</bean> 	
</beans>
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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC 
	"-//Hibernate/Hibernate Configuration DTD//EN"
	"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="connection.datasource">java:/comp/env/jdbc/FinanceiroDB</property>
		<property name="current_session_context_class">thread</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		
		<mapping class="financeiro.usuario.Usuario"/>
	</session-factory>
</hibernate-configuration>
leootorres

.

leonardoteles

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

igor_ks

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…

leonardoteles

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

leonardoteles

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:

Criado 13 de abril de 2011
Ultima resposta 25 de jan. de 2012
Respostas 8
Participantes 5