JNDI数据源的配置详解

JNDI数据源的配置详解
JNDI数据源的配置详解

JNDI数据源的配置

一、数据源的由来

在Java开发中,使用JDBC操作数据库的四个步骤如下:

①加载数据库驱动程序(Class.forName("数据库驱动类");)

②连接数据库(Connection con = DriverManager.getConnection();)

③操作数据库(PreparedStatement stat = con.prepareStatement(sql);stat.executeQuery();)

④关闭数据库,释放连接(con.close();)

也就是说,所有的用户都需要经过此四步进行操作,但是这四步之中有三步(①加载数据库驱动程序、②连接数据库、④关闭数据库,释放连接)对所有人都是一样的,而所有人只有在操作数据库上是不一样,那么这就造成了性能的损耗。

那么最好的做法是,准备出一个空间,此空间里专门保存着全部的数据库连接,以后用户用数据库操作的时候不用再重新加载驱动、连接数据库之类的,而直接从此空间中取走连接,关闭的时候直接把连接放回到此空间之中。

那么此空间就可以称为连接池(保存所有的数据库连接),但是如果要想实现此空间的话,则必须有一个问题要考虑?

1、如果没有任何一个用户使用连接,那么那么应该维持一定数量的连接,等待用户使用。

2、如果连接已经满了,则必须打开新的连接,供更多用户使用。

3、如果一个服务器就只能有100个连接,那么如果有第101个人过来呢?应该等待其他用户释放连接

4、如果一个用户等待时间太长了,则应该告诉用户,操作是失败的。

如果直接用程序实现以上功能,则会比较麻烦,所以在Tomcat 4.1.27之后,在服务器上就直接增加了数据源的配置选项,直接在服务器上配置好数据源连接池即可。在J2EE服务器上保存着一个数据库的多个连接。每一个连接通过DataSource 可以找到。DataSource被绑定在了JNDI树上(为每一个DataSource提供一个名字)客户端通过名称找到在JNDI树上绑定的DataSource,再由DataSource找到一个连接。如下图所示:

那么在以后的操作中,除了数据库的连接方式不一样之外,其他的所有操作都一样,只是关闭的时候不是彻底地关闭数据库,而是把数据库的连接放回到连接池中去。

如果要想使用数据源的配置,则必须配置虚拟目录,因为此配置是在虚拟目录之上起作用的。需要注意的是,如果要想完成以上的功能,在Tomcat服务器上一定要有各个数据库的驱动程序。

二、JNDI+Tomcat配置数据源的两种方式

2.1、全局jndi配置

此种配置需要在server.xml中配置数据源,具体的配置步骤如下:

1、在tomcat服务器的lib目录下加入数据库连接的驱动jar包

2、修改tomcat服务器的conf目录下server.xml配置文件

打开server.xml配置文件,可以看到里面自带的一个全局JNDI配置,如下图所示:

编辑server.xml文件,添加全局JNDI数据源配置,配置如下:

1

4

5

8

9type="https://www.360docs.net/doc/ac13980205.html,erDatabase"

10description="User database that can be updated and saved"

11factory="https://www.360docs.net/doc/ac13980205.html,ers.MemoryUserDatabaseFactory"

12pathname="conf/tomcat-users.xml"/>

13

26

27

28name="jdbc/oracle"

29auth="Container"

30type="javax.sql.DataSource"

31maxActive="100"

32maxIdle="30"

33maxWait="10000"

34username="lead_oams"

35password="p"

36driverClassName="oracle.jdbc.driver.OracleDriver"

37url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>

38

39

40

41name="jdbc/mysql"

42auth="Container"

43type="javax.sql.DataSource"

44maxActive="100"

45maxIdle="30"

46maxWait="10000"

47username="root"

48password="root"

49driverClassName="com.mysql.jdbc.Driver"

50url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&characterEncoding=utf-8"/> 51

52

53

54name="jdbc/sqlserver"

55auth="Container"

56type="javax.sql.DataSource"

57maxActive="100"

58maxIdle="30"

59maxWait="10000"

60username="sa"

61password="p@ssw0rd"

62driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"

63url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>

64

65

经过以上的两个步骤,全局JNDI数据源就配置好了,在上述的server.xml文件中,分别配置了Oracle、MySQL、SQLServer这三种数据库的全局JNDI数据源。

2.2、全局jndi数据源测试

1、创建一个JNDI测试项目JNDITest,在web.xml中添加JNDI配置的资源引用

web.xml的配置如下:

1

2

3xmlns="https://www.360docs.net/doc/ac13980205.html,/xml/ns/javaee"

4xmlns:xsi="https://www.360docs.net/doc/ac13980205.html,/2001/XMLSchema-instance"

5xsi:schemaLocation="https://www.360docs.net/doc/ac13980205.html,/xml/ns/javaee

