`
wangyanlong0107
  • 浏览: 481499 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

【转】JNDI学习总结(一)——JNDI数据源的配置

 
阅读更多

http://blog.csdn.net/samjustin1/article/details/52265796

 

一、数据源的由来

  在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 <!-- Global JNDI resources
 2        Documentation at /docs/jndi-resources-howto.html
 3   -->
 4   <GlobalNamingResources>
 5     <!-- Editable user database that can also be used by
 6          UserDatabaseRealm to authenticate users
 7     -->
 8     <Resource name="UserDatabase" auth="Container"
 9               type="org.apache.catalina.UserDatabase"
10               description="User database that can be updated and saved"
11               factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
12               pathname="conf/tomcat-users.xml" />
13 <!--
14   |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,
15            为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。
16   |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
17   |- type:此名称所代表的类型,现在为javax.sql.DataSource
18   |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数
19   |- maxIdle:表示一个数据库在此服务器上维持的最小连接数
20   |- maxWait:最大等待时间。10000毫秒
21   |- username:数据库连接的用户名
22   |- password:数据库连接的密码
23   |- driverClassName:数据库连接的驱动程序
24   |- url:数据库连接的地址
25 -->
26 <!--配置Oracle数据库的JNDI数据源-->
27 <Resource 
28         name="jdbc/oracle"
29         auth="Container" 
30         type="javax.sql.DataSource"
31         maxActive="100" 
32         maxIdle="30" 
33         maxWait="10000"
34         username="lead_oams" 
35         password="p"
36         driverClassName="oracle.jdbc.driver.OracleDriver"
37         url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>
38 
39 <!--配置MySQL数据库的JNDI数据源-->
40 <Resource 
41         name="jdbc/mysql"
42         auth="Container" 
43         type="javax.sql.DataSource"
44         maxActive="100" 
45         maxIdle="30" 
46         maxWait="10000"
47         username="root" 
48         password="root"
49         driverClassName="com.mysql.jdbc.Driver"
50         url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&amp;characterEncoding=utf-8"/>
51 
52 <!--配置SQLServer数据库的JNDI数据源-->
53 <Resource 
54         name="jdbc/sqlserver"
55         auth="Container" 
56         type="javax.sql.DataSource"
57         maxActive="100" 
58         maxIdle="30" 
59         maxWait="10000"
60         username="sa" 
61         password="p@ssw0rd"
62         driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
63         url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>
64 
65   </GlobalNamingResources>
复制代码

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

2.2、全局jndi数据源测试

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

  

  web.xml的配置如下:

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app version="2.5" 
 3     xmlns="http://java.sun.com/xml/ns/javaee" 
 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 5     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
 6     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 7   <welcome-file-list>
 8     <welcome-file>index.jsp</welcome-file>
 9   </welcome-file-list>
10   
11   <!-- 
12   JNDI配置的资源引用:
13   • res-ref-name:表示引用资源的名称
14   • res-type:此资源对应的类型为javax.sql.DataSource
15   • res-auth:容器授权管理
16    -->
17    <!--Oracle数据库JNDI数据源引用 -->
18   <resource-ref>
19       <description>Oracle DB Connection</description>
20       <res-ref-name>oracleDataSource</res-ref-name>
21       <res-type>javax.sql.DataSource</res-type>
22       <res-auth>Container</res-auth>
23  </resource-ref>
24   
25   <!--MySQL数据库JNDI数据源引用 -->
26   <resource-ref>
27       <description>MySQL DB Connection</description>
28       <res-ref-name>mysqlDataSource</res-ref-name>
29       <res-type>javax.sql.DataSource</res-type>
30       <res-auth>Container</res-auth>
31   </resource-ref>
32   
33   <!--SQLServer数据库JNDI数据源引用 -->
34   <resource-ref>
35       <description>SQLServer DB Connection</description>
36       <res-ref-name>sqlserverDataSource</res-ref-name>
37       <res-type>javax.sql.DataSource</res-type>
38       <res-auth>Container</res-auth>
39   </resource-ref>
40   
41 </web-app>
复制代码

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

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

  

  编辑JNDITest.xml,配置如下:

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!--
 3     jndi配置方法(tomcat):
 4     将此文件放置在tomcat\conf\Catalina\localhost下(没有目录就新建)
 5  -->
 6 <!--映射JNDITest项目的虚拟目录-->
 7 <Context docBase="D:/MyEclipse8.5/workspace/JNDITest/WebRoot" debug="0" reloadable="false">
 8     <!--引用Oracle数据库的JNDI数据源-->
 9     <ResourceLink name="oracleDataSource" global="jdbc/oracle" type="javax.sql.DataSource"/>
10     <!--引用mysql数据库的JNDI数据源-->
11     <ResourceLink name="mysqlDataSource" global="jdbc/mysql" type="javax.sql.DataSource"/>
12     <!--引用sqlserver数据库的JNDI数据源-->
13     <ResourceLink name="sqlserverDataSource" global="jdbc/sqlserver" type="javax.sql.DataSource"/>
14 </Context>
复制代码

  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 <!DOCTYPE HTML>
  5 <html>
  6   <head>
  7     <title>JNDI数据源测试</title>
  8   </head>
  9   
 10   <body>
 11         <%
 12             Connection connOracle = null;
 13             try {
 14                 //1、初始化名称查找上下文
 15                 Context ctx = new InitialContext();
 16                 //InitialContext ctx = new InitialContext();亦可 
 17                 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名
 18                 /*
 19                 DataSource名在web.xml文件中的<res-ref-name>oracleDataSource</res-ref-name>进行了配置
 20                  <!--Oracle数据库JNDI数据源引用 -->
 21                  <resource-ref>
 22                       <description>Oracle DB Connection</description>
 23                       <res-ref-name>oracleDataSource</res-ref-name>
 24                       <res-type>javax.sql.DataSource</res-type>
 25                       <res-auth>Container</res-auth>
 26                  </resource-ref>
 27                 */
 28                 DataSource ds = (DataSource)ctx.lookup("java:comp/env/oracleDataSource");
 29                 //3、通过DataSource取得一个连接
 30                 connOracle = ds.getConnection();
 31                 out.println("Oracle Connection pool connected !!");
 32                 //4、操作数据库
 33             } catch (NamingException e) {
 34                 System.out.println(e.getMessage());
 35             } catch (SQLException e) {
 36                 e.printStackTrace();
 37             } finally {
 38                 //5、关闭数据库,关闭的时候是将连接放回到连接池之中
 39                 connOracle.close();
 40             }
 41         %>
 42         <hr/>
 43         <%
 44             Connection connMySQL = null;
 45             try {
 46                 //1、初始化名称查找上下文
 47                 Context ctx = new InitialContext();
 48                 //InitialContext ctx = new InitialContext();亦可 
 49                 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名
 50                 /*
 51                 DataSource名在web.xml文件中的<res-ref-name>mysqlDataSource</res-ref-name>进行了配置
 52                   <!--MySQL数据库JNDI数据源引用 -->
 53                   <resource-ref>
 54                       <description>MySQL DB Connection</description>
 55                       <res-ref-name>mysqlDataSource</res-ref-name>
 56                       <res-type>javax.sql.DataSource</res-type>
 57                       <res-auth>Container</res-auth>
 58                   </resource-ref>
 59                 */
 60                 DataSource ds = (DataSource)ctx.lookup("java:comp/env/mysqlDataSource");
 61                 //3、通过DataSource取得一个连接
 62                 connMySQL = ds.getConnection();
 63                 out.println("MySQL Connection pool connected !!");
 64                 //4、操作数据库
 65             } catch (NamingException e) {
 66                 System.out.println(e.getMessage());
 67             } catch (SQLException e) {
 68                 e.printStackTrace();
 69             } finally {
 70                 //5、关闭数据库,关闭的时候是将连接放回到连接池之中
 71                 connMySQL.close();
 72             }
 73         %>
 74         <hr/>
 75         <%
 76             Connection connSQLServer = null;
 77             try {
 78                 //1、初始化名称查找上下文
 79                 Context ctx = new InitialContext();
 80                 //InitialContext ctx = new InitialContext();亦可 
 81                 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面的是DataSource名
 82                 /*
 83                 DataSource名在web.xml文件中的<res-ref-name>sqlserverDataSource</res-ref-name>进行了配置
 84                 <!--SQLServer数据库JNDI数据源引用 -->
 85                   <resource-ref>
 86                       <description>SQLServer DB Connection</description>
 87                       <res-ref-name>sqlserverDataSource</res-ref-name>
 88                       <res-type>javax.sql.DataSource</res-type>
 89                       <res-auth>Container</res-auth>
 90                   </resource-ref>
 91                 */
 92                 DataSource ds = (DataSource)ctx.lookup("java:comp/env/sqlserverDataSource");
 93                 //3、通过DataSource取得一个连接
 94                 connSQLServer = ds.getConnection();
 95                 out.println("SQLServer Connection pool connected !!");
 96                 //4、操作数据库
 97             } catch (NamingException e) {
 98                 System.out.println(e.getMessage());
 99             } catch (SQLException e) {
100                 e.printStackTrace();
101             } finally {
102                 //5、关闭数据库,关闭的时候是将连接放回到连接池之中
103                 connSQLServer.close();
104             }
105         %>
106     </body>
107 </html>
复制代码

  运行结果如下:

  

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

复制代码
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%--引入JSTL标签库 --%>
 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 4 <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
 5 <!DOCTYPE HTML>
 6 <html>
 7   <head>
 8     <title>JNDI数据源连接测试</title>
 9   </head>
10   
11   <body>
12           <h3>Oracle JNDI数据源测试</h3>
13           <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>
14         <sql:query var="rs" dataSource="oracleDataSource">
15             <%--Oracle JNDI数据源测试 SQL--%>
16             SELECT * FROM LEAD_OAMS_DBSOURCES
17         </sql:query>
18         <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>
19         <c:forEach var="row" items="${rs.rows}">
20             <%--${row.字段名}获取字段的值--%>
21             ${row.RESOURCEID}---${row.DBSOURCE_NAME}---${row.DBSOURCE_TYPE}<br/>
22         </c:forEach>
23         <hr/>
24         <h3>MySQL JNDI数据源测试</h3>
25         <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>
26         <sql:query var="rs" dataSource="mysqlDataSource">
27             <%--MySQL JNDI数据源测试 SQL--%>
28              select * from ld_user
29         </sql:query>
30         <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>
31         <c:forEach var="row" items="${rs.rows}">
32             <%--${row.字段名}获取字段的值--%>
33             ${row.id}---${row.username}---${row.password}<br/>
34         </c:forEach>
35         <hr/>
36         <h3>SQLServer JNDI数据源测试</h3>
37         <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>
38         <sql:query var="rs" dataSource="sqlserverDataSource">
39             <%--SQLServer JNDI数据源测试 SQL--%>
40             select * from t_demo
41         </sql:query>
42         <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>
43         <c:forEach var="row" items="${rs.rows}">
44             <%--${row.字段名}获取字段的值--%>
45             ${row.id}---${row.time}<br/>
46         </c:forEach>
47   </body>
48 </html>
复制代码

  运行结果如下:

  

2.3、非全局jndi配置

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

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

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

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

  在tomcat目录下的\conf\Catalina\localhost目录下创建一个JNDITest.xml文件,如下图所示:

  

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

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!--
 3     jndi配置方法(tomcat):
 4     将此文件放置在tomcat\conf\Catalina\localhost下(没有目录就新建)
 5  -->
 6 
 7 <Context docBase="D:/MyEclipse8.5/workspace/JNDITest/WebRoot" debug="0" reloadable="false">
 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 <!--配置Oracle数据库的JNDI数据源-->
22 <Resource 
23         name="oracleDataSource"
24         auth="Container" 
25         type="javax.sql.DataSource"
26         maxActive="100" 
27         maxIdle="30" 
28         maxWait="10000"
29         username="lead_oams" 
30         password="p"
31         driverClassName="oracle.jdbc.driver.OracleDriver"
32         url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>
33 
34 <!--配置MySQL数据库的JNDI数据源-->
35 <Resource 
36         name="mysqlDataSource"
37         auth="Container" 
38         type="javax.sql.DataSource"
39         maxActive="100" 
40         maxIdle="30" 
41         maxWait="10000"
42         username="root" 
43         password="root"
44         driverClassName="com.mysql.jdbc.Driver"
45         url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&amp;characterEncoding=utf-8"/>
46 
47 <!--配置SQLServer数据库的JNDI数据源-->
48 <Resource 
49         name="sqlserverDataSource"
50         auth="Container" 
51         type="javax.sql.DataSource"
52         maxActive="100" 
53         maxIdle="30" 
54         maxWait="10000"
55         username="sa" 
56         password="p@ssw0rd"
57         driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
58         url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>
59 </Context>
复制代码

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

复制代码
 1  <!-- 
 2   JNDI配置的资源引用:
 3   • res-ref-name:表示引用资源的名称
 4   • res-type:此资源对应的类型为javax.sql.DataSource
 5   • res-auth:容器授权管理
 6    -->
 7    <!--Oracle数据库JNDI数据源引用 -->
 8   <resource-ref>
 9       <description>Oracle DB Connection</description>
10       <res-ref-name>oracleDataSource</res-ref-name>
11       <res-type>javax.sql.DataSource</res-type>
12       <res-auth>Container</res-auth>
13  </resource-ref>
14   
15   <!--MySQL数据库JNDI数据源引用 -->
16   <resource-ref>
17       <description>MySQL DB Connection</description>
18       <res-ref-name>mysqlDataSource</res-ref-name>
19       <res-type>javax.sql.DataSource</res-type>
20       <res-auth>Container</res-auth>
21   </resource-ref>
22   
23   <!--SQLServer数据库JNDI数据源引用 -->
24   <resource-ref>
25       <description>SQLServer DB Connection</description>
26       <res-ref-name>sqlserverDataSource</res-ref-name>
27       <res-type>javax.sql.DataSource</res-type>
28       <res-auth>Container</res-auth>
29   </resource-ref>
复制代码

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

分享到:
评论

相关推荐

    JNDI学习总结(一)——JNDI数据源的配置.html

    JNDI学习总结,JNDI配置数据源,资料详细,适合初学者

    java开发——留言系统

    可能需要修改sunny.guestbook.util包中的DBConn类,本网站采用的是连接池技术连接数据库,需要在weblogic控制台中创建一个JNDI名为myjndi的数据源,连接oracle数据库,配置过程和创建SQL Server的数据源类似。...

    jpivot学习总结.doc

    1. jpivot加入其它应用中 解压jpivot.war 文件,在你的应用...在一个 JSP 页面当中,如果要使用 JPivot 标签库,除了要配置相关的配置文件外,我们需要在 JSP 头的位置声明对 JPivot 标签库的引用,引用方法如下: ...

    Spring.3.x企业应用开发实战(完整版).part2

    8.4.2 获取JNDI数据源 8.4.3 Spring的数据源实现类 8.5 小结 第9章 Spring的事务管理 9.1 数据库事务基础知识 9.1.1 何为数据库事务 9.1.2 数据并发的问题 9.1.3 数据库锁机制 9.1.4 事务隔离级别 9.1.5 JDBC对事务...

    Spring3.x企业应用开发实战(完整版) part1

    8.4.2 获取JNDI数据源 8.4.3 Spring的数据源实现类 8.5 小结 第9章 Spring的事务管理 9.1 数据库事务基础知识 9.1.1 何为数据库事务 9.1.2 数据并发的问题 9.1.3 数据库锁机制 9.1.4 事务隔离级别 9.1.5 JDBC对事务...

    JAVA上百实例源码以及开源项目源代码

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JSP高级编程(全)

    3.3 EJB 开发实例封装数据源 3.4 本章小结 第4 章 JSP 与J2EE 分布式处理技术 4.1 J2EE 和分布式处理技术 4.2 远程方法调用RMI 技术 4.3 CORBA 技术 4.4 JNDI 技术 4.5 本章小结6 第二部分 JSP 技术和XML 技术 第5 ...

    JSP高级编程          

    3.3 EJB 开发实例封装数据源 3.4 本章小结 第4 章 JSP 与J2EE 分布式处理技术 4.1 J2EE 和分布式处理技术 4.2 远程方法调用RMI 技术 4.3 CORBA 技术 4.4 JNDI 技术 4.5 本章小结6 第二部分 JSP 技术和XML 技术 第5 ...

    java源码包---java 源码 大量 实例

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    Java源码包100个设计实例.zip

    Java源码包100个设计实例, 大量 实例,可以作为你的学习设计参考。 实例如下: Applet钢琴模拟程序java源码 Calendar万年历 copass源代码.rar DataBuffer在Java中使用ADO.NET.rar EJB 模拟银行ATM流程及操作源代码 ...

    java源码包2

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    JAVA上百实例源码以及开源项目

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java源码包3

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    java源码包4

    5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个...

    将 Flex 集成到 Java EE 应用程序的最佳实践(完整源代码)

    例如,对于一个 EJB 来说,lookup() 方法应该通过 JNDI 查找返回远程接口。无论应用程序结构如何,我们的最终目标是向 BlazeDS 返回一个 FlexService 的实例对象。 回页首 开发 Flex 客户端 首先安装...

    +Flex+集成到+Java+EE+应用程序的最佳实践(完整源代码)

    例如,对于一个 EJB 来说,lookup() 方法应该通过 JNDI 查找返回远程接口。无论应用程序结构如何,我们的最终目标是向 BlazeDS 返回一个 FlexService 的实例对象。 回页首 开发 Flex 客户端 首先安装...

    Java数据库编程宝典2

    目录 前言 第1部分 介绍数据库、SQL和JDBC 第1章 关系型数据库 1.1 理解关系型数据库管理系统 1.1.1 关系模型 1.1.2 Codd法则 1.1.3 表、行、列和关键字 ... 17.3 使用Java XML API——Xerces和JDOM ...

Global site tag (gtag.js) - Google Analytics