tutorial services mvc framework example espaƱol ejemplo spring spring-security

services - No se puede ubicar Spring NamespaceHandler para el espacio de nombres del esquema XML



spring ws example (3)

En mi caso, esto fue causado por entradas de manifiesto personalizadas agregadas por maven-jar-plugin.

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <configuration> <archive> <index>true</index> <manifest> <addClasspath>true</addClasspath> </manifest> <manifestEntries> <git>${buildNumber}</git> <build-time>${timestamp}</build-time> </manifestEntries> </archive> </configuration> </plugin>

Al eliminar las siguientes entradas se corrigió el problema

<index>true</index> <manifest> <addClasspath>true</addClasspath> </manifest>

Estoy desarrollando mi primera aplicación en seguridad de primavera. Mi archivo applicationContext-security.xml se ve así:

<?xml version="1.0" encoding="UTF-8"?> <!-- - Namespace-based OpenID configuration --> <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="/**" access="ROLE_USER"/> <intercept-url pattern="/index.xhtml*" filters="none"/> <logout/> <openid-login login-page="/index.xhtml" authentication-failure-url="/index.xhtml?login_error=true"> <attribute-exchange> <openid-attribute name="email" type="http://schema.openid.net/contact/email" required="true" count="2"/> <openid-attribute name="name" type="http://schema.openid.net/namePerson/friendly" /> </attribute-exchange> </openid-login> <remember-me token-repository-ref="tokenRepo"/> </http> <b:bean id="tokenRepo" class="org.springframework.security.web.authentication.rememberme.InMemoryTokenRepositoryImpl" /> <authentication-manager alias="authenticationManager"/> <user-service id="userService"> <user name="http://user.myopenid.com/" authorities="ROLE_SUPERVISOR,ROLE_USER" /> </user-service> </b:beans>

y el archivo Web.xml es:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> <display-name>Spring Security OpenID Demo Application</display-name> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/applicationContext-security.xml </param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <context-param> <param-name>webAppRootKey</param-name> <param-value>openid.root</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> <listener> <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> </listener> <welcome-file-list> <welcome-file>faces/index.xhtml</welcome-file> </welcome-file-list> </web-app>

Clean and Build de la aplicación es exitosa, pero cuando trato de implementar la aplicación jetty 7 me da el siguiente error:

SEVERO: Falló la inicialización del contexto
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Problema de configuración: no se puede ubicar Spring NamespaceHandler para el espacio de nombres del esquema XML [ http://www.springframework.org/schema/security]
Recurso ofensivo: recurso ServletContext [/WEB-INF/applicationContext-security.xml]
en org.springframework.beans.factory.parsing.FailFastProblemReporter.error (FailFastProblemReporter.java:68)
en org.springframework.beans.factory.parsing.ReaderContext.error (ReaderContext.java:85)
en org.springframework.beans.factory.parsing.ReaderContext.error (ReaderContext.java:80)

Intenté todo, pero no puedo resolver este error. Cualquier ayuda sería apreciada.

EDITAR intenté la versión 3.0.2 añadida de Spring-Security y obtuve esto:

Error en la inicialización del contexto
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: la línea 13 en el documento XML del recurso ServletContext [/WEB-INF/applicationContext-security.xml] no es válida;
la excepción anidada es org.xml.sax.SAXParseException; lineNumber: 13; columnNumber: 11; cvc-complex-type.2.4.c: el comodín coincidente es estricto, pero no se puede encontrar ninguna declaración para el elemento ''http''. en org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions (XmlBeanDefinitionReader.java:396)
en org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions (XmlBeanDefinitionReader.java:334


Necesitas un spring-security-config.jar en tu classpath.

La excepción significa que la security: xml namescape no puede ser manejada por los "analizadores sintácticos" de Spring. Son implementaciones de la interfaz NamespaceHandler , por lo que necesita un controlador que sepa cómo procesar <security: tags. Ese es el SecurityNamespaceHandler ubicado en spring-security-config