6https://www.360docs.net/doc/ac13980205.html,/xml/ns/javaee/web-app_2_5.xsd">

7

8index.jsp

9

10

11

17

18

19Oracle DB Connection

20oracleDataSource

21javax.sql.DataSource

22Container

23

24

25

26

27MySQL DB Connection

28mysqlDataSource

29javax.sql.DataSource

30Container

31

32

33

34

35SQLServer DB Connection

36sqlserverDataSource

37javax.sql.DataSource

38Container

39

40

41

2、映射JNDITest项目的虚拟目录

在tomcat的\conf\Catalina\localhost下(没有目录就新建)创建一个xml文件,文件名必须和项目名相同,测试JNDI 数据源的web项目的项目名称是:JNDITest,所以xml文件的命名就叫JNDITest.xml

编辑JNDITest.xml,配置如下:

1

2

6

7

8

9

10

11

12

13 14

3、测试从JNDI数据源获取数据库连接

配置完数据源连接池之后,就可以按照以下的步骤进行访问:

? 初始化名称查找上下文

?通过JNDI名称找到DataSource

? 通过DataSource取得一个连接

? 操作数据库

? 关闭数据库,关闭的时候是将连接放回到连接池之中

jsp测试页面代码如下:

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

2 <%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>

3

4

5

6

7JNDI数据源测试

8

9

10

11<%

12Connection connOracle = null;

13try {

14//1、初始化名称查找上下文

15Context ctx = new InitialContext();

16//InitialContext ctx = new InitialContext();亦可

17//2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名

18/*

19DataSource名在web.xml文件中的oracleDataSource进行了配置

20

21

22Oracle DB Connection

23oracleDataSource

24javax.sql.DataSource

25Container

26

27*/

28DataSource ds = (DataSource)ctx.lookup("java:comp/env/oracleDataSource");

29//3、通过DataSource取得一个连接

30connOracle = ds.getConnection();

31out.println("Oracle Connection pool connected !!");

32//4、操作数据库

33} catch (NamingException e) {

34System.out.println(e.getMessage());

35} catch (SQLException e) {

36 e.printStackTrace();

37} finally {

38//5、关闭数据库,关闭的时候是将连接放回到连接池之中

39connOracle.close();

40}

41%>

42


43<%

44Connection connMySQL = null;

45try {

46//1、初始化名称查找上下文

47Context ctx = new InitialContext();

48//InitialContext ctx = new InitialContext();亦可

49//2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名

50/*

51DataSource名在web.xml文件中的mysqlDataSource进行了配置

52

53

54MySQL DB Connection

55mysqlDataSource

56javax.sql.DataSource

57Container

58

59*/

60DataSource ds = (DataSource)ctx.lookup("java:comp/env/mysqlDataSource");

61//3、通过DataSource取得一个连接

62connMySQL = ds.getConnection();

63out.println("MySQL Connection pool connected !!");

64//4、操作数据库

65} catch (NamingException e) {

66System.out.println(e.getMessage());

67} catch (SQLException e) {

68 e.printStackTrace();

69} finally {

70//5、关闭数据库,关闭的时候是将连接放回到连接池之中

71connMySQL.close();

72}

73%>

74


75<%

76Connection connSQLServer = null;

77try {

78//1、初始化名称查找上下文

79Context ctx = new InitialContext();

80//InitialContext ctx = new InitialContext();亦可

81//2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面的是DataSource名

82/*

83DataSource名在web.xml文件中的sqlserverDataSource进行了配置

84

85

86SQLServer DB Connection

87sqlserverDataSource

88javax.sql.DataSource

89Container

90

91*/

92DataSource ds = (DataSource)ctx.lookup("java:comp/env/sqlserverDataSource");

93//3、通过DataSource取得一个连接

94connSQLServer = ds.getConnection();

95out.println("SQLServer Connection pool connected !!");

96//4、操作数据库

97} catch (NamingException e) {

98System.out.println(e.getMessage());

99} catch (SQLException e) {

100 e.printStackTrace();

101} finally {

102//5、关闭数据库,关闭的时候是将连接放回到连接池之中

103connSQLServer.close();

104}

105%>

106

107

运行结果如下:

除了可以在Jsp页面中编写java代码测试JNDI数据源连接之外,还有一种比较简单的方式就是使用JSTL标签库提供的sql标签进行测试,测试代码如下:

1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

2 <%--引入JSTL标签库--%>

3 <%@ taglib uri="https://www.360docs.net/doc/ac13980205.html,/jsp/jstl/core" prefix="c"%>

4 <%@ taglib uri="https://www.360docs.net/doc/ac13980205.html,/jsp/jstl/sql" prefix="sql"%>

5

6

7

8JNDI数据源连接测试

9

10

11

