Я столкнулся с новой задачей - мне нужно адаптировать свои тесты JUnit, основанные на Tomcat JNDI для WildFly 9.
Прежде всего, у меня есть свойства JNDI для источников данных PG в tomcat conf / context.xml вТег ресурса.
Теперь я могу использовать его через tomcatJNDI следующим образом:
@Before
public void setUp() throws Exception {
String filename = "environment.properties";
Properties properties = new Properties();
InputStream input = this.getClass().getClassLoader().getResourceAsStream(filename);
properties.load(input);
String tomcat_context = properties.getProperty("tomcat.context");
TomcatJNDI tomcatJNDI = new TomcatJNDI();
tomcatJNDI.processContextXml(new File(tomcat_context));
tomcatJNDI.start();
System.setProperty("factory", org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory.class.getName());
GenericXmlApplicationContext context = new GenericXmlApplicationContext();
context.load("classpath:spconfig.xml");
context.refresh();
this.objectsDao = (ObjectsDao) context.getBean("ObjectsDao");
}
Он отлично работает для Tomcat, но мне нужно другое решение дляокружение wildfly.
Я пытался выполнить свой тест JUNIT с
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spconfig.xml"})
Но получил эту ошибку:
Caused by: javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
, после этого я пытался сделать jndi.свойства с
java.naming.factory.initial=org.springframework.jndi.JndiObjectFactoryBean
, но это также не работает.Так можно ли сделать одно решение для разных веб-серверов / поставщиков?!