JNDI简明教程

JNDI简明教程
JNDI简明教程

JNDI简明教程

JNDI诞生的理由似乎很简单。随着分布式应用的发展,远程对象访问成为常用的方法。虽然通过Socket等编程手段仍然可以实现远程通信,但按照模式的理论来说,具有很大的局限性。RMI、RMI-IIOP等技术的产生,使远程对象的查找成为了技术焦点,JNDI 技术也就应运而生。

一.JNDI基础

1.1JNDI

JNDI(Java Naming and Directory Interface)是Java命名和目录接口的简称,是J2EE 的核心技术之一。在JMS、JMail、JDBC、EJB等技术中都大量应用了JNDI技术。

1.2命名服务

命名是计算机系统中最基本的一个部分。人们给予实物一个名字,然后通过这个名字找到实物。例如,当你发送电子邮件的时候,你必须知道收件人的地址;当你在文件系统中查找一个文件的时候,你必须知道文件的名字。命名服务就是这样一个东西,它可以让你根据名字找到一个实物。

命名服务的主要功能就是能友好地把名字和实物映射到一起。比如,我们所熟悉的DNS系统,它就会把https://www.360docs.net/doc/b116120742.html,映射成IP地址192.9.48.5。再比如一个文件系统,我们可以通过名字C:\Windows\regedit.exe访问到其所对应的文件。这两个例子说明命名系统是广泛存在和被使用的,无论是在Internet还是单机系统。

1.2.1命名方式

为了在一个命名系统里找到某一个对象,你必须提供这个对象的名字才可以。这个命名系统决定了名字的格式应该是什么样子的。这种名字的格式就称为命名方式。

例如:

Unix文件系统的命名方式是相对根目录的文件名,每一级目录都必须以“/”来分隔开来。例如“/usr/hello”就表示一个在“/usr”目录里的名字叫“hello”的文件。

DNS系统的命名方式是不同的部分用“.”分隔开来。因此DNS名字“https://www.360docs.net/doc/b116120742.html,”就表示了一个DNS项,名字是“sales”。但请记住它是相对“https://www.360docs.net/doc/b116120742.html,”来说的。同样,“Wiz”是相对“com”的一个名字。

LDAP的命名习惯则是从右向左,由“,”分隔。因此LDAP名字“cn=lee,o=sun,c=us”就命名了一个名字是“cn=lee”的项,当然,它是相对“o=sun,c=us”来说的。同样,“o=sun”

是相对“c=us”的一个名字。而且LDAP还有一个规则,就是每个名字必须是“键值对”对应的,键值之间用“=”分开。

1.2.2绑定(Binding)

把一个名字和一个实际的对象联系在一起就称为绑定。例如,一个文件名和一个文件绑定在一起,一个域名和一个IP地址绑定在一起,一个LDAP名字和一个LDAP项绑定在一起。

1.2.3引用和地址

有些对象是不可能直接保存在命名系统里的,也就是说,我们不能把某些对象复制到命名系统里。但是命名系统可以保存一个指向对象的引用,就好像一个指针。一个引用只是告诉命名系统如何去找到一个被引用的对象。一个引用里不会包含很多信息,因为你可以从对象那里得到详细的信息。

例如,一个“飞机”可能保存这样一些信息:乘客信息、驾驶员信息、飞行计划等等。但是,一个对这个“飞机”的引用,可能只包含航班号和到达时间。对于一个文件对象的引用来说,可能只包含文件的名字;对于一个打印机对象的引用来说,可能只包含打印机的位置和所使用的通信协议。

尽管对于一个对象的引用中可以包含任意的信息,但是我们最好还是确定一些该如何才能找到一个对象,这就是所谓的地址。

1.2.4内容上下文(Context)

内容上下文其实就是一系列的“名字-对象”的绑定。每一个内容上下文都有对应的命名规则。一个内容上下文都会提供一个“lookup”方法去查找一个对象,或许还会提供一些其它的方法:绑定新的“名字-对象”、解除一个绑定、列出全部“名字-对象”等等。如果一个内容上下文里的某个名字对应的对象还是一个内容上下文,那么这个名字对应的内容上下文可以被称为“子内容上下文(SubContext)”。

例如,在Unix系统里,“/usr”就是一个内容上下文,“/usr/bin”是其子内容上下文;在域名系统中,“com”是一个内容上下文,那么对于“https://www.360docs.net/doc/b116120742.html,”来说,“sun”就是“com”的子内容上下文。

1.2.5命名系统和命名空间

一个命名系统就是一系列具有相同命名方式并提供一些相同操作的系统。例如,DNS 就是一个命名系统,LDAP也是一个命名系统。一个命名系统提供了命名服务和基于名字的一些操作。命名服务通过它的接口来访问。例如,DNS提供了映射域名和IP的命名服务,文件系统提供了文件名字映射文件的服务。

命名空间就是一系列的命名系统的集合。例如,Unix系统的命名空间是由全部的文件和目录所组成的。

1.3目录服务

许多命名服务被扩展成了目录服务。目录服务不仅用名字和对象作为联系,而且使用属性和对象进行联系。因此,你不仅可以通过名字来找到一个对象,你还可以通过属性来找到一个对象。

电话公司的目录服务就是一个很好的例子。电话公司的系统把一个用户的名字和电话号码、地址联系在一起。一个目录服务系统就像电话公司的一样——电话号码、地址,其实都是一个对象的属性。一个目录对象可以是一个打印机、一个人、一台电脑,甚至是一个网络。一个目录对象会包含它所必须的属性。

