最近用到JNDI,并且在spring中进行配置,可是由于各种条件限制,需要在测试各种资料后发现想要在spring中实现并不太容易,参考网上的资料总结出两种方式,为自己做备份,也为他人做参考,少走弯路:
1. 通过InitialContext,context.lookup("test")实现,缺点不能代码全部自己写,几乎不能用spring
String[] paths = {"conf/testJNDI.xml" };//testJNDI.xml参考文章后边
ClassPathXmlApplicationContext app =new ClassPathXmlApplicationContext(paths);
DataSource testDs =(DataSource) app.getBean("testDs1");
SimpleNamingContextBuilder builder =new SimpleNamingContextBuilder();
builder.bind("test1", testDs);
try {
builder.activate();
} catch (NamingException e) {
e.printStackTrace();
}
JSONObject reqJson = new JSONObject();
Long startDate = System.currentTimeMillis();
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("test");
NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(ds);
BaseDAOImpl baseDao = new BaseDAOImpl();
baseDao.setNameJdbcTemplate(namedParameterJdbcTemplate);
List<Map<String, Object>> tradeList = baseDao.querySql("select * from trade");
2. 与spring完美结合,但是配置文件DataSource和spring相关配置分开写,配置文件参考文章最后
String[] paths = {"conf/testJNDI.xml" };
ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext(paths);
DataSource testDs1 =(DataSource) app.getBean("testDs1");
SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
builder.bind("test1", testDs1);
try {
builder.activate();
} catch (NamingException e) {
e.printStackTrace();
}
String[] servicePath = {"conf/testSpring.xml" };
ClassPathXmlApplicationContext testContext = new ClassPathXmlApplicationContext(servicePath);
Long startDate = System.currentTimeMillis();
TradeInfo tradeInfo = (TradeInfo)testContext.getBean("tradeInfo");
try {
Map map = tradeInfo.getMainTradeInfo("1115031212567112");
System.out.println(System.currentTimeMillis() - startDate);
logger.debug("================>"+map.toString());
} catch (Exception e) {
e.printStackTrace();
}
附:testJNDI.xml
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:ds.properties</value>
</list>
</property>
</bean>
<bean id="abstractDS" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>oracle.jdbc.OracleDriver</value>
</property>
<property name="maxActive"><value>${maxActive}</value></property>
<property name="maxIdle"><value>${maxIdle}</value></property>
<property name="minIdle"><value>${minIdle}</value></property>
<property name="initialSize"><value>${initialSize}</value></property>
</bean>
<bean id="testDs1" parent="abstractDS">
<property name="url">
<value>your database url</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>test</value>
</property>
</bean>
testSpring.xml
<bean id="dao" class="com.db.dao.impl.BaseDAOImpl">
<property name="nameJdbcTemplate">
<ref bean="nameJdbcTemplate"/>
</property>
</bean>
<bean id="nameJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
<constructor-arg>
<ref bean="testDataSource" />
</constructor-arg>
</bean>
<bean id="testDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>test1</value> <!-- 代码中对应的字符 builder.bind("test1", testDs1);-->
</property>
</bean>
分享到:
相关推荐
这些示例可能涵盖了如何创建消息生产者和消费者,如何配置ActiveMQ连接工厂,以及如何编写测试用例来验证消息传递的正确性。 总的来说,Spring与JMS和ActiveMQ的结合,为企业级应用提供了可靠且可扩展的消息传递...
- **测试类**:可能包含了一些测试用例,用于验证ejb和Spring的协同工作是否正常。 **总结** ejb与Spring的集成是一个常见的技术实践,它结合了ejb的强大功能和Spring的灵活性,使得企业级应用的开发更加高效和...
2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在Spring中装配DAO 2.4 业务层 2.4.1 UserService 2.4.2 在Spring中装配Service 2.4.3 单元测试 2.5 展现层 ...
8. **单元测试和集成测试**:为了保证系统的稳定性和正确性,开发者需要编写测试用例,利用JUnit或Mockito等工具进行单元测试,验证单个功能的正确性;而集成测试则是检查各个模块间的协同工作。 9. **版本控制系统...
2. **配置Spring**:在Spring的配置文件中,定义JmsTemplate,指定ActiveMQ的ConnectionFactory,这通常是通过JNDI查找完成的。同时,可以配置MessageListenerContainer,它将负责监听消息并调用我们定义的消息监听...
5. 数据源配置:配置数据库连接信息,如JNDI数据源或直接在Spring配置文件中定义DataSource。 6. Mapper配置:为每个DAO接口创建对应的Mapper XML文件,编写SQL语句,并在接口上使用@Mapper注解。 7. Service层:...
8. **Spring Test**:提供了对单元测试和集成测试的支持,可以帮助开发者编写和执行测试用例。 9. **Spring Aspects**:包含了对AspectJ的集成,用于更高级的AOP需求。 在实际开发中,你会看到如`spring-context`,...
7. **整合测试**:编写JUnit测试用例,确保Spring和Hibernate的整合工作正常。使用`@Transactional`注解开启事务,`@Autowired`注入SessionFactory或HibernateTemplate。 8. **事务管理策略**:了解并选择适合的...
在Spring的配置文件中,我们需要配置数据源(如JNDI数据源或直接配置连接池),并创建SessionFactory bean,指定Hibernate配置文件的位置。 9. **编写业务逻辑和DAO** 创建业务接口和实现类,以及对应的Hibernate...
4. **测试事务**:编写测试用例,验证事务的正确性。例如,当一个事务中的操作发生异常时,所有更改应被回滚。 通过上述配置,Ibatis与Spring的整合可以带来更高效的数据库操作,而WebLogic的JTA事务管理则保证了在...
2.2.3 类包及Spring配置文件规划 2.3 持久层 2.3.1 建立领域对象 2.3.2 UserDao 2.3.3 LoginLogDao 2.3.4 在Spring中装配DAO 2.4 业务层 2.4.1 UserService 2.4.2 在Spring中装配Service 2.4.3 单元测试 2.5 展现层 ...
6. **测试与监控**:最后,别忘了编写测试用例来验证多数据源配置的正确性,并使用监控工具(如Spring Actuator)监控数据源的使用情况,确保系统的稳定运行。 综上所述,"cxf多数据源配置"是一个涉及CXF、Spring和...
Spring提供了一系列工具和注解,如`@RunWith(SpringRunner.class)`、`@SpringBootTest`等,支持开发者编写集成测试用例,确保应用在不同环境下的一致性和稳定性。 ### 总结 Spring 2.5.2版本的中文帮助文档是一个...
测试时,需要了解如何配置和使用Spring测试框架,如Spring Test和Mockito。 7. **Ajax**:Asynchronous JavaScript and XML,用于创建异步Web应用,提升用户体验。测试Ajax请求需要掌握相关工具,如Chrome开发者...
7. **测试与运行**:编写测试用例确保配置正确,然后启动应用服务器,如Tomcat或Jetty,运行项目。 在数据库方面,SSM框架中的MyBatis允许开发者通过编写SQL语句来操作数据库,同时提供了一种灵活的映射机制,将SQL...
10. **集成测试**:Spring Test 模块提供对 Spring JPA 的支持,简化了数据库测试,可以使用 @Transactional 测试注解来确保每个测试用例都在独立的事务中运行,测试结束后自动回滚。 标签 "源码" 和 "工具" 暗示...
总结来说,Spring与ActiveMQ的结合为Java应用提供了强大的消息处理能力,通过简单的配置和API调用即可实现复杂的消息通信需求。在实际开发中,我们应充分利用Spring JMS模块的便利性和ActiveMQ的高性能特性,确保...
- **JUnit测试**:JUnit是Java单元测试的标准框架,用于编写和执行测试用例,确保代码的质量和稳定性。 - **JSON**:JavaScript Object Notation,是一种轻量级的数据交换格式,常用于前后端之间的数据传输。 - **C3...
虽然具体的代码实现没有给出,但根据提供的文件名 "example",我们可以推测这个压缩包可能包含了一个简单的 JAX-WS Web 服务项目,其中包括源代码、配置文件、测试用例等。通过分析和运行这个示例,开发者可以深入...
模板使用 ,测试用例使用Junit 。 此外,我在该项目中添加了用法示例。 将Spring Form Elements与JSP页面和MVC概念结合使用的最佳实践。 具有服务层和控制器对象的Spring MVC模式。 在带有Hibernate的MySql上...