12

Oracle JNDI数据源测试

13<%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource 属性指明使用的数据源--%>

14

15<%--Oracle JNDI数据源测试SQL--%>

16SELECT * FROM LEAD_OAMS_DBSOURCES

17

18<%--使用c:forEach标签遍历查询结果集rs中的每一行--%>

19

20<%--${row.字段名}获取字段的值--%>

21${row.RESOURCEID}---${row.DBSOURCE_NAME}---${row.DBSOURCE_TYPE}

22

23


24

MySQL JNDI数据源测试

25<%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>

26

27<%--MySQL JNDI数据源测试SQL--%>

28select * from ld_user

29

30<%--使用c:forEach标签遍历查询结果集rs中的每一行--%>

31

32<%--${row.字段名}获取字段的值--%>

33${row.id}---${https://www.360docs.net/doc/ac13980205.html,ername}---${row.password}

34

35


36

SQLServer JNDI数据源测试

37<%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>

38

39<%--SQLServer JNDI数据源测试SQL--%>

40select * from t_demo

41

42<%--使用c:forEach标签遍历查询结果集rs中的每一行--%>

43

44<%--${row.字段名}获取字段的值--%>

45${row.id}---${row.time}

46

47

48

运行结果如下:

2.3、非全局jndi配置

非全局JNDI数据源是针对某一个Web项目配置的数据源,具体的配置步骤如下:

1、在tomcat服务器的lib目录下加入数据库连接的驱动jar包

2、针对具体的web项目映射虚拟目录,然后在虚拟目录映射的配置文件中配置JNDI数据源

还是以上面的JNDITest项目为例子进行说明

在tomcat目录下的\conf\Catalina\localhost目录下创建一个JNDITest.xml文件

编辑JNDITest.xml文件,添加对JNDITest项目的虚拟目录的映射和JNDI数据源的配置

1

2

6

7 8

9|- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,

10为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。11|- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效

12|- type:此名称所代表的类型,现在为javax.sql.DataSource

13|- maxActive:表示一个数据库在此服务器上所能打开的最大连接数

14|- maxIdle:表示一个数据库在此服务器上维持的最小连接数

15|- maxWait:最大等待时间。10000毫秒

16|- username:数据库连接的用户名

17|- password:数据库连接的密码

18|- driverClassName:数据库连接的驱动程序

19|- url:数据库连接的地址

20-->

21

22

23name="oracleDataSource"

24auth="Container"

25type="javax.sql.DataSource"

26maxActive="100"

27maxIdle="30"

28maxWait="10000"

29username="lead_oams"

30password="p"

31driverClassName="oracle.jdbc.driver.OracleDriver"

32url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>

33

34

35

36name="mysqlDataSource"

37auth="Container"

38type="javax.sql.DataSource"

39maxActive="100"

40maxIdle="30"

41maxWait="10000"

42username="root"

43password="root"

44driverClassName="com.mysql.jdbc.Driver"

45url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&characterEncoding=utf-8"/> 46

47

48

49name="sqlserverDataSource"

50auth="Container"

51type="javax.sql.DataSource"

52maxActive="100"

53maxIdle="30"

54maxWait="10000"

55username="sa"

56password="p@ssw0rd"

57driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver" 58url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/> 59

3、在web项目的web.xml文件中引用配置好的JNDI数据源

1

7

8

9Oracle DB Connection

10oracleDataSource

11javax.sql.DataSource

12Container

13

14

15

16

17MySQL DB Connection

18mysqlDataSource

19javax.sql.DataSource

20Container

21

22

23

24

25SQLServer DB Connection

26sqlserverDataSource

27javax.sql.DataSource

28Container

29

经过以上3个步骤,针对具体web项目配置的JNDI数据源就算是配置好了。具体的测试和上述测试全局JNDI数据源的方式是一样的。

本文作者:xdp-gacl

关于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/ac13980205.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)

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/ac13980205.html,e_query_cache=true hibernate.connection.autocommit=true hibernate.jdbc.batch_size=50 hibernate.jdbc.fetch_size=5 applicationContext.xml中配置:

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/ac13980205.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/ac13980205.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/ac13980205.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/ac13980205.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/ac13980205.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);

IDAP安装部署手册

IDAP安装部署手册 浪潮软件集团股份有限公司研发中心 2016.07

1.概述 针对IDAP在Tomcat下的部署过程进行一个简单概述,方便用户进行安装部署。 2.安装部署过程 2.1.将安装包部署到Tomcat 1、将IDAP的安装包复制到Tocmat的webapps目录下。 2、在Tomcat的bin目录下执行startup.sh(Windows下执行startup.bat),启动Tomcat。 3、在Tomcat的bin目录下执行shutdown.sh(Windows下执行shutdown.bat),停止Tomcat。 4、将webapps目录下的war包删除。

