JNDI 配置:JBoss + MySQL
一、JNDI 名词解释
JNDI 是Java 命名和目录接口(Java Naming and Directory Interface,JNDI)的简称.从一开始就一直是 Java 2 平台企业版(JEE)的核心技术之一。在JMS,JMail,JDBC,EJB等技术中,就大量应用的这种技术。
命名服务:它提供了为给定的数据集创建一个标准名字的能力。它允许把名称同Java对象或资源关联起来,而不必指出对象或资源的物理ID。基本的名字操作包含在Context接口中。
目录服务:目录服务是一种特殊类型的数据库,与SQL Server、Access、Oracle等关系数据库管理系统相反,构造目录服务的目的是为了处理基于行为的事务,并且使用一种关系信息模型。基本的目录服务操作包含在DirContext接口中。

一个服务提供者就是一组Java类的集合,它支持开发者同目录服务进行通信,其方式类似于JDBC驱动程序与数据库之间的通信方式。能够用于JNDI的服务提供者必须实现Context接口或Context的扩展接口Directory- Context。
在使用JNDI时,读者只需要了解JNDI,而服务提供者才关注实际的网络协议、编码/解码值等细节。
当下载SDK软件开发包时,同时就下载了Sun公司的一些现有的服务提供者。这些服务提供者包括LDAP、NIS、COS(CORBA对象服务)、RMI注册及文件系统的提供者。如:hashtableObj.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.ldapCtx- Fatory")就是表示使用Sun LDAP服务提供者。当然如果要使用IBM服务提供者时就可以用com.ibm.jndi.LDAPCtxFatory来代替com.sun.jndi.ldap.ldapCtxFatory。
JNDI 的包
JNDI 包含5个包
· javax.naming:主要用于命名操作,它包含了命名服务的类和接口,该包定义了Context接口和InitialContext类;
· javax.naming.directory:主要用于目录操作,它定义了DirContext接口和InitialDir- Context类;
· javax.naming.event:在命名目录服务器中请求事件通知;
· javax.naming.ldap:提供LDAP支持;
· javax.naming.spi:允许动态插入不同实现,为不同命名目录服务供应商的开发人员提供开发和实现的途径,以便应用程序通过JNDI可以访问相关服务。
常用的 JNDI 操作
常用的JNDI操作如下:
void bind(String sName,Object object),绑定:把名称同对象关联的过程。 void rebind(String sName,Object object),重新绑定:用来把对象同一个已经存在的名称重新绑定。一般使用rebind()而不使用bind(),因为当有重名的时候rebind()不会出现异常,而bind()会报异常。 void unbind(String sName),释放:用来把对象从目录中释放出来。 void lookup(String sName,Object object),查找:返回目录总的一个对象。 void rename(String sOldName,String sNewName),重命名:用来修改对象名称绑定的名称。 NamingEnumeration listBindings(String sName),清单:返回绑定在特定上下文中指定属性名对象的清单列表,它返回名字、类和对象本身,它用于那些需要对
具体使用情况如下:
//得到初始目录环境的一个引用
Context cntxt = new InitialContext();
//返回绑定在特定上下文中指定属性名对象的清单列表
NamingEnumeration namEnumList = ctxt.listBinding("cntxtName");
//循环列出所有名字、类和对象
while ( namEnumList.hasMore() ) {
Binding bnd = (Binding) namEnumList.next();
String sObjName = bnd.getName();
String sClassName = bnd.getClassName();
//得到对象
SomeObject objLocal = (SomeObject) bnd.getObject();
}
NamingEnumeration list(String sName)与listBindings(String sName)相似,只是它只返回一系列名字/类映射,它主要是用于上下文浏览应用。
二、JNDI 配置
配置 JNDI 资源
复制 JBoss 文档的数据库引用的数据源定义模板到 JBoss 服务器。 $DOC_HOME/docs/examples/jca/mysql-ds.xml ---> $Server_HOME/server/default/deploy.
修改 mysql-ds.xml 文件的内容,使之能通过JDBC正确访问你的MySQL数据库,如下:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MySqlDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/demo</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>rootpassword</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>mySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
配置 JNDI 资源引用
为了让 JNDI 解析 java:comp/env/jdbc/mydatasource 引用,必须把 <resource-ref> 标签插入 web.xml 文件(Web 应用程序的部署描述符)
<resource-ref>: 资源引用,一般声明管理资源,如数据库驱动程序、JavaMail 会话、自定义类工厂等。
<resource-env-ref>: 资源环境引用,在Servlet 2.4里用来简化设置不需认证信息的资源环境,一般声明与资源相关的被管理对象,如环境参数、resource-ref变量。
<resource-ref>
<res-ref-name>jdbc/mydatasource</res-ref-name>
<jndi-name>java:MySqlDS</jndi-name> // 指向真实的 JNDI name
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<resource-ref> 入口告诉 servlet 容器,部署人员要在 组件命名上下文(component naming context) 中设置一个叫做 jdbc/mydatasource的资源。组件命名上下文由前缀 java:comp/env/ 表示,所以完全限定的本地资源名称是: java:comp/env/jdbc/mydatasource.
使用 JNDI 得到数据源
Connection conn=null;
try {
Context ctx=new InitialContext();
Object datasourceRef=ctx.lookup("java:comp/env/jdbc/mydatasource");
DataSource ds=(Datasource)datasourceRef;
Connection c=ds.getConnection();
/* use the connection */
c.close();
}
catch(Exception e) {
e.printStackTrace();
}
finally {
if(conn!=null) {
try {
conn.close();
} catch(SQLException e) { }
}
}
外部资源链接:
详解JNDI的lookup资源引用java:/comp/env
JNDI 配置:JBoss + MySQL的更多相关文章
- spring 数据源JNDI 基于tomcat mysql配置
关键代码 <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean&q ...
- EJB通过注解方式注入并使用其他EJB或者服务、配置JBoss数据源
通过注解方式注入并使用其他EJB或者服务 真实项目EJB对象很多,EJB之间也可以互相调用, 在项目HelloWorld下新建接口Other在cn.hqu.ejb3下: public interfac ...
- EJB通过注解方式注入并使用其它EJB或者服务、配置JBoss数据源
版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/Jerome_s/article/details/37103171 通过注解方式注入并使用其他EJB或者服务 ...
- tomcat下jndi配置
jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API.命名服务将名称和对象联系起来,使得我们可以用 ...
- Tomcat通过JNDI方式链接MySql数据库
原文:Tomcat通过JNDI方式链接MySql数据库 拷贝MySQL的JDBC驱动到Tomcat的lib路径下 配置全局数据源或者单个Web应用的局部数据源 局部数据源 在Tomcat的conf/C ...
- 如何配置远程mysql服务器
如何配置远程mysql服务器 分配用户权限 可以先看一下目前的用户权限状况: use mysql; select host,user,password from user; 然后分配新的权限给某一用户 ...
- laravel5 数据库配置(MySQL)
laravel5 数据库配置(MySQL) 首先有一个安装完成可以运行的laravel框架. 配置database.php 进入laravel根目录. 在config目录下找到database.php ...
- [mysql]brew 安装 配置 操作 mysql(中文问题)
mac 下卸载mysqldmg mac下mysql的DMG格式安装内有安装文件,却没有卸载文件--很郁闷的事. 网上搜了一下,发现给的方法原来得手动去删. 很多文章记述要删的文件不完整,后来在stac ...
- ubuntu中为hive配置远程MYSQL database
一.安装mysql $ sudo apt-get install mysql-server 启动守护进程 $ sudo service mysql start 二.配置mysql服务与连接器 1.安装 ...
随机推荐
- Nodejs的第一个页面
nodejs安装后如何查看和安装其他工具 网上nodejs的文章已经很多,这里只是写下自己的小小心得,如果能帮到别人当然更好. 安装nodejs这里就不叙述了,直接上nodejs官网下载就好了,初学者 ...
- MVC4方法行为过滤器例子(用户登录)
在Model文件夹下添加一个类MyActionFilterAttribute继承于ActionFilterAttribute: using System; using System.Collectio ...
- 最简单的Web服务器
//读取浏览器发过来的内容Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, Protoco ...
- nfs server的配置 Starting NFS daemon: [FAILED]
总结了一下是nfs server的制作过程:nfs(Network File System)其实就是说,这个机器的硬盘不够了,我要把文件放到别的服务器上去,服务器端的配置如下:首先(1)确保你的机器上 ...
- Xcode 7如何免费真机调试iOS应用
Xcode 7如何免费真机调试iOS应用的简单方式: 运行Xcode后,点击菜单中的Preferences…进入Accounts标签,这里选择添加Apple ID:在弹出的对话框中登入你的Apple ...
- jq div鼠标放上、离开马上展开、收缩方法
<body> <div id="aa" style="width:500px; height:30px; border:1px solid #000&q ...
- php 投票系统练习
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- WebService – 2.动态调用WebService
在本节课程中,将演示如何通过程序动态添加.调用.编译.执行WebService并返回结果. WebService动态调用示意图 WebService相关知识 代码文档对象模型CodeDom的使用 编程 ...
- java web开发环境配置
一:安装jdk http://www.java.com/zh_TW/ 二:下载tomcat,这里是zip版.http://tomcat.apache.org/download-70.cgi 三:在 ...
- 网站性能测试工具--MS Web Application Stress Tool
MS Web Applicaion Stress Tool 是一款网页测试的性能工具,具体的使用可以参考下面这篇博客文章 http://cuisuqiang.iteye.com/blog/193640 ...