1.3.1 属性

一个目录对象可以具有属性,例如一个打印机可以具有型号、颜色等属性,一个用户对象可以具有电话号码、邮件地址等属性。属性包含一个属性名称和许多属性值。目录服务包含了一系列的目录对象,目录服务提供了许多方法来对属性进行操作,例如创建、删除等等。

1.3.2 查询和过滤

你可以通过给目录服务系统提供一个名字来查询一个目录对象。当然,对于一些目录服务系统,例如LDAP,比较主张使用查询语句来得到目录对象。使用查询语句查询对象的时候,你不仅可以指定一个目录的名字,还可以指定目录的属性,甚至是可以使用一些查询表达式。这种使用表达式的方式,就是过滤查询。这种方式有时候也被称为“反向查询”或者“基于内容的”查询。例如,你可以从目录系统里查询所有年龄大于40岁的用户;你也可以查询所有IP地址以“192.113.50”开头的机器。

1.3.3 结合命名和目录服务

目录服务通常会以层次的方式组织目录对象。例如,LDAP把所有对象组织成一个树的形式,被称为Directory Information Tree(DIT)。例如,一个“组织”对象,可能会包含一个“组”对象,而一个“组”对象可能会包含一个“人”对象。当目录对象以这种方式组织在一起的时候,除了可以被当作属性的容器以外,它们也可以被看作是命名服务对象了。更简单点说,命名服务提供了一种层次的服务,而目录服务提供了一种属性的服务。我们一定要区分它们的概念。从实际应用来说,我们可能只使用命名服务,而可以不必使用目录服务。但是如果我们使用了目录服务,那么一般都是要同时使用命名服务的。

1.4具有目录服务功能的Java应用

目录服务是计算机网络的一个重要组成部分。通过使用目录,你可以简化应用和对应用的管理。随着Java应用的日趋广泛,掌握访问目录服务的能力就很必要了。

1.4.1目录服务的传统使用方式

一个具有目录服务功能的应用,要么使用了命名服务,要么使用了目录服务。具有目录服务功能的应用和Applets,和其他应用一样,可以用传统的方式访问目录服务,也就是说,可以保存或者查询目录对象。一个Java邮件客户端,可以把一个目录服务作为邮件地址簿,可以从中查询邮件地址;一个邮件传输的代理程序,可以从中得到路由的信息;一个日历程序,可以从中得到用户的设置信息。

各种应用程序可以通过目录服务得到公用的基础信息。这种共享方式,可以让应用跨系统部署,设置是跨网络部署,并且让这些部署的耦合更加清晰,而且便于管理。例如,打印机配置和邮件路由信息都可以保存在目录服务里,这样,这些配置就可以被所有需要打印机和邮件路由的信息的应用所调用。

1.4.2把对象保存在目录服务里

我们不仅可以按照传统方式使用目录服务,Java应用也可以把目录服务作为一个对象的仓库来使用。例如,一个应用可以从目录服务里得到一个打印机对象,然后发送一些信息给打印机对象让它打印出来。

二.JNDI架构

JNDI的架构与JDBC的架构非常类似。JNDI架构提供了一组标准命名系统的API,这个基础API构建在中间层之上,这个中间层称为命名管理层,其功能由JNDI SPI来完成。

JNDI API提供如下五个包(其中前四个包定义了JNDI客户端接口,面向使用命名服务和目录服务的应用;最后一个包定义了JNDI服务提供者接口,即SPI,面向不同的命名和目录服务提供者):

●Javax.naming

●Javax.naming.directory

●Javax.naming.event

●Javax.naming.ldap

●Javax.naming.spi

在应用程序中,我们实际上使用的就是以上几个包中的类,具体调用类及通信过程对用户来说是透明的。

JNDI提供了访问不同JNDI服务的一个标准的统一的客户端接口,通过不同的访问提供者接口(JNDI SPI)的实现,由Service Provider将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。SPI的具体实现包括了几个增强和下面的命名/目录服务提供者:

●LDAP(Lightweight Directory Access Protocol) 服务提供者

●CORBA COS(Common Object Request Architecture Common Object Service)命名服

务提供者

●RMI(Java Remote Method Invocation)注册服务提供者

●DNS(Domain Name System)服务提供者

●FSSP(File System Service Provider)文件系统服务提供者

●其它服务提供者

总结:JNDI API只是作为应用程序客户端的实现,其服务端是由SPI对应的公司/厂商来实现的,我们只需要将服务端的相关参数传送给JNDI API即可,具体调用过程由SPI 来完成。

三.命名服务API

Package:javax.naming

3.1 Context接口和InitialContext类

Context是命名服务的核心接口,提供对象查找、绑定/解除绑定、重命名对象、创建和销毁子上下文等操作。

InitialContext类实现了Context接口,是访问命名服务的起始上下文,通过它可以查找对象和子上下文。

Context主要方法如下:

根据名称获取对象

Object lookup(Name name)

Object lookup(String name)

绑定名称到对象

void bind(Name name, Object obj)

void bind(String name, Object obj)

解除绑定,释放对象

void unbind(Name name)

void unbind(String name)

将对象和一个已经存在的名称重新绑定

void rebind(Name name, Object obj)

void rebind(String name, Object obj)

修改对象名称

void rename(Name oldName, Name newName)

void rename(String oldName, String newName)

列出上下文中的所有对象名称信息。NameClassPair包含对象名称和对象类名。

