Загрузить веб-сервер context.xml использование пружины

#spring

#spring

Вопрос:

Довольно новичок в Spring, поэтому у меня возникли некоторые проблемы с этим. Я пытаюсь использовать безопасность LDAP с помощью Spring. Я могу использовать файл свойств, который я создал внутри самого веб-приложения. Но то, что я хотел бы сделать, это загрузить и прочитать 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 не найден. Должен ли это быть абсолютный путь на сервере?

Спасибо, Крис

Ответ №1:

Итак, первое, что я бы порекомендовал, это использовать Spring Security. В нем уже встроена поддержка LDAP.


но context.xml не найден

Обычно это ( context.xml прямое чтение) не тот путь, по которому вам следует идти. Вместо этого определите некоторые свойства и / или ресурсы JNDI в context.xml , а затем используйте их в конфигурации spring.

Например:

 <?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="test@example.com"
    mail.smtp.host="mail.example.com"
    mail.smtp.from="test@example.com"/>

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

Комментарии:

1. Я использую Spring Security. Я пытаюсь получить URL-адрес для LDAP с серверов context.xml файл, поскольку каждый сервер имеет свой URL-адрес. Спасибо

2. @Chris Mattmiller: в этом случае вы должны определить LDAP-соединение в context.xml в качестве источника ресурсов jndi

3. Если я использую его в качестве ресурса jndi, я получаю эту ошибку: лексическая ошибка в строке 1, столбец 1. Встречается: «$» (36), после: «»