概括
我们有一个中央 LDAP 服务器,我们部署的 Java Web 应用程序应该连接到该服务器。我们的 JUnit 测试依赖于 LDAP 存储库中的特定数据,因此它们需要连接到嵌入式 ApacheDS LDAP 服务器,并以示例数据集为基础。当我们部署我们的 webapp 时,我们如何确保 ApacheDS 服务器不会启动?
细节
我们正在使用 Spring 安全性,并在 ldap-context.xml 中有以下行来启动嵌入式 LDAP 服务器:
<security:ldap-server root="dc=test,dc=com" port="33389" ldif="classpath:EmbeddedServerRoot.ldif" />
目前,我们的 web.xml 引用了这个测试上下文文件和我们的顶级 application-context.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:ldap-context.xml
classpath:application-context.xml
</param-value>
</context-param>
我们需要确保在运行 JUnit 测试以及直接从 eclipse(通过 WTP)运行 webapp 时包含 ldap-context.xml,但在打包 war 并将其部署到服务器时排除。
我们使用 maven 作为构建工具。我们可以很容易地为我们的 JUnit 测试处理这种情况,方法是确保它们在上下文配置中包含两个 spring 上下文文件:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:ldap-context.xml", "classpath:application-context.xml" })
public class TestStuff {
}
然后,我们的 web.xml 将只包含 application-context.xml,除了一件事——从 WTP 运行时这不起作用——在这种情况下我们也需要启动嵌入式服务器。有什么建议么?