NamingEnumeration list(Name name)

NamingEnumeration list(String name)

列出上下文中的所有绑定

NamingEnumeration listBindings(Name name)

NamingEnumeration listBindings(String name)

创建子上下文

void createSubcontext(Name name)

void createSubcontext(String name)

销毁子上下文

void destorySubcontext(Name name)

void destorySubcontext(String name)

3.2 Name接口

对应于命名服务概念中的对象名称。它的具体实现可能是一个简单的字符串,也可能是一个复杂的对象。CompoundName类和CompositeName类均实现了Name接口,分别代表复合名称和混合名称。

3.3 Binding类

对应于命名服务概念中的绑定。一个Binding包含对象名称、对象的类名称、对象本身。

Binding主要方法如下:

获取/设置对象名称

String getName()

void setName(String name)

获取/设置对象类名

String getClassName()

void setClassName(String name)

获取/设置对象

Object getObject()

void setObject(Object obj)

3.4 Referenceable接口和Reference类

命名服务中的对象的存储方式各不相同。有的将对象直接序列化,这时实现标准的Serializable接口。有的要将对象存储在命名系统外部,这就要用到Referenceable接口和Reference类了。Reference类包含了怎样构造出一个实际对象的信息,实际对象则需要实现Referenceable接口。

Referenceable主要方法如下:

返回对象的引用

Reference getReference()

当将一个实现了Referenceable接口的对象绑定到Context时,实际上通过getReference()得到它的Reference进行绑定。而如何从Reference中创建出Referenceable 的实例,则由具体的SPI实现,JNDI客户不必关心。

四.目录服务API

Package:javax.naming.directory

4.1 DirContext接口和InitialDirContext类

DirContext是目录服务的核心接口,它扩展了Context接口,除了提供命名服务的各种操作外,还提供了访问和更新目录对象属性的操作,以及Search操作。

InitialDirContext类扩展InitialContext并实现了DirContext接口,是访问目录服务的起始点。

DirContext主要方法如下:

bind/rebind/unbind等方法与Context类似,区别是各个方法中均添加了Attributes参数,表示绑定的是一个目录对象,其中有对象本身,还有对象的属

性集合。这里不再列举。

获取对象的属性集合

Attributes getAttributes(Name name)

修改对象的属性集合

void modifyAttributes(Name name, int mod_op, Attributes attrs)

搜索包含匹配的属性的对象

NamingEnumeration search(Name name, Attributes matchingAttrs) 通过查询过滤条件进行操作,同时指定了搜索控制

NamingEnumeration search(Name name, String filter,

SearchControls cons)

4.2 Attribute接口和Attributes接口

Attribute接口对应于目录服务概念中的属性,Attributes表示属性的集合。

4.3 SearchResult类和SearchControls类

SearchResult类继承自Binding类,表示DirContext的search操作结果。SearchControls 类用于对搜索操作进行更精细的控制,如指定搜索范围(Scope)、时间限制(TimeLimit)和结果数量限制(CountLimit)。

五.服务事件API

Package:javax.naming.event

5.1 EventContext接口和EventDirContext接口

分别表示支持事件通知的上下文,提供了添加和删除时间监听器的操作。

5.2 NamingEvent类

命名和目录服务产生的事件。包含一个type,表示不同的事件类型。

5.3 NamingListener

NamingListener是处理NamingEvent事件监听器的接口。

5.4 NamespaceChangeListener

NamespaceChangeListener是NamingListener的子接口。

5.5 ObjectChangeListener

ObjectChangeListener是NamingListener的子接口。

燃气灶的安全使用方法及注意事项

行业资料:________ 燃气灶的安全使用方法及注意事项 单位:______________________ 部门:______________________ 日期:______年_____月_____日 第1 页共10 页

燃气灶的安全使用方法及注意事项 1、首先要清楚自己家里所使用的气源。 因为天然气、人工煤气还是液化石油气所对应的燃气灶是不相同的,原理不同。明确气源,安装好后,请在使用燃气灶具前应认真阅读产品说明书。在使用燃气前必须作好一切准备,切莫马虎或忙乱。按顺序先将燃气管道上的灶前阀门打开,再按下点火装置。 2、一定要购买具有自动熄火保护装置的燃气灶。 3、灶具使用中,如发现熄火,要立即关闭开关。 打开门窗通风,待没有燃气味时,查明熄火原因,并要妥善处理后再重新点火。 4、在停止使用燃气或者临睡前,应检查燃气具开关是否全部关闭。 将燃气表上的总阀门关闭、开启厨房间窗户、关好厨房通往卧室的门则更为安全。 5、燃气灶与管道间如采用胶管连接方式,要经常检查胶管是否损坏老化,是否存在漏气现象。 方法是用皂液涂抹,连续吹气泡处即为漏气点;燃气软管弯曲半径应大于5厘米,否则弯曲处易老化开裂;软管的使用寿命一般为18个月,老化的应及时更新。 6、燃气表、灶严禁安装在卧室内,也不能在装有燃气设施的厨房内睡觉。 这是因为燃气管道里充满着燃气,一旦因管道腐蚀等原因泄漏出来,就会使人燃气中毒甚至死亡。另外也不要在燃气灶附近堆放杂物和易燃易爆物品,以防火灾和爆炸事故的发生。 第 2 页共 10 页

