2011-10-17 67 views
1

Spring相當新,所以我在這方面遇到了一些麻煩。我試圖在Spring中使用LDAP安全性。我可以使用我在webapp內部創建的屬性文件。但我想要做的是加載並讀取服務器的context.xml文件(它具有我需要的所有這些和其他應用程序的值)。使用Spring加載webserver context.xml

這是我有:

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="ignoreUnresolvablePlaceholders" value="true"/> 
    </bean> 
    <bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer"> 
     <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/> 
     <property name="searchContextAttributes" value="true"/> 
     <property name="contextOverride" value="true"/> 
     <property name="ignoreResourceNotFound" value="true"/> 
     <property name="locations"> 
      <list> 

       <value>/WEB-INF/properties/dataUploadProperties.properties</value> 
       <value>/WEB-INF/properties/globalProperties.properties</value> 
       <value>context.xml</value> 

      </list> 
     </property> 
    </bean> 

我能夠加載和讀取2頁屬性的文件,但context.xml中是找不到的。它是否需要成爲服務器上的絕對路徑?

感謝 克里斯

回答

0

因此,我建議的第一件事就是用Spring Security。它已經構建了LDAP支持。


but the context.xml is not found

通常這(直接讀取的context.xml)是不是你應該走的路。 相反,在context.xml中定義一些屬性和/或JNDI資源,然後在彈簧配置中使用它們。

例如:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:jee="http://www.springframework.org/schema/jee" 
     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/jee 
       http://www.springframework.org/schema/jee/spring-jee-3.0.xsd"> 

    <!-- access via jndi --> 
    <jee:jndi-lookup id="jndiEmailSession" 
     jndi-name="java:comp/env/email/session/myEmailSession" /> 

    <!-- direct access for properties required the SERVLET contect property 
     place older configurer, then it works like properties from normal 
     property files --> 
    <bean class="org.springframework.web.context.support.ServletContextPropertyPlaceholderConfigurer">  <property name="locations" value="classpath*:META-INF/spring/*.properties" /> </bean> 

    <bean class=Demo> 
     <property name="someString" value="${simpleValue}" /> 
    </bean> 
</beans> 

的context.xml:

<Resource name="email/session/myEmailSession" 
      type="javax.mail.Session" 
      auth="Container"       
    password="secret" 
    mail.debug="false" 
    mail.transport.protocol="smtp" 
    mail.smtp.auth="true" 
    mail.smtp.user="[email protected]" 
    mail.smtp.host="mail.example.com" 
    mail.smtp.from="[email protected]"/> 

<Parameter name="simpleValue" value="any" override="false" /> 
+0

我使用Spring Security的。我試圖從服務器context.xml文件中獲取LDAP的URL,因爲每個服務器都有不同的URL。謝謝 –

+0

@Chris Mattmiller:在這種情況下,您應該在context.xml中將LDAP連接定義爲jndi資源 – Ralph

+0

如果我使用它作爲jndi資源進行設置,則會出現此錯誤:第1行第1列出現詞法錯誤。 :「$」(36),之後:「」 –

相關問題