2011-12-07 32 views
1

我想將Spring Security添加到我的Jersey Webapp。我想(在web.xml中2個獨立文件的contextConfigLocation)使用以下作爲除了與我現有的applicationContext.xml我的安全context.xml文件:用Jersey試用Spring Security我的security-context.xml文件有什麼問題?

http://snipt.org/OIh

根據此處提供瞭解決方案:User authentication on a Jersey REST service

但是在起tomcat ......我得到以下錯誤:

嚴重:異常發送上下文初始化事件監聽器類org.springframework.web.context.ContextLoaderListener org.springframework.beans的實例。 factory.xml.XmlBeanDefinitionStoreException:來自ServletContext資源的XML文檔中的第11行[/META-INF/securityContext.xml]無效;嵌套異常是org.xml.sax.SAXParseException:cvc-complex-type.2.4.c:匹配的通配符是嚴格的,但是對於元素'security:global-method-security'沒有聲明。

有人可以幫助我什麼是錯的?

+0

使用的是什麼版本的spring security? –

回答

1

您使用過:Spring Security 2命名空間,但元素'security:global-method-security'是spring security 3的一個特性。

如果您使用Spring Security 3(需要Spring 3),那麼更新兩個名稱空間,一個用於Spring(您使用Spring 2.5名稱空間)和Spring Security名稱空間。

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:security="http://www.springframework.org/schema/security" 
    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.4.xsd 
     http://www.springframework.org/schema/util 
      http://www.springframework.org/schema/util/spring-util.xsd"> 

如果你真的必須使用spring security 2.0,那麼你不能使用元素'security:global-method-security`。在這種情況下,您必須顯式編寫隱藏在該標記之間的bean配置。 (但不幸的是,這是很多bean,並且包名從2.0版改爲3.0版,所以我不能提供一個工作示例。)

+0

我已經按照你所描述的修改了securityContext.xml文件,但仍然收到相同的錯誤。我目前使用3.0.5 RELEASE罐子。 – Rolando

+0

@Teiviere:我非常懷疑你使用Spring Security 3!例如,廢棄的類'HttpSessionContextIntegrationFilter'在包org.springframework.security.context中不再抗拒,它被移到Spring Security 3中的'org.springframework.security.web.context'。 – Ralph

+0

有沒有更好的例子一個security-context.xml文件,我可以使用它來獲得基本的spring安全性,這個安全性可以通過applicationContext.xml來補充,它不包含任何Spring安全性。 – Rolando