`
zhaoyu2288
  • 浏览: 39434 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JDNI浅尝辄止

阅读更多
JNDI全名为Java Naming and Directory Interface.JNDI
主要提供应用程序所需要资源上命名与目录服务.在Java EE环境中,JNDI扮演了一个很重要的角色,   
它提供了一个接口让用户在不知道资源所在位置的情形下,取得该资源服务.   
就好比网络磁盘驱动器的功能一样。
如果有人事先将另一台机器上的磁盘驱动器接到用户的机器上,
用户在使用的时候根本就分辨不出现在的驱动器是存在本端,   
还是在另一端的机器上,用户只需取得资源来用,根本就不知道资源在什么地方。   
JNDI这个接口基本上是LDAP,LDAP全名为Lightweight Directory Access Protocol

//常用的JNDI操作:
//绑定:把名称同对象关联的过程
void bind(String sName,Object object); 
//重新绑定:用来把对象同一个已经存在的名称重新绑定
void rebind(String sName,Object object); 
//释放:用来把对象从目录中释放出来
void unbind(String sName); 
//查找:返回目录总的一个对象
void lookup(String sName,Object object); 
//重命名:用来修改对象名称绑定的名称
void rename(String sOldName,String sNewName); 
//清单:返回绑定在特定上下文中对象的清单列表
NamingEnumeration listBinding(String sName); 


package com.zl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

//一个使用JNDI得到数据源的Demo
public class DemoAction extends ActionSupport {

	private static final long serialVersionUID = -8057562697271631827L;
	
	private String name;
	private String password;
	
	public String index(){
		// TODO Auto-generated method stub
		String result = SUCCESS;
	    Connection conn;
		try {
			conn = getConnectionByJNDI();
			String sql = "SELECT id,name,password FROM demo where name = ? and password = ?";
			PreparedStatement pst = conn.prepareStatement(sql);
			pst.setString(1, name);
			pst.setString(2, password);
			ResultSet rs = pst.executeQuery();
			if(rs.next()){
				System.out.println("编号:"+rs.getInt("id"));
				ActionContext.getContext().getSession().put("u_name", rs.getString("name"));
			}else{
				ActionContext.getContext().put("msg", "用户名或密码错误");
				result = INPUT;
			}
			closeDB(conn, pst, rs);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return result;
	}
	
	public String login() {
		// TODO Auto-generated method stub
		Connection conn;
		try {
			conn = getConnectionByJNDI();	
			String sql = "insert into demo values(demo_seq.nextval,?,?)";
			PreparedStatement pst = conn.prepareStatement(sql);
			pst.setString(1, name);
			pst.setString(2, password);
			pst.executeUpdate();		
			ActionContext.getContext().put("msg", "注册成功");
			closeDB(conn, pst, null);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return INPUT;
	}
	
	private static void closeDB(Connection conn,Statement st,ResultSet rs) throws Exception{
		if(conn != null) conn.close();
		if(st != null) st.close();
		if(rs != null) rs.close();
	}
	
	private static Connection getConnectionByJNDI() throws Exception{
		Properties p = new Properties();
	    p.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
		p.put(Context.PROVIDER_URL, "t3://localhost:7001");
		Context ctx = new InitialContext(p);
		javax.sql.DataSource ds = (javax.sql.DataSource)ctx.lookup("oracleDS");
		Connection conn = ds.getConnection();
		return conn;
	}
	/////////////
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}
}



由于数据源配置在Weblogic中,所以需要wl中的支持jar
分享到:
评论

相关推荐

    jdni配置

    《JNDI配置详解》 在Java应用开发中,JNDI(Java Naming and Directory Interface)扮演着重要的角色,它提供了一种标准的接口来查找和管理资源,如数据源(DataSource)、邮件会话(Mail Session)等。...

    java jdni

    Java Native Interface(JNI)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在Java应用程序中起到了桥梁的作用,使得开发者可以利用Java的跨平台特性的同时,调用本地(native)代码,...

    Tomcat JDNI数据源配置详解

    ### Tomcat JNDI数据源配置详解 #### 一、引言 在现代Web应用开发中,数据库连接管理是一项至关重要的任务。为了提高应用程序的性能和可维护性,通常会采用连接池技术来管理和复用数据库连接。...

    tomcat JDNI配置

    一个简单的tomcat6.0+mysql5.5整合spring3.0和hibernate3.3的一个简单的实例,其中的datasource是tomcat JNDI配置的 type="javax.sql.DataSource" ... url="jdbc:mysql://127.0.0.1:3306/test" ...

    JDNI增删改查

    "JDNI增删改查"这个主题聚焦于如何使用Servlet结合JNDI来实现对数据库的操作,即添加(Add)、删除(Delete)、修改(Update)和查询(Query)数据。 Servlet是Java提供的一种用于扩展服务器功能的接口,通常用于...

    Struts+mysql+DAO+JDNI的BBS学习项目

    本系统自带了分页组件.DAO设计模式.分享给各位网友分享!

    spring核心包

    spring 开发核心包

    JNDI写法tomcat配置

    ### JNDI与Tomcat配置详解 #### 一、引言 Java Naming and Directory Interface (JNDI) 是一种广泛使用的 Java 技术,用于访问和管理命名和目录服务。在 Web 应用开发中,JNDI 常被用来配置数据源,即数据库连接池...

    Proyecto_Clientes:演示使用 JDNI 从 Web 应用程序和 Web 服务访问 AS 中定义的数据源的项目

    "Proyecto_Clientes" 是一个项目名称,意为“客户项目”,而 "演示使用 JDNI 从 Web 应用程序和 Web 服务访问 AS 中定义的数据源的项目" 描述了这个项目的主要功能。它涉及到在 Java 开发环境中,通过 Java Naming ...

    import com.sun.jndi.ldap.ctl.VirtualListViewControl;

    import com.sun.jndi.ldap.ctl.VirtualListViewControl;

    tomcat jndi 数据库配置方法

    tomcat jndi 数据库配置方法

    jndi 文件系统实现JAR文件

    用于连接基于文件系统实现的JNDI服务器所需要的JAR包

    activiti教程

    activirti 完整教程(入门),本次上传资源,除了共享目的外,还想稍稍的赚点分,初学者可以看看!!!

    MyEclipse配置数据源

    在IT领域,特别是软件开发与数据库管理中,配置数据源是一项关键任务,它涉及到应用程序如何连接和访问数据库。本文将详细解析如何在MyEclipse环境中配置数据源,以实现与数据库的有效交互,主要聚焦于使用Microsoft...

    jndi所依赖的jar包

    Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录服务的API,它为各种不同的命名和目录服务提供了统一的接口。在Java应用程序中,JNDI允许开发者查找和绑定对象,这些对象可以是数据源、...

    spring jar包

    1.spring-aop:面向切面AOP编程中需要使用。声明式事物也用到此包。...可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。

    JNDI:JNDI注入利用工具

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

    spring-context-5.3.6.jar

    可以找到使用 Spring ApplicationContext 特 性时所需的全部类, JDNI 所需的全部类, UI 方面的用来与模板 (Templating) 引擎如 Velocity、 FreeMarker、JasperReports 集成的类,以及校验 Validation 方面的相关...

Global site tag (gtag.js) - Google Analytics