Erro Spring Security + Tomcat [RESOLVIDO]

5 respostas
N

Boa noite

Estou tentando fazer uma aplicação usando o Spring Security e esta dando o seguinte erro quando eu rodo a aplicação:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 31 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: Element type http must be followed by either attribute specifications, > or />.

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)

at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)

at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)

at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)

at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:465)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:395)

at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)

at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)

at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4681)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5184)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5179)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Caused by: org.xml.sax.SAXParseException: Element type http must be followed by either attribute specifications, > or />.

at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)

at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:174)

at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:388)

at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1414)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.seekCloseOfStartTag(XMLDocumentFragmentScannerImpl.java:1395)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:285)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)

at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)

at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)

at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)

 21 more

13/05/2011 22:25:47 org.apache.catalina.core.StandardContext startInternal

GRAVE: Error listenerStart

13/05/2011 22:25:47 org.apache.catalina.core.StandardContext startInternal

GRAVE: Context [/PrimeiraAplicacao_SpringSecurity3] startup failed due to previous errors


O meu código do applicationContext é o seguinte:

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

<b:beans xmlns=“http://www.springframework.org/schema/security
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance
xmlns:b=“http://www.springframework.org/schema/beans

xsi:schemaLocation="http://www.springframework.org/schema/beans
                       http://www.springframework.org/schema/beans/spring-beans.xsd
                       http://www.springframework.org/schema/security
                       http://www.springframework.org/schema/security/spring-security-3.0.xsd">
        
   
<http auto-config="true"access-denied-page="/negado.jsp">
    <intercept-url pattern="/admin/**"acess="ROLE_ADMIN"/>
    <intercept-url pattern="/paginas/**"acess="ROLE_USER"/>
    <form-login login-page="/login.jsp"authentication-failure-url="/login.jsp?error=invalido"/>  
</http>

<authentication-manager>
    <authentication-provider>
      <jdbc-user-service data-source-ref="dataSource"
      users-by-username-query="SELECT username, password, enable FROM usuarios WHERE username=?"
      authorities-by-username-query="SELECT username, authority FROM autorizacoes WHERE username=?"/>
    </authentication-provider>
</authentication-manager>

<b:bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <b:property name="url" value="jdbc:postgresql://localhost:5432/jm-springsecurity3"/>
    <b:property name="driverClassName" value="org.postgresql.Driver"/>
    <b:property name="username" vale="postgres"/>
    <b:property name="password" vale="postgres"/> 
</b:bean>

</b:beans>

Espero que alguém possa me ajudar. Aguardo Resposta.

5 Respostas

P

Aparentemente é apenas erro de digitação.

No intercept-url você colocou acess o certo é: access

Ou seja, seu código deve ficar assim:

<http auto-config="true" access-denied-page="/negado.jsp"> <intercept-url pattern="/admin/**" access="ROLE_ADMIN" /> <intercept-url pattern="/paginas/**" access="ROLE_USER" /> <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=invalido" /> </http>

N

portugassis:
Aparentemente é apenas erro de digitação.

No intercept-url você colocou acess o certo é: access

Ou seja, seu código deve ficar assim:

<http auto-config="true" access-denied-page="/negado.jsp"> <intercept-url pattern="/admin/**" access="ROLE_ADMIN" /> <intercept-url pattern="/paginas/**" access="ROLE_USER" /> <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=invalido" /> </http>

Portugassis

Fiz as alterações que você me passou acima e o problema que tava dando no resolveu…

Mas agora está dando o seguinte erro:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 5 in XML document from ServletContext resource [/WEB-INF/applicationContext.xml] is invalid; nested exception is org.xml.sax.SAXParseException: TargetNamespace.1: Expecting namespace <a href="http://www.springframework.org/schema/security">http://www.springframework.org/schema/security</a>, but the target namespace of the schema document is <a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>.

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:396)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)

at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)

at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)

at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:93)

at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:130)

at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:465)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:395)

at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)

at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)

at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)

at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4681)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5184)

at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5179)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Caused by: org.xml.sax.SAXParseException: TargetNamespace.1: Expecting namespace <a href="http://www.springframework.org/schema/security">http://www.springframework.org/schema/security</a>, but the target namespace of the schema document is <a href="http://www.springframework.org/schema/beans">http://www.springframework.org/schema/beans</a>.

at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)

at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)

at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)

at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:2537)

at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:2528)

at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.constructTrees(XSDHandler.java:768)

at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:569)

at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:552)

at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.findSchemaGrammar(XMLSchemaValidator.java:2437)

at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1782)

at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2755)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)

at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)

at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)

at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)

at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)

at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:235)

at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)

at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:75)

at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:388)

 21 more

14/05/2011 13:19:05 org.apache.catalina.core.StandardContext startInternal

GRAVE: Error listenerStart

14/05/2011 13:19:05 org.apache.catalina.core.StandardContext startInternal

GRAVE: Context [/PrimeiraAplicacao_SpringSecurity3] startup failed due to previous errors

Se você puder me ajudar novamente. Ficarei agradecido

P

Dessa vez eu não consegui identificar o erro, é estranho porque está acusando um erro em uma linha anterior ao erro que estava dando antes, a não ser que vc tenha alterado algo no xml, além do http, não sei o que está acontecendo. tente usar novamente o xml que estava usando antes, mudando apenas a parte do http, vc pode ter mudado algo sem querer.

Também estou começando a usar Sprint Security, caso seja sua primeira vez usando, recomendo alguns artigos que eu li para aprender tudo passo a passo.
Se quiser visite os seguintes links:

http://www.edsongoncalves.com.br/2010/04/25/segura...passo-com-spring-security-3-0/
http://www.edsongoncalves.com.br/2010/05/04/segura...ados-em-apenas-alguns-minutos/
(é um tutorial muito bom! Passo a passo, não tem como não funcionar seguindo isso ai)

e para complementar esse aqui: http://www.javasimples.com.br/spring-2/spring-security-3-deixando-sua-aplicacao-web-segura/

N

portugassis:
Dessa vez eu não consegui identificar o erro, é estranho porque está acusando um erro em uma linha anterior ao erro que estava dando antes, a não ser que vc tenha alterado algo no xml, além do http, não sei o que está acontecendo. tente usar novamente o xml que estava usando antes, mudando apenas a parte do http, vc pode ter mudado algo sem querer.

Também estou começando a usar Sprint Security, caso seja sua primeira vez usando, recomendo alguns artigos que eu li para aprender tudo passo a passo.
Se quiser visite os seguintes links:

http://www.edsongoncalves.com.br/2010/04/25/segura...passo-com-spring-security-3-0/
http://www.edsongoncalves.com.br/2010/05/04/segura...ados-em-apenas-alguns-minutos/
(é um tutorial muito bom! Passo a passo, não tem como não funcionar seguindo isso ai)

e para complementar esse aqui: http://www.javasimples.com.br/spring-2/spring-security-3-deixando-sua-aplicacao-web-segura/

Portugassis

Valew pelas dicas, mas eu mexi um pouco aqui e funcionou…
Obrigado

S

Tive o mesmo erro. A solução foi esquisita. Eu removi todo o conteúdo do arquivo xml de configuração, salvei o projeto e depois dei um clean. Depois, adicionei novamente as configuração no arquivo xml, salvei o projeto e rodei. Bingo. Voltou a funcionar. Parece que o eclipse se perde e fica com referências inválidas. Agora eu sempre dou um clean no projeto quando altero algum arquivo de configuração. Nunca mais tive este erro.

Criado 13 de maio de 2011
Ultima resposta 10 de out. de 2011
Respostas 5
Participantes 3