7、燃气灶具使用后要定期进行保养,以保持性能完好。 对火盖要经常进行清洗,以免污物堵塞火孔,导致灶具回火。 8、居民客户及公共建筑的一切燃气设备不允许私自拆装或迁移。 如果客户私自拆装会破坏设备及供气系统的严密性,燃气泄漏出来就会酿成严重事故。 二、燃气灶常见问题: 1、燃气灶具为什么会打不着火? 燃气灶具打不着火的原因有很多,脉冲点火灶具出现打不着火现象大都是电池没电造成的,此时,用户需要更换燃气灶具内的电池;点火针不正、离内焰火盖距离较远也可导致灶具打不着火,用户可适当旋转内焰火盖,将火盖上的出气口对准点火针;部分用户家的燃气灶具点火针出现了生锈现象,影响点火,用户可用金属铁片等在点火针与内焰火上蹭一蹭,让其露出金属表面方便点火;另外,点火支架及点火喷嘴不正、脉冲器损坏、点火针断裂等情况都会导致燃气灶具打不着火,遇到此类情况用户需找专业维修人员进行维修。 2、燃气灶具点火后为什么会“站不住火”,火焰没多久就熄灭了? 用户首先要检查燃气灶具内的电池是否有电,部分用户由于开关旋钮没有压到位导致“站不住火”;一些用户家中燃气灶具的风门调节过大,氧气进入过多也会导致该问题发生,此时应适当调节风门;部分带熄火保护装置的灶具,熄火保护针(在点火针旁)距离火焰过远,使熄火保护装置运行切断了气源,用户可通过调节内焰火盖来解决问题;个别用户燃气灶具内的熄火保护针被油污覆盖、电磁阀门损坏、脉冲损坏等也可导致火焰“站不住”,用户需找专业维修人员进行维修。 3、天然气正常燃烧时应为蓝色,在使用时经常会出现火焰为红色 第 3 页共 10 页

关于DBCP数据库连接池配置整理

1.简介 DBCP(DataBase Connection Pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是tomcat 使用的连接池组件。单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。 dbcp提供了数据库连接池可以在spring,iBatis,hibernate中调用dbcp完成数据库连接,框架一般都提供了dbcp连接的方法; tomcat中也提供了dbcp的jndi设置方法,也可以不在框架中使用dbcp,单独使用dbcp 需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar 2.参数说明 翻译自https://www.360docs.net/doc/b116120742.html,

这里可以开启PreparedStatements池. 当开启时, 将为每个连接创建一个statement 池,并且被下面方法创建的PreparedStatements将被缓存起来: ●public PreparedStatement prepareStatement(String sql) ●public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) 如果容许则可以使用下面的方式来获取底层连接: Connection conn = ds.getConnection(); Connection dconn = ((DelegatingConnection) conn).getInnermostDelegate(); ... conn.close() 默认false不开启, 这是一个有潜在危险的功能, 不适当的编码会造成伤害.(关闭底层 连接或者在守护连接已经关闭的情况下继续使用它).请谨慎使用,并且仅当需要直接访问驱动的特定功能时使用. 注意: 不要关闭底层连接, 只能关闭前面的那个 如果开启"removeAbandoned",那么连接在被认为泄露时可能被池回收. 这个机制在(getNumIdle() < 2) and (getNumActive() > getMaxActive() - 3)时被触发。 举例当maxActive=20, 活动连接为18,空闲连接为1时可以触发"removeAbandoned".但是活动连接只有在没有被使用的时间超过"removeAbandonedTimeout"时才被删除,默认300秒.在resultset中游历不被计算为被使用。 3.使用注意点

Weblogic监控jndi泄露连接的方法

Weblogic监控jndi泄露连接的方法 1说明 如果后台出现“No resources currently available in pool iscjndi to allocate to applications”类似这个错误,说明weblogic 的数据库连接池满了: 可以考虑通过此方法排查一下具体是程序中的什么方法导致。 查看数据源监控页面,如果“当前活动连接数”超过系统配置的最大数字(系统默认是15,优化之后为150),就会出现以上错误: 最大连接数配置:

2配置一:设置“非活动连接超时”参数 设置后连接在指定时间内(单位:秒)没有活动的话,WebLogic会将之释放并回收到连接池。设置步骤:“数据源-(数据源名称)-连接池-非活动连接超时” 1、点击“数据源-(数据源名称)” 2、选择“连接池”

3、展开高级内容 4、找到高级中“非活动连接超时”参数,设置为100

4、保存配置 3配置二:开启weblogic数据库连接泄漏日志 设置步骤:“数据源-(数据源名称)-诊断-概要文件连接使用情况” 1、点击“数据源-(数据源名称)” 2、点击“诊断”

3、选中“概要文件连接情况”、“概要文件连接泄露”:

4、保存配置 4查看日志 在系统中操作,重现一下相关问题,同时监控weblogic日志,日志中会出现类似以下格式的异常信息,提供研发找到具体class进一步排查泄露原因。 注意:操作之后等待一段时间,weblogic自动回收连接时才产生日志,不是操作的时候立即产生。 日志文件位置: /app/weblogic/user_projects/domains/【domain名称】/servers/【server名称】/logs/【server名称】.log 比如总部测试环境的日志文件位置: /app/weblogic/user_projects/domains/mpsm_domain/servers/mpsmServer/logs/mpsmServer.log ####<2016-11-28 上午11时20分02秒CST><[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'><><><><1480303202391> ####<2016-11-28 上午11时20分12秒CST><[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'><><><><1480303212879>) at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

