-
Spring jndi 注入 datasourse 为什么总是不正确5
刚开始学Spring 和jndi,按照网上的配置写的代码如下,但是总是不能输出需要的代码 ,但是 使用 ds = (DataSource) ctx.lookup("jdbc/zxdy"); 的方法能够正确获取数据源 ,请各位帮我分析一下,多多指点,不胜感激!
第一步 context的配置文件为
<Context>
<Resource
driverClassName="com.mysql.jdbc.Driver"
name="jdbc/zxdy"
auth="Container"
type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="root" password="123456"
url="jdbc:mysql://localhost:3306/zxdy"/>
</Context>
第二步 applicationcontext.xml
<beans default-autowire="byName"
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">
<!--通过JNDI获得数据源的引用-->
<bean id="zxdyDataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/zxdy</value>
</property>
</bean>
<!-- 配置JdbcTemplate的bean -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource">
<ref local="zxdyDataSource"/>
</property>
</bean>
<!-- 配置DBUtil的bean 并注入资源-->
<bean id="DBUtil" class="com.DBUtil">
<property name="jt">
<ref local="jdbcTemplate"/>
</property>
<property name="ds">
<ref local="zxdyDataSource"/>
</property>
</bean>
<bean id="com.doAction" class="com.doAction" >
<property name="dbu">
<ref local="DBUtil"/>
</property>
</bean>
</beans>
第三个 数据库操作类 DBUtil
public class DBUtil{
//private static final Logger log = Logger.getLogger(ConnectionFactory.class);
private JdbcTemplate jt; //声明JdbcTemplate对象引用
private List rl = null; //声明List对象引用
private String sql = null; //声明SQL字符串引用
private DataSource ds; //声明DataSource引用
public void setJt(JdbcTemplate jt){ //jt成员的setter方法
this.jt = jt;
//设置jt属性的值
}
public JdbcTemplate getJt(){ //jt成员的setter方法
return jt;
//设置jt属性的值
}
public void setDs(DataSource ds){
this.ds=ds;
}
public DataSource getDs(){
return ds;
}
public String getStringInfo(String sql){
String info = null; //声明返回字符串引用
try{
sql = new String(sql.getBytes(),"iso8859-1"); //对SQL语句转码
info = (String)jt.queryForObject(sql,String.class); //执行查询
info = new String(info.getBytes("iso8859-1"),"gbk");//对查询的字符串转码
}
catch(Exception e){
info = null; //有异常发生则info置为null
}
return info; //返回查询结果
}
}
第四个文件 action类
public class doAction extends ActionSupport{
protected DBUtil dbu;
private String title; //某一提问的标题
public void setDbu(DBUtil dbu){
this.dbu = dbu; //dbu的setter方法
}
public String getTitle(){
System.out.println("返回title的时候"+title);
return title;
}
@Override
public String execute()throws Exception{
String sql=null; //查看详情
sql = "select TTitle from DY_Topic where TID='6'";
try{
System.out.println(sql);
System.out.println(dbu.toString());
title = dbu.getStringInfo(sql); //执行搜索得到提问标题
System.out.println("SQL查询后给title的赋值"+title);
} catch (Exception e) {
System.out.println(e.getMessage());
}
/**/
/* 使用红色代码可以输出需要的数据
try {
DataSource ds = null;
Context initCtx = new InitialContext();
if (initCtx == null)
throw
new Exception("Initial Failed!");
Context ctx = (Context) initCtx.lookup("java:comp/env");
if (ctx != null)
ds = (DataSource) ctx.lookup("jdbc/zxdy");
if (ds == null)
throw new Exception("Look up DataSource Failed");
java.sql.Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while (rs.next()){
title=rs.getString(1);
System.out.println("SQL查询后给title的赋值"+title);
}
rs.close();
stmt.close();
conn.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
*/
return SUCCESS;
}
}
2014年12月24日 16:19
目前还没有答案
相关推荐
NULL 博文链接:https://zzy603.iteye.com/blog/1039826
然而,有时我们可能希望在非Web环境下或不使用JNDI的情况下配置数据源,这时我们需要在Spring的配置文件中等价地实现JNDI的数据源配置。以下是如何在Spring中进行这种转换的详细步骤和知识点: 1. **理解JNDI配置**...
在深入探讨JNDI注入与Java反序列化漏洞之前,我们需要对几个关键概念有所了解,这包括Java远程方法调用(RMI)、Java名称目录接口(JNDI)、Java远程消息交换协议(JRMP)、以及序列化和反序列化。 RMI是Java环境中...
本项目为JNDI注入利用工具,生成JNDI连接并启动初始化相关服务,可用于Fastjson,Jackson等相关突破的验证。 本项目是基于welk1n的 ,在此项目的基础服务框架上,重新编写了攻击利用代码,支持更多更强大的功能,并...
### Spring 获取 WebLogic JNDI 数据源的两种方式 在Spring框架中,通过JNDI(Java Naming and Directory Interface)可以方便地访问WebLogic服务器中的数据源。这为应用程序提供了高度解耦的数据访问机制,使得...
这里,`jndiName`属性设置为我们在服务器配置中的`name`属性值,即`jdbc/MyDataSource`。 3. **使用数据源**:现在,我们可以在Spring的应用上下文中通过`@Autowired`注解或者通过`ApplicationContext`获取到数据源...
**Spring LDAP与JNDI:增删改查详解** 在Java开发中,当我们需要与目录服务进行交互,例如用户认证、权限管理等,Spring LDAP和Java Naming and Directory Interface (JNDI)是两个常用的技术。本文将通过一个入门级...
**JNDI注入详解** Java Naming and Directory Interface (JNDI) 是Java应用程序用来查找和管理网络资源的接口。它不依赖于特定的目录服务,而是通过服务提供者接口(SPI)来支持多种不同的目录服务,如LDAP、DNS等...
- 为了测试JNDI配置是否正确,你可以尝试从Spring应用上下文中获取数据源并打印其信息,确保能成功查找并实例化。 6. **扩展性与最佳实践**: - 考虑使用Spring Boot,它提供了更简洁的方式来配置JNDI数据源,只...
Spring jndi 数据源配置方法详解 Spring jndi 数据源配置是指在 Spring 框架中使用 JNDI(Java Naming and Directory Interface)来配置数据源的方法。JNDI 是一个 Java API,用于访问命名和目录服务。通过使用 ...
### Spring + JOTM 多数据源事务管理详解(三):JNDI + Tomcat 在本篇文章中,我们将深入探讨如何利用Spring框架结合JOTM(Java Open Transaction Manager)来实现多数据源下的分布式事务管理。我们将通过具体实例...
一款用于 JNDI注入利用的工具,大量参考/引用了Rogue JNDI项目的代码,支持直接植入内存shell,并集成了常见的bypass 高版本JDK的方式,适用于与自动化工具配合使用。 使用 java -jar JNDIExploit.jar -h 查看参数...
Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口注入 接口注入是指通过接口...
在IT行业中,Spring框架是Java开发者的常用工具,特别是在企业级应用中,它提供了一整套服务和功能,包括但不限于依赖注入、数据访问、事务管理等。而Spring JMS(Java Message Service)则是Spring框架中处理消息...
该压缩包"JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar"可能包含了一个JNDI注入攻击的示例或者测试工具,"SNAPSHOT"通常表示这是一个开发中的版本,可能尚未经过完整测试,因此可能存在漏洞或不稳定性。使用这样的...
Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理。数据源是一个池子,里面有若干个数据连接对象,当需要时就从里面拿一个使用,使用完毕就放回去,如果超过最大...
自用CVE-2018-3191 weblogic反序列化exp。
标题"JNDI-Injection-Exploit-1.0-SNAPSHOT-all.zip"暗示了这是一个关于JNDI注入漏洞的exploit工具包,版本为1.0 SNAPSHOT,可能包含了多个利用示例或攻击代码。"all"可能表示该压缩包包含了所有相关的组件或测试...
在IT行业中,Spring框架是Java开发者的首选工具之一,它为构建企业级应用程序提供了广泛的支持。Spring JMS(Java Message Service)是Spring框架的一部分,它允许开发者轻松地集成消息中间件,实现解耦和异步通信。...