什么是JNDI
关键字: JNDI
JNDI全称 Java Naming and Directory Interface
JNDI是Java平台的一个标准扩展,提供了一组接口、类和关于命名空间的概念。如同其它很多Java技术一样,JDNI是provider-based的技术,暴露了一个API和一个服务供应接口(SPI)。这意味着任何基于名字的技术都能通过JNDI而提供服务,只要JNDI支持这项技术。JNDI目前所支持的技术包括LDAP、CORBA Common Object Service(COS)名字服务、RMI、NDS、DNS、Windows注册表等等。很多J2EE技术,包括EJB都依靠JNDI来组织和定位实体。
JDNI通过绑定的概念将对象和名称联系起来。在一个文件系统中,文件名被绑定给文件。在DNS中,一个IP地址绑定一个URL。在目录服务中,一个对象名被绑定给一个对象实体。
JNDI中的一组绑定作为上下文来引用。每个上下文暴露的一组操作是一致的。例如,每个上下文提供了一个查找操作,返回指定名字的相应对象。每个上下文都提供了绑定和撤除绑定名字到某个对象的操作。JNDI使用通用的方式来暴露命名空间,即使用分层上下文以及使用相同命名语法的子上下文。
jndi的用途:
1。你可以用jndi来得到object类的属性
如:Attribute attr =directory.getAttributes(personName).get("email");
String email = (String)attr.get();
2。你可以用jndi来搜索对象
如:foxes = directory.search("o=Wiz,c=US", "sn=Fox", controls);
查找谁的名字叫Fox在wiz部门的员工?
3。你可以用jndi通过naming/directory服务查询像printers和databases的对象
如:查询 Printer
Printer printer = (Printer)namespace.lookup(printerName);
printer.print(document);
4。你可以用jndi列表出命名空间的特殊级别的内容
如:
NamingEnumeration list = namespace.list("o=Widget, c=US");
while (list.hasMore()) {
NameClassPair entry = (NameClassPair)list.next();
display(entry.getName(), entry.getClassName());
}
EJB:Enterprise JavaBean介绍
http://windy2coast.iteye.com/blog/108903
http://ejbtt.iteye.com/blog/76972
SOAP(Simple Object Access Protocol )
JAVA虚拟机(JVM)的运行本质
LINUX权限问题
判断死锁的标准是什么
数据库存储过程以及相关单词的解释和用处
J2EE提供了哪些技术
Static、final、Abrstract、Interface
Static:用来声明类中的全局类变量,相对于实例变量。如下:
public class StaticTest
{
int x=1; //实例变量
static int y=1; //全局变量
public StaticTest()
{
x++;
y++;
}
public static void main(String[] args)
{
StaticTest t1=new StaticTest(); //生成实例t1
StaticTest t2=new StaticTest(); //生成实例t2
System.out.println("t1.x="+t1.x); //输出实例t1中的变量x
System.out.println("t2.x="+t2.x); //输出实例t2中的变量x
//System.out.println("StaticTest.x="+StaticTest.x);//无法输出类StaticTest中的
变量x
System.out.println("StaticTest.y="+StaticTest.y);//输出类StaticTest中的变量y
}
}
//执行后输出结果如下:
t1.x=2
t2.x=2
StaticTest.y=3
在上例中x为实例变量,y为全局变量。当生成StaticTest类的实例t1时系统为实例变量x、全局变量
y初始化分配空间,并执行方法StaticTest();生成第二个实例t2时重新初始化x为1、全局变量y此时
已经赋值为2,执行方法ststictest();实例变量无法由类直接引用,必须在生成实例后由实例进行
引用。
final:只用来修饰类及其的成员:变量、方法;final类无法继承、final变量无法修改、final方法
无法重写。如下:
public final class FinalTest
{
final int i=10;
public FinalTest(){}
public final int getNumber()
{
i =20;//i无法被再次处世化
return i;
}
}
class FinalSub extends FinalTest{}//FinalTest无法被继承FinalSub
class FinalDemo
{
final int getNumber()
{
return 10;
}
}
class FinalDemoSub extends FinalDemo
{
int getNumber(){return 20;}//getNumber()无法重写
}
Abstract:用来声明类为抽象方法类,被Abstract声明的类中至少有一个方法被Abstract声明为抽象方法并且抽象方法中没有实现内容。含有抽象方法的类必须被声明为抽象类。
抽象类无法创建对象,只能用来被继承,继承抽象类的子类必须重写所有父类中的抽象方法。如:
public abstract class Account
{
public abstract String getName();
.....
}
InterFace:
接口是抽象类的一个特例,接口中所有的方法必须为抽象方法,一个类可以实现多个接口,接口可以继承接口。
查看oracle中表的表名:
select count(*) from dba_tables where TABLE_NAME = '表名'
select count(*) from all_tables where TABLE_NAME = '表名'
select count(*) from user_tables where TABLE_NAME = '表名'