燃气灶更换打火针的步骤

燃气灶中有点火针、感应针、离子熄保感应针、热电偶感应针等等。长期的使用燃气灶各个部位都会出现相应的问题,今天来给大家讲解一下燃气灶怎么换打火针。一起来学习吧! 燃气灶点火针更换步骤如下: 1、托起燃气灶; 2、拧开镙丝钉; 3、打开密封盖; 4、揭起钢化玻璃面板; 5、就可以看见内部庐山真面目; 6、安装上新的点火针,测试点火情况; 7、点火针穿孔过线; 8、定位安置好火针,接好线。 燃气灶点火针作用:燃气灶脉冲产生的高压电流经线路传导到点火针顶端金属,对燃气灶中心最近处有1200V电压差而产生电火花。电火花引燃中心出气孔出来的燃气而点燃灶具。燃气灶点火针外观:柱状白色陶瓷,顶端处为2毫米左右金属圆柱形状。现在行业内点火针主要分带线点火针与不带线点火针。带线点火针指点火针连接线与柱身一体连接。不带线的点火针,针与线可分离,一般采用黑色热熔线作为与脉冲的连接线。 燃气灶的感应针作用:熄火保护功能中用来感应灶具工作状态。感应灶具正常燃烧中熄火,则使熄保功能起作用而切断灶具燃气供应而保证灶具使用的安全。现在熄保功能主要分为热电偶熄保与离子熄保两种,由于机制不同而作用与功能也不同。

离子熄保感应针:柱身为白色陶瓷,顶端为锥形金属。作用是感应火焰中的离子,并将讯号传递给脉冲。热电偶感应针形状:柱身为黄铜色螺纹状,顶部为圆锥形状。 热电偶感应针功能:采用两种不同的热敏金属组成,利用电压差产生电流维持电磁阀开启。感应针温度低于150度停止供电而电磁阀回落关闭气源通道。燃气灶具顶端的两根针,一根为点火针,一根为感应针。根据两根针的颜色也可判断熄保的不同方式:热电偶熄保还是离子熄保。而根据两根针的功能也可以大致判断燃气灶出现什么样的症状会出这两根针有关。

Jndi配置

一、tomcat6配置 找到tomcat6的安装后的目录,在conf文件中的context.xml,配置如下: 注:driverClassName="oracle.jdbc.driver.OracleDriver" //oracle的驱动包 url="jdbc:oracle:thin:@192.168.1.34:1521:orcl" //url username="lyc" //用户名 password="lyc" //密码 为你自己的项目配置。 二、数据库驱动包 必须把数据库驱动包放在TOMCAT目录里的lib目录 三、ssh中配置 hibernate.cfg.xml去掉,此文件内全部配置在spring的配置文件中 在src根目录下面创建一个init.properties配置文件出来,这个文件保存着一些配置信息,然后在spring初始化时读取这个配置文件,init.properties 内容如下: jdbc.dbpool4jndi=java:comp/env/jdbc/jndipool #jdni名称 #以下是hibernate的配置信息 hibernate.dialect=org.hibernate.dialect.Oracle9Dialect hibernate.show_sql=true hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider https://www.360docs.net/doc/b116120742.html,e_query_cache=true hibernate.connection.autocommit=true hibernate.jdbc.batch_size=50 hibernate.jdbc.fetch_size=5 applicationContext.xml中配置:

燃气灶维修:更换电池方法【详细步骤】

现在基本上家里都是使用天然气做饭,那自然是离不开燃气灶,而且使用天然气也更加的干净卫生,便捷度很高。 但燃气灶也是属于家用灶具,也有使用年限,平时使用过程中,也难免会出现一些状况,更换电池就是常见的一种问题。下面就来看下燃气灶电池在哪?燃气灶怎么换电池? 一、燃气灶电池在哪 通常来说,燃气灶在设计的时候,都是将电池盒设计在燃气灶的底部,我们只需要将燃气灶翻过来,这时就可以看到了。 二、燃气灶怎么换电池 1、电池盒通常都是在燃气灶的底部,因此先在燃气灶的底部找到电池盒,然后将其倒过来,仔细地找一找看,在煤气灶的背面有没有哪个位置像是装电池的,每一台煤气灶的结构都有所不同,所以装电池的位置也是有所区别的。 2、找到安装电池的位置后,沿着打开的位置将电池盖打开,我们就可以看到里面有一个大号的干电池,注意在购买的时候也要买一个大小一样的电池。

3、像取遥控器电池一样,将燃气灶的电池取下来,然后把新买来的电池换上去,安装时要注意电池的正负极,如果装反了燃气灶也是无法使用的。 4、安装完成后将盖子盖上,把煤气灶的方向放回原来的位置,将煤气打开,试一试煤气灶可不可以正常点火,在扭动开关的时候可以看到火星,说明是可以正常点火的,如果还是不可以也有可能是没有煤气了。 三、燃气灶电池多久换一次 家里使用的燃气灶,按照国标规定的使用年限是8年,通常灶具在使用了8年后,它的零部件就会出现不同程度的老化,存在着一定的安全隐患,这时就需要更换燃气灶。 如果使用的电池是质量较好的碱性电池,可以每年更换一次,电池的电量可以保证放电针的放电强度,提高点火的成功率。

