第六章 Weblogic Server中的JDBC
- 格式:doc
- 大小:174.00 KB
- 文档页数:44
jdbc 概述和作用JDBC(Java Database Connectivity)是Java语言访问关系型数据库的标准API。
通过JDBC,Java程序可以连接、查询和操作各种数据库,如Oracle、MySQL、SQL Server等。
本文将对JDBC 的概述和作用进行详细介绍。
一、概述JDBC是Java平台上与数据库交互的重要组件,它提供了一套标准的接口和方法,使得Java程序能够通过统一的方式与不同的数据库进行通信。
JDBC是一种面向关系型数据库的API,为Java程序员提供了一种方便、安全和高效的方式来处理数据库操作。
JDBC的核心组件包括驱动程序管理器、数据库驱动程序、连接管理器和语句执行器等。
驱动程序管理器负责加载并管理数据库驱动程序,数据库驱动程序是具体数据库厂商提供的实现JDBC接口的类库,连接管理器负责管理数据库连接,语句执行器则用于执行SQL语句并获取结果。
二、作用1. 数据库连接JDBC提供了一种与数据库建立连接的方式,它允许Java程序通过指定数据库的URL、用户名和密码等信息来连接数据库。
通过JDBC连接数据库,Java程序可以执行各种数据库操作,如查询数据、更新数据、插入数据等。
数据库连接是JDBC的基础,也是Java程序与数据库进行交互的起点。
2. 数据库查询JDBC提供了一套统一的接口和方法来执行SQL查询语句,Java程序可以通过JDBC接口向数据库发送查询请求,并获取查询结果。
查询结果可以是一个ResultSet对象,其中包含了查询返回的数据。
Java程序可以通过ResultSet对象来遍历查询结果,并对结果进行处理和展示。
3. 数据库更新除了查询,JDBC还提供了一套接口和方法来执行数据库的更新操作,如插入、更新和删除数据。
Java程序可以使用JDBC接口构建SQL语句,并通过JDBC执行器来执行SQL语句,并获取更新结果。
数据库更新是JDBC的重要功能之一,它使得Java程序能够方便地对数据库进行增删改操作。
Weblogic应用服务器中JDBC的配置过程2.1.3 Weblogic应用服务器中JDBC的配置过程配置SQLServer连接池首先,把sqlserver 3个驱动包拷到下面的路径的目录下C:\bea\jdk142_04\jre\lib,注意这个目录必须和你配置时选择的JDK 目录保持一致。
1、修改配置文件:编辑路径为:C:\bea\user_projects\domains\mydomain下的“startWebLogic.cmd”注意要用记事本编辑。
在文中查找:setCLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLA SSPATH%;%JAVA_HOME%\jre\lib\rt.jar;%WL_HOME%\server\lib\webservices.j ar;%CL ASSPATH%一段程序把下面的代码(也就是把刚才的3个sqlserver驱动文件加载进去)拷进去%JAVA_HOME%\jre\lib\mssqlserver.jar;%JAVA_HOME%\jre\l ib\msbase .jar;%JAVA_HOME%\jre\lib\msutil.jar;改变后的代码:setCLASSPATH=%WEBLOGIC_CLASSPATH%;%POINTBASE_CLA SSPATH%;%JAVA_HOME%\jre\lib\mssqlserver.jar;%JAVA_HOME%\jre\lib\msba se.jar; %JAVA_HOME%\jre\lib\msutil.jar;%JAVA_HOME%\jre\lib\r t.jar;%WL_HO ME%\server\lib\webservices.jar;%CLASSPATH%然后保存。
2、建立连接池。
先启动weblogic服务器,输入此刚才安装设置的用户名,回车;后输入密码,回车。
下面为Weblogic 正常启动的界面。
jdbc的名词解释在现代的软件开发中,Java Database Connectivity(JDBC)是一项十分重要的技术。
JDBC是Java平台上用于访问数据库的一套API,它提供了一种与各种数据库交互的标准方式。
通过JDBC,开发人员可以方便地连接到数据库、执行SQL语句以及处理查询结果。
1. JDBC驱动程序JDBC驱动程序是连接Java程序与数据库之间的桥梁。
它负责与数据库进行通信,并将Java代码转换成数据库可以理解的请求。
不同的数据库供应商会提供相应的JDBC驱动程序,以便与特定数据库进行通信。
开发人员需要根据要访问的数据库类型选择相应的驱动程序。
2. 连接(Connection)JDBC中的Connection是一个与数据库之间的物理连接。
通过Connection对象,可以与数据库建立连接、执行SQL语句、提交或回滚事务等操作。
在使用JDBC之前,开发人员需要先通过DriverManager获取一个Connection对象。
获取Connection时,需要提供数据库的URL、用户名和密码等信息。
3. 语句(Statement)JDBC中的Statement用于执行SQL语句。
通过Statement对象,可以向数据库发送SQL语句的请求,并获取执行结果。
Statement提供了多种方法,用于执行不同类型的SQL语句,如查询(executeQuery)、插入(executeUpdate)等。
在执行SQL语句之前,需要先通过Connection对象创建一个Statement对象。
4. 结果集(ResultSet)ResultSet是JDBC用于获取查询结果的对象。
当执行一个查询语句后,如果有查询结果返回,在执行结果集方法后可以获取到查询结果的数据。
ResultSet提供了诸如getXXX()方法来获取特定字段的值,以及移动游标等操作。
通过ResultSet,可以方便地处理查询结果并将数据展示给用户。
J2EE课程设计及项目实训教学——在Weblogic中配置数据库连接池与数据源1、在Weblogic中为MSSqlServer2000数据库添加JDBC的驱动程序(1)拷贝MSSqlServer2000数据库JDBC驱动程序msutil.jar、mssqlserver.jar和msbase.jar 到Weblogic的C:\bea\weblogic81\server\lib目录下注意:目前的MS JDBC驱动程序的问题(1)不支持“不规则顺序”的查询,特别是在表字段中有text或image字段的时候(2)修改C:\bea\weblogic81\common\bin\commEnv.cmd的环境设置文件并添加自己的环境设置项目注意:对英文版的WebLogic是配置weblogic的启动*.bat文件(在C:\bea\user_projects\domains\workshop下的startWebLogic.cmd)的set CLASSPATH项目中添加MSSqlServer2000数据库JDBC驱动程序的classpath设置。
%WL_HOME%\server\lib\msbase.jar;%WL_HOME%\server\lib\mssqlserver.jar;%WL_ HOME%\server\lib\msutil.jar(3)再启动weblogic服务器,并观察是否出现classpath的路径提示。
2、为SQLServer2000的数据库创建连接池通过连接池实现与数据库的连接,而在程序中通过DataSource来获得连接池中所提供的数据库连接,由于DataSource技术是多线程的,而DriverManager为单线程的。
在WebLogic的管理控制台中(1)点击“配置新的JDBC Connection Pool...”链接,在数据库的类型上选择MS SQL Server,而在DataBase Driver上选择“Microsoft MS SQL Server Drive(Type 4)Version2000”。
关于weblogicJDBC的配置和防火墙配置的关系关于weblogic JDBC的配置和防火墙配置的关系1描述在部署weblogic应用的时候,如果在网络结构中,启动weblogic服务的物理主机和数据库服务器之间存在防火墙设备,并且通过配置JDBC与数据库相连,则需要考虑下面的问题。
防火墙设备从整个网络的安全角度、网络流量角度考虑,有这样一个功能:设置一个连接超时参数,设为(timeout),如果经过该防火墙的长连接的IDLE 时间达到timeout设置的时间,防火墙会认为该连接为非法,主动从连接池中清理掉;这种处理不会影响weblogic的JDBC连接状态(通过weblogic的console 中的JDBC可以验证),也不会影响数据库中的session(通过数据库的管理工具可以验证);所以如果对于需要保持长连接的应用来说,需要考虑具体的配置参数,使这种情况不会发生。
2配置描述防火墙当前的timeout时间为432000秒(5天)。
目前weblogic的JDBC配置为:初始连接数:2~5个最大连接数:10个每次增加连接数:1个采用动态调整JDBC连接,允许每搁15分钟不采用定时刷新JDBC的策略3存在隐患描述目前防火墙设置的timeout为5天,从网络安全上来说,并不是一种好的方法。
例如有一些非法连接进入,这样,该连接可以一直存在于网络中,会占用网络带宽,并为黑客提供了网络环境。
(NetScreen、Nokia、Pix等防火墙默认设置为1小时)目前设置的weblogic jdbc连接参数表明,需要若干个初始连接,并提供动态管理JDBC连接的功能;不提供定时刷新JDBC连接的功能。
有这样一种情况:单位放长假,6~7天,在放假前没有停掉weblogic服务,并且在假期中没有人通过JDBC访问数据库,这样,初始数设置的JDBC长连接会一直保留,并且在防火墙中的状态一直为IDLE,当IDLE时间到了5天,防火墙会主动将该连接断掉,但weblogic不会感知到这一变化。
配置 JDBC 数据源目的本教程将向您介绍为 Oracle WebLogic Server 实例配置数据源的步骤。
在完成本教程的学习后,您应该能够:创建 JDBC 数据源在服务器的 Java 命名和目录接口 (JNDI) 树中找到 JDBC数据源使用简单 Web 应用程序对 JDBC 数据源的使用进行测试所需时间大约 30 分钟主题本 OBE 教程包括下列主题:概述情景在 Oracle 数据库中设置模式启动 Oracle WebLogic Server 实例配置 JDBC 数据源总结相关信息查看屏幕截图将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。
(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。
)注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。
通过提供的屏幕截图,您可以了解如何配置并管理 Oracle WebLogic Server 中的特定功能,但这些屏幕截图不能反映用户的具体环境。
概述数据源对象支持 Java Database Connectivity (JDBC) 客户端从 JDBC 池获取DBMS 连接。
JDBC 数据源中的连接池包含一组由应用程序保留、使用并在随后释放入池中的 JDBC 连接。
连接池和其中的连接在连接池注册的时候进行创建。
连接池通常在启动 WebLogic Server 或将数据源部署到新目标时进行注册。
在本 OBE 中,您将创建一个连接到 Oracle 数据库的 dizzyworldDS 数据源。
返回主题列表情景您是 Dizzyworld Corporation 的应用服务器管理员。
您已经为您的企业安装并配置了 Oracle WebLogic Server。
有关如何安装并配置 Oracle WebLogic Server 的信息,请参阅以下 OBE:安装并配置 Oracle WebLogic Server为 Oracle WebLogic Server 配置受管理实例Dizzyworld 的系统架构师决定创建 dizzyworldDS 数据源对象并连接到Oracle 数据库中的 HRDATA。
实战集锦_WebLogic JDBC 故障处理总结·JDBC 物件記憶體洩漏導致OutOfMemoryError 或行程大小不斷增加·一般主題本小節提供以下一般JDBC 連結池主題的調整和故障排除資訊:·通過除錯或追蹤JDBC 來排除JDBC 故障·理解WebLogic Server MultiPool Failover 或負載平衡·如何針對生產環境調整JDBC 連結池?·WebLogic Server 和Oracle RAC/TAF·Oracle ORA-01591 例外·相關閱讀材料·儘管應用程式發生了表明池中沒有可用連結的ResourceException,但同時仍然出現了連結高峰(建立了大量連結)。
如果對應用程式的分析表明,保留的連結數比應用程式碼實際使用的連結數要多,並排除了連結洩漏的可能,則最可能的情況是:代表間隔的屬性RefreshMinutes 的值設定得過小。
關閉更新功能:·在WLS 8.1 及以上版本中,將TestFrequencySeconds 設定為0;·在WLS 7.0 中,將RefreshMinutes 設定為0;·在更早的版本中,將RefreshMinutes 設定為99999999(此項的最大值為35791394)。
如果設定為0,將自動恢復到預設值5 分鐘。
背景資訊更新功能專用於使用測試表來測試池中所有當前未使用的連結,並在需要(測試失敗)時更新連結。
如果定義了測試表,並在JDBCConnectionPool 中定義了屬性RefreshMinutes,便可啟用該功能。
在運行上,更新功能與任何用戶端應用程式碼非同步,並會暫時保留所有當前未使用的池連結供測試之用。
在整個測試期間,它會一直保留所有這些連結。
如果在此期間有新的應用程式連結請求到來,將出現下列情況:·如果InitialCapacity 小於MaxCapacity,並小於當前打開的MaxCapacity 連結數,則到來的每個連結請求將打開CapacityIncrement 個新連結,直至達到池中最多允許的連結數。
在Weblogic中实现JDBC的功能本文向您介绍在Weblogic中实现JDBC,向您介绍服务器端连接池、客户端连接池、多连接池以及Weblogic JDBC类的定义等。
JDBC API由Java编写的一组接口和类组成,为开发者提供通过应用开发访问数据库的工具/接口。
作为低端接口,JDBC需要直接使用SQL命令语句对数据库进行操作。
此外,通过JMS、EJB以及容器持续等方式,JDBC可以实现高层调用,即不直接通过SQL操作数据库。
BEA提供两种JDBC连接方式,即两层方式和多次驱动方式。
所谓两层方式即Java应用客户端直接访问数据库,多层则通过jdbcpool、rmi-driver或者JTS实现。
两层:jdriver for oracle、infomix、mssql多层:jdbcpool、rmi-dirver、JTS关于数据库连接池(dbpool)多层驱动(多层 drivers)中,weblogic提供的dbpool是利用、调度和管理一组与数据库创建的数据库连接。
其中,weblogic采用两层驱动方式与数据库建立连接并对连接组进行运行管理。
在服务器端使用连接缓冲池对于访问数据库的服务器端应用,如servlet可以使用weblogic提供的连接缓冲池驱动。
而两阶段提交交易则需要使用weblogic服务器提供的JDBC/XA驱动,如Jdriver for oracle。
如果交易是分布式的,则使用JTS驱动。
此外,可以使用JNDI和数据源对象来访问和使用数据库连接缓冲池。
客户端应用使用连接缓冲池BEA 为客户端应用提供了多层JDBC RMI驱动,RMI驱动遵循SUN公司J2EE规范。
WebLogic RMI驱动是3类驱动,通过RMI和DataSourc对象实现对数据库的连接。
此外这种驱动还支持cluster中使用JDBC,在负载平衡、错误恢复等方面起重要作用。
通过对数据源对象的设置,可以定义驱动是否支持交易(transactional)。
第六章Weblogic Server中的JDBC6.1 Weblogic Server支持的JDBC6.1.1 JDBC简介JDBC可做三件事:●与数据库建立连接●发送SQL语句●处理结果使用JDBC要引入:两个程序包:●java.sql:核心API●javax.sql:扩展API6.1.2 JDBC的结构JDBC主要包括:Connection、Statement、Resultset类。
JDBC应用程序的工作方式:1.加载数据库的JDBC驱动程序(由DriverManager类管理)2.建立Connection3.由连接建立语句对象(Statement、PreparedStatement、CallabelStatement)4.由语句建立结果集对象Result5.通过语句对象和结果集对象进行各种数据操作6.关闭连接图4-1 JDBC应用示意图6.1.2.1 JDBC驱动程序JDBC是一个面向Java开发人员的类似于ODBC的数据库访问接口,只支持Java程序。
1. 类型1驱动程序此种驱动程序把JDBC翻译成ODBC调用。
优点:可以访问ODBC能访问的所有数据库缺点:执行效率比较低2. 类型2驱动程序直接将应用程序与网络库连接,这样,必须在使用此驱动程序的计算机上安装网络库。
类型2驱动程序的性能优于类型1驱动程序。
3. 类型3驱动程序类型3驱动程序将应用程序与中间件服务器(如W eblogic Server)连接,进而允许客户与后端多个数据库连接。
为了做到这一点,中间件服务器将应用程序的JDBC调用映射到适当的数据库驱动程序上。
这些数据库驱动程序安装在中间件服务器上,而不是在客户机上。
优点:客户机不需要安装网络库。
W eblogic Server的Pool驱动程序就是此类型。
4.类型4驱动程序把JDBC操作直接转换成不使用ODBC或本机API的本机协议。
这种驱动程序是完全用java实现的,不需要其它驱动程序和客户端网络库。
此类驱动程序是数据库厂商提供的,能够提供对于相应数据库系统的最优化的访问。
第三种和第四种是将来的发展方向6.1.2.2 连接连接是客户端Java代码和数据库之间的通信连接,由JDBC 驱动程序建立。
1. 直接连接是直接在客户端Java代码中打开并维护的,对应于类型1、2、4。
使用直接连接必须在完成对数据库的操作后将连接关闭。
否则,太多的连接将导致系统性能下降甚至超过数据库服务器的连接限制。
2. 池连接是被J2EE服务器打开和维护的。
J2EE启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。
客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其标记为忙。
如果当前没有空闲的连接,池驱动程序就新建一定数量的连接。
当连接的调用完成后,池驱动程序将此连接标记为空闲。
优点:比直接连接更有优越性,提高了性能同时节省了宝贵的资源。
6.1.2.3 语句简单语句:与java.sql.Statement接口相对应,用来执行简单SQL命令●预编译语句:与java.sql.PreparedStatement接口相对应,可以使用被预编译的SQL语句,以提高效率●可调用语句:与java.sql.CallableStatement接口相对应,用于调用存储过程。
6.1.2.4结果集与java.sql.ResultSet接口相对应,存储语句对象发出查询命令的结果集。
可用一套get/set方法访问结果集行中的数据。
6.1.3使用JDataStore数据库JdataStore的扩展名为jds,安装在Jbuilder目录下的samples\Jdatastore\datastores目录中,如:employee.jds数据库6.1.3.1JDataStore Server启动:开始--- Jbuilder菜单组---JDataStore Server用Jbuilder附带的JdataStore数据库,同时只能有一个连接连到数据库。
6.1.3.2JDataStore Explorer使用他可以完成创建JdataStore数据库、查看JdataStore数据库、修改JdataStore数据库中的记录。
启动:可通过Jbuilder菜单组中的JDataStoreExplorer菜单项1.查看JDataStore数据库File---Open菜单项选定文件(employee.jds)输入user name:examplepassword:2.执行SQL语句连接到数据文件后,单击Tools—SQL菜单项或单击工具栏中的”SQL“图标可以进入SQL窗口。
在SQL窗口中输入要执行的SQL语句,然后单击〔Execute〕按钮即可执行SQL语句。
3.新建数据库单击〔File〕---〔New〕菜单项,输入新建数据库文件的路径及名称、数据库文件的版本信息等。
6.1.4W ebLogic Server中的JDBC配置配置连接池和数据源。
数据源相当于客户端程序和连接池的中介,要想获得连接池中的连接对象,必须建立一个与该连接池相应的数据源,然后通过数据源获得连接。
在W eblogic中开发JDBC的步骤如下:(1)建立到指定数据库的连接池,连接池中封装了连接数据库的一些信息,如JDBC驱动程序、数据库名字、账号/密码。
图6-12 WebLogic Server 中的JDBC应用(2)建立基于某个连接池的数据源,该数据源的名字可以通过JNDI查找(3)访问数据库时通过数据源的JNDI名字查找到该数据源,然后通过数据源获得连接。
得到连接后,就可以依次生成语句和结果集。
使用连接池的好处:●节省时间:建立数据库连接费时,事先建好的连接可节省时间●封装用户信息:账号和密码已经封装在连接池中,客户端程序在建立连接时不用考虑安全信息。
6.1.4.1 配置连接池在W eblogic Server管理控制台中完成。
步骤如下:1.启动W eblogic Server Admin Console。
在左侧域树中选择“JDBC”---“Connection Pools”2.单击configuration a new JDBC connection选择database type:oracledatabase driver:oracle’s driver (thin)version:8.17,9.0.1,9.203.在连接池信息配置界面中完成有关连接池的各项配置:●name:(连接池的名称)●connection properties:databse name:studenthost name:localhostport:1521database user name:scottpassword:tigerconfirm password:tiger4.测试连接create and deploy5.配置connections选项卡initial capacity:连接池中的初始连接数。
默认值为1maximum capacity:连接池中最大连接数。
默认值为1capacity increment:每次增加的连接数login delay seconds:池驱动程序在启动时打开每一个新的连接需要等待的时间。
Refresh period:刷新周期。
如果输入非零值,每隔所设值的时间就将已打开但还未被使用的数据连接关闭,然后重新打开,以检测数据库是否可用。
6.1.4.2 配置数据源单击管理控制台左侧域树中的JDBC-Data sources项,单击右侧窗口中的configure a new jdbc source…超级链接。
Name:(jdbc数据源的名称)MyJDBC Data SourceJNDI Name:ds_studentHonor global transactions:指定数据源是否参加现存的全局事务。
Pool name:此数据源对应的connection pool的名字。
Row prefetch enabled:是否允许行预取。
Row prefetched size:行预取大小Stream chunk size:流块大小选择要发布数据源的服务器(myserver)。
单击create按钮。
6.1.4.3 配置tx数据源(Tx data source)Tx data source是支持分布式事务的数据源。
与参加数据源类似。
单击管理控制台左侧域树中的JDBC-Tx Data sources项,单击右侧窗口中的configure a new jdbc Tx source…超级链接。
Name:(jdbc数据源的名称)MyJDBC Data SourceJNDI Name:ds_studentPool name:此数据源对应的connection pool的名字。
6.2 weblogic server下的JDBC开发实例步骤:(1)建立连接(2)执行SQL语句(3)处理结果集(4)关闭连接6.2.1 建立连接6.2.1.1 查找datasource对象通过datasource的JNDI名字查找datasource对象6.2.1.2 获得数据库连接通过datasource类的getConnection()方法获得数据库连接。
Connection myConn = ds.getConnection();6.2.1.3 建立连接的代码实例DataSource ds=null;Context ctx=null;Connection myConn=null;Try {Ctx=getInitialContext();//查找JNDI名字为ds_student的数据源ds=(javax.sql.DataSource)ctx.lookup(“ds_student”);}catch (Exception E) {System.out.println(“init Error:”+E);}try {myConn=ds.getConnection();}catch (Exception E){ System.out.println(“init Error:”+E);}6.2.2 执行SQL语句执行sql语句是通过Statement完成的。
建立Statement对象可以通过Connection对象的createStatement方法完成。
建立Statement 对象后可以调用其executeQuery和executeUpdate方法执行sql 语句。
这两个方法的区别是executeQuery执行的是查询语句,返回一个ResultSet对象,而executeUpdate执行的是更新数据库的操作(如删除数据、修改数据),无返回值。
例:Statement stmt=con.createStatement();Stmt. ExecuteUpdate(“insert into table1 values(v1,v2)”);6.2.3 处理结果集6.2.3.1 取当前记录的列值ResultSet类提供了一系列get方法(每一种数据类型对应一个get方法),使用与列数据类型对应的get方法可以取得该列的值。