- 浏览: 255528 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (217)
- java 基础 (36)
- flex (1)
- structs 2.0 (5)
- oracle 学习过程 (20)
- j2ee (63)
- c/s java (0)
- javaScript (24)
- jdom (1)
- jquery (1)
- java模式 (1)
- Datebase common konwledge (3)
- JfreeChart (3)
- html (3)
- sql server (6)
- tomcat servlet (4)
- lucene (1)
- Linux (3)
- 常见注意 (6)
- hibernate (2)
- jsp页面 (3)
- effective Java (1)
- spring (2)
- Spark (1)
- json (0)
- JMS (1)
- 电脑故障 (2)
- mysql (1)
- JBPM (2)
- java 线程 (1)
- oracle优化 (1)
- 安全 (1)
- hadoop (0)
- 算法 (1)
- hbase (0)
最新评论
-
mfhappy:
你好,你这个导出的文件中如果有图片你怎么处理??
jsp 导出excel(利用excel本身另存为html) -
丹寺丁:
...
jquery 解析 java 后台的 json数据 -
xurichusheng:
不直接诶生成想要的对象,而是让客户端利用所有必要的参数 ...
重叠构造器、Builder模式 -
wen121221222:
感谢啊!困恼我一个下午的问题终于解决了
java.lang.NoClassDefFoundError: javax/mail/Authenticator异常 -
gaoyanglovejava:
不错。就是这么解决的。多谢
The project is not a myEclipse hibernate project
JNDI(Java Naming and Directory Interface)即是Java命名和目录接口,是一个为Java程序
提供命名和目录功能的API。为了使用JNDI文件系统,我们要从Sun的Java网站下载
fscontext1_2beta3.zip文件(http://192.18.97.54/ECom/EComTicketServlet/BEGIN836373535F0E1764803B2730E24621A2/-2147483648/672140307/1/392822/392738/672140307/2ts+/westCoastFSEND/7110-jndi-1.2.1-oth-JPR/7110-jndi-1.2.1-oth-JPR:4/fscontext-1_2-beta3.zip),下载后解压,我们会看到一个fscontext.jar和providerutil.jar,
我们把它添加到ClassPath环境变量那里去。
这篇外传说的是通过JDBC使用JNDI是非常有用的,因为这样可以注册(绑定)数据源,然后在程序
中查找这些数据源,而不必提供准确的数据库连接信息。因此,如果数据库连接信息改变了,那么
只需修改JNDI对象,而不必修改程序。当然JNDI不止用于数据源,它也可以用于存储和获取任何
类型的已命名的java对象以及执行标准的目录操作。好了,不多废话了。
一、将数据源绑定JNDI
可以使用Java语句以程序方式将数据源绑定到JNDI,步骤如下:
1、创建一个OracleDataSource对象
OracleDataSource myODS=new OracleDataSource();
2、设置OracleDataSource对象的属性
myODS.setServerName(“localhost“);
myODS.setDatabaseName(“ORCL“);
myODS.setPortNumber(1521);
myODS.setDriverType(“thin“);
myODS.setUser(“admin“);
myODS.setPassword(“helloworld“);
3、创建一个Properties对象
java.util.Properties myProperties=new Properties();
4、将JNDI属性添加到Properties对象,使用setProperties方法将JNDI属性添加到
Properties对象。
myProperties.setProperties(Context.INITIAL_CONTEXT_FACTORY,
“com.sun.jndi.fscontext.RefFSContextFactory“);
myProperties.setProperties(Context.PROVIDER_URL,
“file:C:/TEMP“);
Context.INITIAL_CONTEXT_FACTORY-->该属性指定使用JNDI文件系统存储JNDI绑定信息文件。
Context.PROVIDER_URL------------->该属性指定文件系统中存储绑定文件的目录。
5、创建一个JNDI Context对象
Context myContext=new InitialContext(myProperties);
InitialContext构造器创建一个Context对象,这个对象引用最初的JNDI命名上下文。
6、使用Context对象将OracleDataSource对象绑定到JNDI。这里使用Context对象的bind()方法。
bind()方法接受两个参数:一个是给JNDI对象起的名字,第二个是要绑定的Java对象。
myContext.bind(“myNamedODS“,myODS);
以上六个步骤做完,我们就可以在Context.PROVIDER_URL属性指定的目录中找到.bindings文件。
这个.binding文件包含数据源的细节。以后,可以使用myNamedODS这个名称查找这个JNDI对象,
并且使用它连接数据库。
二、一个实例程序(待续)
import java.util.*;
import java.sql.*;
import oracle.jdbc.pool.*;
import javax.naming.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2004</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class JNDIExample1 {
public JNDIExample1() {
}
public static void main(String[] args) throws SQLException,NamingException{
//第一步:生成一个OracleDataSource 对象
System.out.println("creating an OracleDataSource object");
OracleDataSource myODS=new OracleDataSource();
//第二步:对OracleDataSource对象的属性set值
System.out.println("Setting the attribute of the OracleDataSource object");
myODS.setServerName("localhost");
myODS.setDatabaseName("testDb");
myODS.setPortNumber(1521);
myODS.setDriverType("thin");
myODS.setUser("myUser");
myODS.setPassword("myPassword");
//第三步:生成一个properties对象
System.out.println("creating a Properties object");
Properties myProperties=new Properties();
//第四步:把JNDI的属性加到Properties对象里面
System.out.println("adding the JNDI properties");
myProperties.setProperty(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
myProperties.setProperty(Context.PROVIDER_URL,"file:e:/JAVA/tmp");
//第五步:生成一个JNDI Context对象
System.out.println("creating a JNDI Context object");
Context myContext=new InitialContext(myProperties);
//第六步:把OracleDataSource数据源绑定到JNDI
System.out.println("binding the OracleDataSource object to JDNI "+
"using the name 'myBoundODS'");
myContext.bind("myBoundODS",myODS);
}
}
程序运行显示:
creating an OracleDataSource object
Setting the attribute of the OracleDataSource object
creating a Properties object
adding the JNDI properties
creating a JNDI Context object
binding the OracleDataSource object to JDNI using the name 'myBoundODS'
下面是一个在工作中实际的获取连接的方法两个例子
第一个: 分两部分:一部分为连接sql server 的jtds ,一个是oracle的ojdbc
public static synchronized Connection borrowConnection(String dataname)
throws SQLException
{
try
{
if(null==dataname){dataname="default";}
System.out.println("ConnectionManager.dataname="+dataname+"***************************");
//对DataSource对象的属性set值
String [] jdbclist={"jndi-name","servername","databasename","user-name","password","portNumber","driver-class"};
sysinfo=fileInfo.getConfigIni(jdbclist,dataname);
if((sysinfo.getProperty("driver-class").toLowerCase()).indexOf("jtds")>=0)
{
JtdsDataSource ods=new JtdsDataSource();
ods.setServerName(sysinfo.getProperty("servername").trim());
ods.setDatabaseName(sysinfo.getProperty("databasename").trim());
ods.setUser(sysinfo.getProperty("user-name").trim());
ods.setPassword(sysinfo.getProperty("password").trim());
//将JNDI属性添加到Properties对象,使用setProperties方法将JNDI属性添加到Properties对象。
java.util.Properties env = new Properties ();
env.put (Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
//env.put (Context.PROVIDER_URL, "file:C:\\temp");
env.put (Context.PROVIDER_URL, "file:"+System.getProperty("user.dir"));
//生成一个JNDI Context对象
Context ctx = new InitialContext(env);
try
{
ds=(DataSource) ctx.lookup("ODS"+dataname);
}
catch(NamingException ex)
{
try{
//把DataSource数据源绑定到JNDI
ctx.bind("ODS"+dataname,ods);
ds=(DataSource) ctx.lookup("ODS"+dataname);
}
catch(NamingException e)
{
errlogs.writeSyslog("ConnectionManager.borrowConnection(dataname):"+e.toString());
e.printStackTrace();
}
}
}
else if((sysinfo.getProperty("driver-class").toLowerCase()).indexOf("oracle")>=0)
{
OracleDataSource ods = new OracleDataSource();
ods.setPortNumber(Integer.parseInt(sysinfo.getProperty("portNumber").trim()));
ods.setServerName(sysinfo.getProperty("servername").trim());
ods.setDatabaseName(sysinfo.getProperty("databasename").trim());
ods.setUser(sysinfo.getProperty("user-name").trim());
ods.setPassword(sysinfo.getProperty("password").trim());
//ods.setURL("jdbc:oracle:thin:@");
ods.setDriverType("thin");
ods.setNetworkProtocol("tcp");
//将JNDI属性添加到Properties对象,使用setProperties方法将JNDI属性添加到Properties对象。
java.util.Properties env = new Properties ();
env.put (Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.fscontext.RefFSContextFactory");
//env.put (Context.PROVIDER_URL, "file:C:\\temp");
//flt 002
//env.put (Context.PROVIDER_URL, "file:"+System.getProperty("user.dir"));
String dbFilePath = ClassLoaderUtil.getClassLoader().getResource("").toString();
env.put (Context.PROVIDER_URL,"file:"+dbFilePath.substring(6));
//生成一个JNDI Context对象
Context ctx = new InitialContext(env);
try
{
ds=(DataSource) ctx.lookup("ODS"+dataname);
}
catch(NamingException ex)
{
try{
//把DataSource数据源绑定到JNDI
ctx.bind("ODS"+dataname,ods);
ds=(DataSource) ctx.lookup("ODS"+dataname);
}
catch(NamingException e)
{
errlogs.writeSyslog("ConnectionManager.borrowConnection(dataname):"+e.toString());
e.printStackTrace();
}
}
}
//if(ds==null)
//{
//}
Connection conn = ds.getConnection();
return conn;
/*env = new InitialContext();
ds = (DataSource) env.lookup(dataname);
Connection conn = ds.getConnection();*/
}
catch(Exception e)
{
errlogs.writeSyslog("ConnectionManager.borrowConnection(dataname):"+e.toString());
e.printStackTrace();
}
第二个:为dbcp连接池
static{
ResourceBundle rb = ResourceBundle.getBundle("jdbc");
try{
//数据库连接
D_DRIVE = rb.getString("jdbc.driverClassName");
D_URL = rb.getString("jdbc.url");
D_USER = rb.getString("jdbc.username");
D_PASSWORD = rb.getString("jdbc.password");
D_MAX_ACTIVE = rb.getString("jdbc.maxActive");
D_VALID_QUERY = rb.getString("jdbc.validQuery");
bds = new BasicDataSource();
//bds.setMaxActive(50);
bds.setRemoveAbandonedTimeout(100);
bds.setDriverClassName(D_DRIVE);
bds.setUrl(D_URL);
bds.setLogAbandoned(true);
bds.setRemoveAbandoned(true);
bds.setMaxWait(6000);
bds.setDefaultAutoCommit(true);
bds.setDefaultReadOnly(true);
if (D_VALID_QUERY != null && !D_VALID_QUERY.trim().equals(""))
bds.setValidationQuery(D_VALID_QUERY);
bds.setUsername(D_USER);
bds.setPassword(D_PASSWORD);
}
catch(Exception ex)
{
ex.printStackTrace();
}
try {
bds.setMaxActive(Integer.valueOf(D_MAX_ACTIVE).intValue());
} catch (Exception e) {
e.printStackTrace();
bds.setMaxActive(80);
}
}
发表评论
-
远程调用servlet
2012-09-12 16:26 3983//发起请求、先写发送(out)、然后等待度(in) URL ... -
基于ssh的项目的单元测试
2012-08-01 13:55 978package com.csoft.ta.util; imp ... -
JBPM设计器乱码问题
2012-06-30 13:44 769修改eclipse安装跟目录下的eclipse.ini文件,在 ... -
项目中读取文件
2012-03-13 18:31 812import java.io.BufferedReader;i ... -
项目中配置log4j
2012-03-08 10:26 888<!--如果不定义webAppRootKey参数,那么w ... -
qq album
2012-01-05 23:02 1029此文章完全转自他人博客(用于个人学习记录) 这个功能的实现关 ... -
关于quartz 2.x 一些记录
2011-12-30 14:27 1194功能需要 审计(即对不同规则的定制的东西进行轮巡)如果每一个轮 ... -
JavaScript动态操作表格,添加,删除行、列及单元格
2011-12-27 16:11 798<html> <head> < ... -
jsp 导出excel(利用excel本身另存为html)
2011-12-27 16:06 4514<%@page contentType="ap ... -
jsp 导出excel
2011-11-21 16:09 893<%@page contentType="ap ... -
java mail 应用
2011-09-22 10:02 860以下全部copy from http://www.cnbl ... -
quartz 在 spring静态、动态配置
2011-09-20 14:55 1178项目要求动态改变配置时间,动态改变quartz的 cron表达 ... -
JMX简单示例
2011-09-02 16:40 900以下文章摘自网络仅供学习用 1.编写一个以MBean ... -
cron表达式
2011-08-01 16:59 831以下文章复制自他出: 一个Cron-表达式是一个由六至七个 ... -
不同数据库的数据库类型及对应的jdbc类型
2011-07-27 12:47 1205public static void main(String ... -
Dom4j的使用
2011-06-15 18:08 759Dom4j 使用简介 作 ... -
SVN update时候报错的解决办法。。Working copy not locked; this is probably a bug, please rep
2011-06-01 09:02 5140今天上午CVS服务器突然坏了。。改用svn,安装完插件,连到我 ... -
hibernate 延迟加载
2011-05-12 17:25 699延迟加载: 延迟加 ... -
hibernate 一级缓存和二级缓存
2011-05-12 17:09 888一级缓存 Hibernate框架一级缓存的特点: 1.它是hi ... -
读取Blob字段图片、并进行缩放放到页面上
2011-03-29 15:15 4166整个流程分为四步,连接oracle数据库 -> 读取bl ...
相关推荐
总结,配置Tomcat 5.5及以上版本的JNDI数据源涉及多个步骤,包括添加JDBC驱动、配置全局数据源、在应用中引用数据源以及在代码中通过JNDI查找并使用数据源。选择全局或局部配置取决于应用的需求和资源的共享范围。...
【标题】"Tomcat学习笔记 - 使用JNDI数据源" 在Java应用服务器如Tomcat中,使用JNDI(Java Naming and Directory Interface)数据源是一种标准的方式,它允许我们集中管理和配置数据库连接,提高应用的可移植性和可...
TOMCAT8 JNDI对用户名和密码加密
自用CVE-2018-3191 weblogic反序列化exp。
基于java的开发源码-EJB中JNDI的使用源码例子.zip 基于java的开发源码-EJB中JNDI的使用源码例子.zip 基于java的开发源码-EJB中JNDI的使用源码例子.zip 基于java的开发源码-EJB中JNDI的使用源码例子.zip 基于java的...
在这个场景中,“intellij idea使用tomcat开发时自动部署jndi数据源”是一个重要的知识点,它涉及到如何在IDE中配置和管理数据库连接,以便于在应用运行时动态地查找和使用数据源。 JNDI(Java Naming and ...
总结,JNDI数据源是Java企业级应用中重要的数据库连接管理方式,通过JNDI服务,可以实现数据库连接的集中管理和动态配置,提高应用的可维护性和安全性。理解并正确配置JNDI数据源是开发高效、稳定的Java EE应用的...
在Java Web开发中,JNDI(Java Naming and Directory Interface)是一个重要的标准接口,它允许应用程序查找和使用各种资源,包括数据源...因此,理解和掌握JNDI与数据源的使用是每个Java Web开发者必备的技能之一。
总结来说,"tomcat-jdbc.jar"和"tomcat-juli.jar"是Tomcat-jdbc数据源的核心组件,它们共同确保了高效、可靠且可监控的数据库连接管理。对于大型的、高并发的Java Web应用来说,选择Tomcat-jdbc数据源是一个明智的...
Weblogic JDBC 数据源配置和详细参数说明 一、JDBC 概述 ...本文详细介绍了 Weblogic 8.1 中 JDBC 数据源的配置和详细参数说明,包括连接池、数据源、JDBC 驱动程序设置、配置 JDBC 连接池等内容。
在Tomcat服务器上,JNDI(Java Naming and Directory Interface)数据源提供了一种标准的方式来查找和管理数据库连接。以下是一种在Tomcat 5.5上配置JNDI数据源的详细步骤: 1. **放置驱动程序**: 将对应的数据库...
本篇将深入探讨JNDI(Java Naming and Directory Interface)数据源、数据库连接池以及它们在`Context.xml`和`web.xml`配置文件中的设置。 首先,理解JNDI数据源。JNDI是一种标准接口,允许Java应用查找和绑定命名...
数据源(DataSource)是一个JDBC连接池,它预先创建并管理着多个数据库连接,应用程序可以根据需要从池中获取连接,使用完毕后再归还,从而提高系统性能和资源利用率。使用JNDI查找数据源的步骤大致如下: 1. 初始...
JNDI主要用来查找和绑定对象,如数据源、EJB等,它为应用程序提供了一个统一的接口来访问各种服务,包括数据库连接池。在本教程中,我们将深入探讨如何正确配置和使用JNDI数据源,以及解决配置过程中可能遇到的问题...
在Spring框架与Tomcat服务器的集成中,配置JNDI数据源是将数据库连接管理交给服务器来处理,提高应用的可移植性和资源利用率。下面将详细解释配置JNDI数据源的相关知识点。 一、JNDI数据源的概念 JNDI数据源是一种...
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address] where: -C - command executed in the remote classfile. (optional , default command is "open /Applications/...
### Spring 获取 WebLogic JNDI 数据源的两种方式 在Spring框架中,通过JNDI(Java Naming and Directory Interface)可以方便地访问WebLogic服务器中的数据源。这为应用程序提供了高度解耦的数据访问机制,使得...
Tomcat 中的 JNDI 数据源是指将数据库连接信息注册到 JNDI 服务器中,以便在应用程序中可以通过 JNDI 名称来获取数据库连接。下面我们将详细介绍 Tomcat 配置 JNDI 数据源的多种方式。 方式一:配置单个应用数据源 ...
Tomcat6+Spring+JNDI配置数据源说明 本文档主要介绍了Tomcat6+Spring+JNDI配置数据源的详细步骤和原理...本文档提供了详细的 Tomcat6+Spring+JNDI 配置数据源的步骤和原理,可以帮助开发者快速了解和实现数据源配置。
该压缩包"JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar"可能包含了一个JNDI注入攻击的示例或者测试工具,"SNAPSHOT"通常表示这是一个开发中的版本,可能尚未经过完整测试,因此可能存在漏洞或不稳定性。使用这样的...