在电池电量不足但没有耗尽电量的情况下,放电针虽能放电,但放电的强度弱了很多,点火的成功率会大大的下降,就会出现点不着火的情况。 市场上销售的一般的碱性电池使用一年半左右,它的放电强度就已经大大减弱了,考虑到使用频率及电池的自然放电损耗,还是建议灶具的电池使用1年左右就更换一次。 四、燃气灶电池是几号的 燃气灶使用的电池多为一号电池,也有煤气灶专用的电池,不同的煤气灶用的电池有所差别,如果业主不是很了解,可以到五金店去咨询一下。 以家电、家居生活为主营业务方向,提供小家电、热水器、空调、燃气灶、油烟机、冰箱、洗衣机、电视、开锁换锁、管道疏通、化粪池清理、家具维修、房屋维修、水电维修、家电拆装等保养维修服务。

net weaver JNDI方式连数据库

JDBC连数据库 一、配置jdbc 1.在浏览器中输入http://<服务器IP>:<端口> /nwa,进入登陆页面,输入用户名密码 登陆。 2.选择Configuration Management → Infrastructure → Application Resources。点击进入 后界面如下: 3.新增数据库驱动(Create New Resource→Deploy New JDBC Driver)

上传驱动: 成功后界面如下: 4.创建JDBC datasource(在每次服务器重启后失效)

填入相关信息 点击保存成功后,如下图(如果状态不是Fully Available,请检查配置重新配置)

配置完成后在程序中通过如下方法调用连接: InitialContext initialcontext = new InitialContext(); DataSource ds = (DataSource) initialcontext.lookup("jdbc/testJdbc") ; Connection con = ds.getConnection() ; 连接数据库经常用到,可以写一个类专门处理数据库操作(后面的实例中就是用这 种方式的)。 二、设计web Dynpro界面。 1.完成以上配置后,在net weaver studio中配置sap服务器(配置方法如下图)

2.开始web Dynpro工程(file—>new web Dynpro development Component),创建完成 后展开工程选址Application,右键创建Application。创建完成后如图: 3.打开创建的components的component controller,在context中创建如下context对 象,用来存放数据对象。

SpringMvc +Mybatis最全的配置

Springmvc+mybatis框架配置 (内含日志+多数据源配置+事务配置+maven配置)1spring-mvc.xml

JavaWEB经验总结之EJB3.0与JNDI的实际结合使用及EJB的客户端开发

