0 0

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
目前还没有答案

相关推荐

    weblogic spring jndi配置

    NULL 博文链接:https://zzy603.iteye.com/blog/1039826

    如何在spring中等价配置得到原本由jndi配置实现的数据源

    然而,有时我们可能希望在非Web环境下或不使用JNDI的情况下配置数据源,这时我们需要在Spring的配置文件中等价地实现JNDI的数据源配置。以下是如何在Spring中进行这种转换的详细步骤和知识点: 1. **理解JNDI配置**...

    技术专栏 _ 深入理解JNDI注入与Java反序列化漏洞利用.pdf

    在深入探讨JNDI注入与Java反序列化漏洞之前,我们需要对几个关键概念有所了解,这包括Java远程方法调用(RMI)、Java名称目录接口(JNDI)、Java远程消息交换协议(JRMP)、以及序列化和反序列化。 RMI是Java环境中...

    JNDI:JNDI注入利用工具

    本项目为JNDI注入利用工具,生成JNDI连接并启动初始化相关服务,可用于Fastjson,Jackson等相关突破的验证。 本项目是基于welk1n的 ,在此项目的基础服务框架上,重新编写了攻击利用代码,支持更多更强大的功能,并...

    spring获取weblogic jndi数据源的两种方式

    ### Spring 获取 WebLogic JNDI 数据源的两种方式 在Spring框架中,通过JNDI(Java Naming and Directory Interface)可以方便地访问WebLogic服务器中的数据源。这为应用程序提供了高度解耦的数据访问机制,使得...

    spring配置JNDI数据源

    这里,`jndiName`属性设置为我们在服务器配置中的`name`属性值,即`jdbc/MyDataSource`。 3. **使用数据源**:现在,我们可以在Spring的应用上下文中通过`@Autowired`注解或者通过`ApplicationContext`获取到数据源...

    SpringLDAP和JNDI的增删改查

    **Spring LDAP与JNDI:增删改查详解** 在Java开发中,当我们需要与目录服务进行交互,例如用户认证、权限管理等,Spring LDAP和Java Naming and Directory Interface (JNDI)是两个常用的技术。本文将通过一个入门级...

    JNDI注入学习1

    **JNDI注入详解** Java Naming and Directory Interface (JNDI) 是Java应用程序用来查找和管理网络资源的接口。它不依赖于特定的目录服务,而是通过服务提供者接口(SPI)来支持多种不同的目录服务,如LDAP、DNS等...

    spring 配置jndi

    - 为了测试JNDI配置是否正确,你可以尝试从Spring应用上下文中获取数据源并打印其信息,确保能成功查找并实例化。 6. **扩展性与最佳实践**: - 考虑使用Spring Boot,它提供了更简洁的方式来配置JNDI数据源,只...

    Spring jndi数据源配置方法详解

    Spring jndi 数据源配置方法详解 Spring jndi 数据源配置是指在 Spring 框架中使用 JNDI(Java Naming and Directory Interface)来配置数据源的方法。JNDI 是一个 Java API,用于访问命名和目录服务。通过使用 ...

    spring+jotm 多数据源事务管理(三)JNDI+Tomcat

    ### Spring + JOTM 多数据源事务管理详解(三):JNDI + Tomcat 在本篇文章中,我们将深入探讨如何利用Spring框架结合JOTM(Java Open Transaction Manager)来实现多数据源下的分布式事务管理。我们将通过具体实例...

    JNDIExploit-用于 JNDI注入利用的工具

    一款用于 JNDI注入利用的工具,大量参考/引用了Rogue JNDI项目的代码,支持直接植入内存shell,并集成了常见的bypass 高版本JDK的方式,适用于与自动化工具配合使用。 使用 java -jar JNDIExploit.jar -h 查看参数...

    Spring 三种依赖注入方式.doc

    Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口注入 接口注入是指通过接口...

    Spring JMS消息处理-不基于JNDI

    在IT行业中,Spring框架是Java开发者的常用工具,特别是在企业级应用中,它提供了一整套服务和功能,包括但不限于依赖注入、数据访问、事务管理等。而Spring JMS(Java Message Service)则是Spring框架中处理消息...

    JNDI-Injection-Exploit-1.0-SNAPSHOT-all

    该压缩包"JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar"可能包含了一个JNDI注入攻击的示例或者测试工具,"SNAPSHOT"通常表示这是一个开发中的版本,可能尚未经过完整测试,因此可能存在漏洞或不稳定性。使用这样的...

    Tomcat6+spring+jndi配置数据源说明.docx

    Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理。数据源是一个池子,里面有若干个数据连接对象,当需要时就从里面拿一个使用,使用完毕就放回去,如果超过最大...

    weblogic CVE-2018-3191 exp(含weblogic-spring-jndi-10.3.6.0.jar)

    自用CVE-2018-3191 weblogic反序列化exp。

    JNDI-Injection-Exploit-1.0-SNAPSHOT-all.zip

    标题"JNDI-Injection-Exploit-1.0-SNAPSHOT-all.zip"暗示了这是一个关于JNDI注入漏洞的exploit工具包,版本为1.0 SNAPSHOT,可能包含了多个利用示例或攻击代码。"all"可能表示该压缩包包含了所有相关的组件或测试...

    Spring JMS 消息处理-基于JNDI

    在IT行业中,Spring框架是Java开发者的首选工具之一,它为构建企业级应用程序提供了广泛的支持。Spring JMS(Java Message Service)是Spring框架的一部分,它允许开发者轻松地集成消息中间件,实现解耦和异步通信。...

Global site tag (gtag.js) - Google Analytics