简体   繁体   English

Spring Boot 2.0 JNDI属性值未从application-test属性文件加载

[英]Spring Boot 2.0 JNDI property values not loading from application-test property file

I am trying to run test cases and jndi properties configured in application-test.properties file 我正在尝试运行在application-test.properties文件中配置的测试用例和jndi属性

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { App.class }, webEnvironment = WebEnvironment.RANDOM_PORT)
@ContextConfiguration
@TestPropertySource("classpath:/application-test.properties")
public class CheckingServiceTest {

A configuration in the property file 属性文件中的配置

java.naming.factory.initial=org.jboss.naming.remote.client.InitialContextFactory
java.naming.provider.url=remote://xyz:4447,remote://xyz:4447
java.naming.security.principal=qaappmq
java.naming.security.credentials=xyz123
jms.username=qaappmq
jms.password=ixyz123
jboss.naming.client.ejb.context=true

In Xml configuration file 在Xml配置文件中

<bean id="JNDITemplate" class="org.springframework.jndi.JndiTemplate">
        <constructor-arg name="environment">
            <props>
                <prop key="java.naming.factory.initial">${java.naming.factory.initial}</prop>
                <prop key="java.naming.provider.url">${java.naming.provider.url}</prop>
                <prop key="java.naming.security.principal">${java.naming.security.principal}</prop>
                <prop key="java.naming.security.credentials">${java.naming.security.credentials}</prop>
                <prop key="jboss.naming.client.ejb.context">${jboss.naming.client.ejb.context}</prop>
            </props>
        </constructor-arg>
    </bean>

While running the test case it is throwing 在运行测试用例时,它正在投掷

Caused by: java.lang.ClassNotFoundException: ${java.naming.factory.initial}
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:72)
    at com.sun.naming.internal.VersionHelper12.loadClass(VersionHelper12.java:61)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:672)
    ... 92 common frames omitted

Tried directly putting static value in bean intialization it is working fine and even application is working fine with default configuration mentioned in application.properties. 尝试直接在bean初始化中放置静态值它工作正常甚至应用程序正常工作与application.properties中提到的默认配置。

Issue : Properties value is not intialized in XML configuration file 问题:属性值未在XML配置文件中初始化

尝试将TestPropertySource注释更改为:

@TestPropertySource(locations = "classpath:application-test.properties")

Add @ActiveProfiles("test") to your test class @ActiveProfiles("test")添加到您的测试类

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = { App.class }, webEnvironment = WebEnvironment.RANDOM_PORT)
@ContextConfiguration
@TestPropertySource("classpath:/application-test.properties")
@ActiveProfiles("test")
public class CheckingServiceTest {

Remove XML Configuration from Project and Try to create each bean annotation driven. 从Project中删除XML配置并尝试创建驱动的每个bean注释。

Assigned value each varible using @Value or create seperate class using 使用@Value为每个变量赋值,或者使用创建单独的类

 @Configuration
 public class TestConfiguration {

@Bean(name = "publishJNDITemplate")
public JndiTemplate publishJNDITemplate() {
    final Properties environment = new Properties();
    environment.put(Context.INITIAL_CONTEXT_FACTORY, factoryIntial);
    environment.put(Context.PROVIDER_URL, providerUrl);
    environment.put(Context.SECURITY_PRINCIPAL, securityPrincipal);
    environment.put(Context.SECURITY_CREDENTIALS, securityCredentials);
    environment.put(narfeedTopics, destination);
    return new JndiTemplate(environment);
}

} }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Spring Boot 2.1:未从 application-test.yml 加载属性 - Spring Boot 2.1 : Not loading property from application-test.yml Spring Boot:使用 Java Bean 类从 application.properties 文件中读取 spring.jms.jndi-name 属性 - Spring Boot: Reading spring.jms.jndi-name property from application.properties file using a Java Bean class 远程 JNDI + Spring Boot + WebLogic,如何从 application.property 指定上下文? - Remote JNDI + Spring Boot + WebLogic, How to specify the context from the application.property? 通过 spring boot 加载属性文件以映射 - Loading Property file to map via spring boot 从 Spring 引导 Cucumber 测试中的属性文件动态更改值 - Dynamically change value from a property file in Spring Boot Cucumber test Spring 中的单元测试启动多个属性值 - Unit Test in Spring Boot for multiple values of property spring boot中动态加载测试属性文件和服务属性文件 - dynamically load test property file and service property file in spring boot Spring Boot 2.0使用WAR打包外部化Tomcat中的属性文件 - Spring Boot 2.0 externalize property file in Tomcat using WAR packaging 在spring boot中加载war文件之外的属性文件 - loading of property file outside of war file in spring boot 在 JUnit 测试类中使用属性值而不加载整个 Spring 引导应用程序上下文 - Using property values in JUnit test classes without load whole Spring Boot application context
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM