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
分享到:
相关推荐
《JNDI配置详解》 在Java应用开发中,JNDI(Java Naming and Directory Interface)扮演着重要的角色,它提供了一种标准的接口来查找和管理资源,如数据源(DataSource)、邮件会话(Mail Session)等。...
Java Native Interface(JNI)是Java平台标准的一部分,它允许Java代码和其他语言写的代码进行交互。JNI在Java应用程序中起到了桥梁的作用,使得开发者可以利用Java的跨平台特性的同时,调用本地(native)代码,...
### Tomcat JNDI数据源配置详解 #### 一、引言 在现代Web应用开发中,数据库连接管理是一项至关重要的任务。为了提高应用程序的性能和可维护性,通常会采用连接池技术来管理和复用数据库连接。...
一个简单的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增删改查"这个主题聚焦于如何使用Servlet结合JNDI来实现对数据库的操作,即添加(Add)、删除(Delete)、修改(Update)和查询(Query)数据。 Servlet是Java提供的一种用于扩展服务器功能的接口,通常用于...
本系统自带了分页组件.DAO设计模式.分享给各位网友分享!
spring 开发核心包
### JNDI与Tomcat配置详解 #### 一、引言 Java Naming and Directory Interface (JNDI) 是一种广泛使用的 Java 技术,用于访问和管理命名和目录服务。在 Web 应用开发中,JNDI 常被用来配置数据源,即数据库连接池...
"Proyecto_Clientes" 是一个项目名称,意为“客户项目”,而 "演示使用 JDNI 从 Web 应用程序和 Web 服务访问 AS 中定义的数据源的项目" 描述了这个项目的主要功能。它涉及到在 Java 开发环境中,通过 Java Naming ...
import com.sun.jndi.ldap.ctl.VirtualListViewControl;
tomcat jndi 数据库配置方法
用于连接基于文件系统实现的JNDI服务器所需要的JAR包
activirti 完整教程(入门),本次上传资源,除了共享目的外,还想稍稍的赚点分,初学者可以看看!!!
在IT领域,特别是软件开发与数据库管理中,配置数据源是一项关键任务,它涉及到应用程序如何连接和访问数据库。本文将详细解析如何在MyEclipse环境中配置数据源,以实现与数据库的有效交互,主要聚焦于使用Microsoft...
Java Naming and Directory Interface (JNDI) 是Java平台中用于访问命名和目录服务的API,它为各种不同的命名和目录服务提供了统一的接口。在Java应用程序中,JNDI允许开发者查找和绑定对象,这些对象可以是数据源、...
1.spring-aop:面向切面AOP编程中需要使用。声明式事物也用到此包。...可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。
JNDI注入利用工具 介绍 本项目为JNDI注入利用工具,生成JNDI连接并启动初始化相关服务,可用于Fastjson,Jackson等相关突破的验证。 本项目是基于welk1n的 ,在此项目的基础服务框架上,重新编写了攻击利用代码,...
可以找到使用 Spring ApplicationContext 特 性时所需的全部类, JDNI 所需的全部类, UI 方面的用来与模板 (Templating) 引擎如 Velocity、 FreeMarker、JasperReports 集成的类,以及校验 Validation 方面的相关...