2.2.修改Tomcat编码格式 将Tomcat的编码格式改为UTF-8。修改server.xml文件相应端口的Connector 的属性,添加:URIEncoding="UTF-8",如下所示: 2.3.新建mysql数据库 1、验证mysql数据库大小写是否敏感。若大小写敏感,需改成大小写不敏感。编辑mysql安装目录下的https://www.360docs.net/doc/ac13980205.html,f(Windows下是my.ini),在[mysqld]节下添加lower_case_table_names=1,保存退出后重启mysql数据库。需要说明的是:Linux 系统下默认是大小写敏感,Windows下默认是大小写不敏感。 2、新建idap数据库,字符集为utf8 -- UTF-8 Unicode。排序规则为utf8_general_ci。如下图所示: 2.4.配置数据源 1、修改Tomcat的conf目录下的context.xml,在末尾前添加连接池配置,如下所示,其中name为连接池名称,url 为数据库连接url,username 为数据库用户名,password为数据库密码。

(完整版)JAVA中常用英文单词简写释义

关于java ee, ide,jms,jmx,jndi等专业术语的全称问题 这里张孝祥老师只是大致提了下,我通过搜索资料,在这里把它们一一列出,并把最常用的几个已经背下. API (Application Programming Interface) 应用编程接口 JRE (Java Runtime Environment) Java 运行时环境 JDK (Java Development Kit) Java开发工具包 SDK(Software Development Kit, 即软件开发工具包) JVM (Java Virtual Machine) Java虚拟机 JNI (Java Native Interface) Java本地接口 AWT (Abstract Windows Toolekit) 抽象窗口工具箱 JNDI (Java Naming & Directory Interface) JAVA命名目录服务.主要提供的功能是:提供一个目录系统,让其它各地的应用程序在其上面留 下自己的索引,从而满足快速查找和定位分布式应用程序的功能。 JMS (Java Message Service)JAVA消息服务.主要实现各个应用程序之间的通讯.包括点对点和广播. JTA (Java Transcation API) JAVA事务服务.提供各种分布式事务服务.应用程序只需调用其提供的接口即可. JAF (Java Action FrameWork) JAVA安全认证框架.提供一些安全控制方面的框架.让开发者通过各种部署和自定义实现自己的个性安全控制策 略. RMI (Remote Method Interface) 远程方法调用 CVS (Concurrent Versions System) 版本控制器 SVN (Subversion) 版本控制器 TC (Test Case) 测试用例,是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个

(windows)websphere7.0下配置oracle10g数据源

我的配置是: Websphere7.0安装在本机windows下 Oracle10g安装在aix5.3上,IP:192.168.1.2,数据库名zydb 用户DLADM 密码oracle 登录控制台 配置oracle驱动程序路径: 环境->websphere变量找到ORACLE_JDBC_DRIVER_PATH变量

本地机器装了oracle的客户端驱动应该E:\oracle\product\10.2.0\client_1\jdbc\lib里,不知道的可以搜下ojdbc14.jar文件 设置好后点->确定->保存

新建JDBC提供程序 资源->JDBC->JDBC提供程序 在右侧JDBC提供程序新建页面选择JDBC提供程序的作用域: 一般有以下三种作用域: 1.单元 最常规的作用域。在“单元”作用域上定义的资源对于所有节点和服务器都是可见的,除非它们被覆盖了。要查看单元作用域中定义的资源,不要在作用域选择表单中指定服务器或节点名。 2.节点 多数资源类型的缺省作用域。在“节点”作用域上定义的资源覆盖任何在“单元”作用域上定义的重复项,并且对于相同节点上的所有服务器都是可见的,除非它们在该节点上的服务器作用域中被覆盖了。要查看节点作用域中定义的资源,不要指定服务器,但是要在作用域选择表单中选择节点名。

3.服务器 定义资源的最特定作用域。在“服务器”作用域上定义的资源覆盖任何在“单元”作用域或父“节点”作用域上定义的重复资源定义,并且它们仅对于特定服务器是可见的。要查看服务器作用域中定义的资源,在作用域选择表单中指定服务器名和节点名。 可以看出上面三个作用域的范围逐渐递减,并且同名的资源以最小范围的为准。这个有点类似编程语言中变量的作用域。根据上面作用域的范围的描述,在单节点的情况下,一般选用“节点”。如果只有一个应用服务器实例也可以选择“服务器”。在多个节点构成的单元中,可以分别在每个节点上分别定义,也可以选择“单元”作用域一次性定义。 点击“新建”按钮 创建新的JDBC提供程序 数据库类型选址ORACLE 实现类型我现在的是连接池数据源,还有中XA数据源,应该是用于布式事务处理的,不是很懂,next

相关主题
相关文档
最新文档