客户端(xxxClient)要调用EJB,它需要通过JNDI去寻找EJB的存根代理对象 下面是一个简单的EJBClient.java代码 package com.zuijiajiao.Servlab.HelloWorld.test; import java.util.Properties; import javax.naming.InitialContext; import javax.naming.NamingException; import com.zuijiajiao.Servlab.HelloWorld.HelloWorld; publicclass EJBClient { publicstaticvoid main(String[] args) { Properties props = new Properties(); props.setProperty("java.naming.factory.inital", "org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url", "localhost:1099"); try { InitialContextctx = new InitialContext(props); HelloWorld helloWorld = (HelloWorld) ctx .lookup("HelloWorldBean/remote"); System.out.println(helloWorld.sayHello("电子科大")); } catch (NamingException e) { // TODO: handle exception System.out.println(e.getMessage()); } } } 其中,红色突出部分代码就是用于设置JNDI的上下文信使。 props.setProperty("java.naming.factory.inital", "org.jnp.interfaces.NamingContextFactory"); 这句代码用于设置JNDI的链接工厂, 第一个参数,是固定的写法,有JNDI规范所规定,第二个参数就是JBoss的链接工厂;于是,JNDI通过这个链接工厂就可以和JBoss进行通信了; props.setProperty("java.naming.provider.url", "localhost:1099"); 这句代码用于设置命名服务器的链接URL 第一个参数是固定的写法,有JNDI规范所规定,第二个参数就是JBoss的连接字符串JNDI通过JBoss的连接字符串就可以知道JBoss它所在的地址,还有它所使用的端口号

JBOSS数据库配置大全

JBOSS数据库配置大全 Jboss 4.0的开发人员版本是一个开源的应用服务器, 他把HypersonicDB作为他的缺省数据库。然而,开发人员 也许还要使用除了Hyp ersonicDB以外其他种类的数据库, 在这篇文章中我们将看到如何在Jboss上配置使用其他的数 据库。 简介 Jboss4.0使用了JDBC配置文件来配置数据库连接,它 为EJB和其它J2EE应用提供了数据源(data source)进行访 问。如果你要使用Hyp ersonicDB以外的数据库你就要修改 这雠渲梦募U馄恼陆胖亟步庀旅娴募父霾糠郑?BR> Jboss的EJB部署描述符 Oralce数据库的配置 MySQL数据库的配置 Sysbase数据库的配置 DB2数据库的配置 Infomix数据库的配置 Jboss的EJB部署描述符standardjaws.xml (位于 X:\jboss4\server\default\conf ) 是一个映射CMP实体EJB的标准部署描述文件。它用于配置CMP 实体EJB,你也可以使用jaws.xml代替。你可以把这个文件copy 到ejb .jar 文件中的META-INF 目录下。这个文件用于描述下

面的信息: 描述一个数据源和映射类型。 描述EJB 映射的表描述EJB 的finder 方法描述类型映 射 这里的数据源描述的是一个JNDI 名称,可以通过这个 JNDI 来获得一个数据源连接池。Jboss4 缺省的数据源使用的是HypersonicDB 。如果使用其他的数据源你需要修改 jaws.xml 文件。 standardjbosscmp-jdbc.xml (位于 X:\jboss4\server\default\conf )是配置Jboss CMP 容器的标准部署描述文件,你也可以使用一个自定义的配置文件 --jbosscmp-jdbc.xml 来代替它。这个文件也放在EJB.jar 文件的META-INF 目录中。缺省使用的还是HypersonicDB 作为数据库,这里也需要修改。 Oracle 数据库的配置 Oracle 以它的运行稳定和可靠成为了一个非常受欢迎 的企业级数据库。要在Jboss 上配置使用Oracle 的话我们要做的第一件事就是把Oracle 的JDBC 驱动程序复制到 ClassPath 下。我们把这个JDBC 驱动程序复制到 server/default/lib 目录下。为了使用Oracle 的事务处理数据

java应用程序JNDI方式使用weblogic连接池的方法

java应用程序JNDI方式使用weblogic连接池的方法 第一步准备工作:首先需要明确一点,要获取weblogic的连接就必须依赖weblogic相关jar,不是网上所说的weblogic.jar,如果你把weblogic.jar配置在你的classpath里面是不够的,因为会报出java类文件找不到的错误诸如[Caused by: weblogic.security.subject.AbstractSubject https://www.360docs.net/doc/b116120742.html,ng.NoClassDefFoundError: weblogic/security/subject/AbstractSubject]之类的异常。那么我们怎么办呢,其实很简单只要进入到你webloigc_home路径下进入到server/lib目录,并且运行[jdk1.6 命令“java -jar wljarbuilder.jar”;jdk1.5命令“java -jar wljarbuilder.jar -profile wlfullclient5 ”],拷贝“wlfullclient.jar或者wlfullclient5.jar”到你的classpath环境下; 第二步编码工作:新建一个java工程,新建一个java类,命名为Connector.java;首先我们初始化获取数据库连接的环境,即初始化context; Hashtable ht=new Hashtable(); ht.put(Context.INITIAL_CONTEXT_FACTORY,INITIAL_CONTEXT_FACTORY); ht.put(Context.PROVIDER_URL, PROVIDER_URL); try { long t1=System.currentTimeMillis(); _context=new InitialContext(ht); long t2=System.currentTimeMillis(); System.out.println(“initial the context cost:”+(t2-t1)+”millseconds!”); } catch (NamingException e) { System.out.println(“initial context failured with Exception:”+e.getMessage()); e.printStackTrace(); } 接下来从context上查找JNDI获取到Datasource对象:javax.sql.DataSource ds=(javax.sql.DataSource)ctx.lookup(JNDI); 再就是从Datasource中得到java.sql.Connection对象了。ds.getConnection(); 3 具体的示例代码请参考如下内容,笔者将源码完全贴出: import java.sql.*; import java.util.*; import javax.naming.*; /** *

 * to get the connections of weblogic connection pool by JNDI * the required jars include “wlfullclient.jar”, * I know you will ask me how to get this jar? the following is the answer: * first you must has installed the weblogic,WL_HOME means the weblogic setup directory. * (a).Creating a wlfullclient.jar for JDK 1.6 client applications * =================================================================== * 1.Change directories to the server/lib directory. * cd WL_HOME/server/lib * https://www.360docs.net/doc/b116120742.html,e the following command to create wlfullclient.jar in the “server/lib”directory: * java -jar wljarbuilder.jar * this may take a few minutes ,just wait! * 3.You can now copy and bundle the wlfullclient.jar with client applications.

LiveBOS Server (Tomcat 版)配置手册

面向对象的业务支撑平台与建模工具* 实现“应您所需,随时而变”的应用* 业务管理应用软件最佳选择* LiveBOS Server (Tomcat版)配置手册 福建顶点软件股份有限公司 https://www.360docs.net/doc/b116120742.html, Copyright ○c 1996-2008 版权所有福建顶点软件股份有限公司

目录 1安装Tomcat (3) 2配置Tomcat (5) 2.1配置环境变量 (6) 2.2配置数据源 (8) 2.2.1配置单方案数据源 (8) 2.2.2配置多方案数据源 (12) 2.2.3系统参数基本配置说明: (12) 2.3访问系统 (12)

1安装Tomcat 在顶点软件公司网站上下载LiveBOS Tomcat的安装文件TomcatSetup.exe,双击进行安装。 图1.1选择安装包语言 图 1.2安装Tomcat第一页

图1.3选择目标路径 图 1.4选择Tomcat安装文件夹

图 1.5安装LiveBOS Tomcat 图 1.6安装结束,按完成后打开Tomcat文件目录 2配置Tomcat 在这一章节里我们向大家介绍如何配置服务器Tomcat,在本章里所提到的Tomcat均为5.0版本;SDK是1.4.2版本,位于C盘根目录。

2.1配置环境变量 为了使用LiveBOS,用户的机器上必须安装JDK或者JRE或者SDK(V ersion1.4或者以上版本),同时设置系统的环境变量,以便Tomcat可以使用到这个JRE(用户可以去https://www.360docs.net/doc/b116120742.html,/downloads/下载所需要的JDK或是JRE文件). 右击“我的电脑”—>“属性”—>“高级”—>“环境变量”,进入环境变量设计窗口(图2.1),在这里配置Windows的环境变量。 图 2.1准备配置wind ows系统属性中的环境变量 配置的过程分为三步: 新增加JA V A_HOME变量: 名称: JA V A_HOME 值: X:\jdk(即JDK或者JRE路径) 效果如图2.2:

Java命名和目录接口

Java命名和目录接口(Java Naming and Directory Interface ,JNDI)是用于从Java应用程序中访问名称和目录服务的一组API。命名服务即将名称与对象相关联,以便能通过相应名称访问这些对象。而目录服务即其对象具有属性及名称的命名服务。 命名或目录服务允许您集中管理共享信息的存储,这在网络应用程序中很重要,因为它可以使这类应用程序更加一致和易于管理。例如,可以将打印机配置存储在目录服务中,这样所有与打印机相关的应用程序都能够使用它。 本文是一份代码密集型的快速入门指南,让您开始了解和使用JNDI。它: ?提供对JNDI的综述。 ?描述JNDI的特性。 ?提供使用JNDI开发应用程序过程中的体验。 ?说明如何使用JNDI访问LDAP 服务器,比如Sun ONE Directory Server 。 ?说明如何使用JNDI 访问J2EE 服务。 ?提供示例代码,您可以对其进行修改,以用于您自己的应用程序。 JNDI综述 我们所有人每天都在不自知的情况下使用命名服务。例如,当您在浏览器中输入URL http://java.su https://www.360docs.net/doc/b116120742.html,时,域名系统(Domain Name System ,DNS)将这个以符号表示的URL转换为一个通信标识符(IP地址)。在命名系统中,对象的范围可以从位于DNS记录中的名称变动到应用程序服务器中的企业JavaBeans组件(Enterprise JavaBeans Components ,EJBs),还可以到轻量级目录访问协议(Li ghtweight Directory Access Protocol ,LDAP)中的用户配置文件。 目录服务是命名服务的自然扩展。二者的关键区别在于,目录服务允许属性(比如用户的电子邮件地址)与对象相关联,而命名服务则不然。这样,使用目录服务时,您可以基于对象的属性来搜索它们。JNDI 允许您访问文件系统中的文件,定位远程RMI注册表中的对象,访问诸如LDAP这样的目录服务,并定位网络上的EJB。 很多应用程序选择使用JNDI都可以收到良好的效果,比如LDAP客户端、应用程序启动器、类浏览器、网络管理实用工具,或者甚至是地址簿。 JNDI架构 JNDI架构提供了一个标准的、与命名系统无关的API,这个API构建在特定于命名系统的驱动程序之上。 这一层帮助把应用程序和实际的数据源隔离开来,因此无论应用程序是访问LDAP、RMI、DNS还是其他的目录服务,这都没有关系。换句话说,JNDI与任何特定的目录服务实现无关,您可以使用任何目录,只要您拥有相应的服务提供程序接口(或驱动程序)即可,如图1所示。

TLQ7.0配置及API使用比较说明

TLQ7.0配置及API使用说明 通过对TLQ7.0的文档学习和实验,发现和以前版本(6.3)的大步一样。配置方式不一样、增加了一些管理机制、API也不兼容。(1)、名词解释 节点:(不再有上级节点和下级节点的说法了) 本地队列:即以前版本中的接收队列。 远程队列:远程队列是跟一个实际的发送队列相映射,远程队列为远方节点的一个本地队列在本地节点的一个逻辑映射,本身不占用物理空间。应用 通过远程队列发送消息到某个远端节点的一个本地队列,事实上是通 过某个发送队列向某个远端节点的一个本地队列进行发送。 队列控制单元:队列控制单元,英文为Queue Control Unit,简称QCU。QCU由发送缓冲区、接收缓冲区、管理进程、监控进程和多个队列(发送 队列和本地队列)构成。 发送进程:发送进程负责QCU内队列消息的发送。每个节点可有多个发送进程,每个发送进程可以负责多个连接。 接收进程:接收进程监听特定的端口,负责从网络上接收消息,并放入到相应的队列中。 。。。。。 (2)、TLQ整体系统结构图、QCU结构图

(TLQ整体系统结构图) 如上图:一个节点由一个或一组QCU、发送进程、接收进程、客户代理进程、发布订阅代理进程、一个监控管理代理进程组成。 (QCU结构图) (3)、运行模式 TLQ提供两种运行模式:Client和DIRECT

1. CLIENT模式:Java应用作为客户端应用,必须首先建立到TLQ Server的网络连接才能进行后续的消息操作; 2. DIRECT模式:Java应用直接运行在TLQ Server上。 如果Java应用作为客户端应用,则客户端应用跟TLQ Server可以运行在同一台的机器上,也可以运行在不同的机器上。 (4)、配置 由于没有相关的控制台,所以本次试验都是手工配置,在LLQHome/etc/下主要有如下几个配置文件: Tlsys.conf------系统配置文件,(节点名、QCU、); tlqcu_qcuname.conf -----QCU配置文件(qcu、发送队列、远程队列、本地队列等); tlqjndi.conf ---jndi配置文件(jsm); tlqcli.conf ------ 客户端配置文件,使用client运行方式时配置; tlclient.properties ----jms 用于配置应用跟JmsServer(客户端代理)进行交互的相关信息 (5)、API的使用 TLQ提供两种JAVA编程接口类型:BaseClass和JMS。 BaseClass编程代码介绍: BaseClass可以用于JNI和Client方式,使用的API接口都是一样的。 发送消息流程: 1.建立跟Server的连接 设置连接上下文,并设置连接的属性 TlqConnContext conncontext=new TlqConnContext(); 建立连接 TlqConnection conn=new TlqConnection(xxxxx); 2.打开队列控制单元 TlqQCU qcu=conn.OpenQCU(xxxxx);

相关文档
最新文档