#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), после: «»