Oracle数据库10gJava、JDBC和Web服务SteveButton产品经理甲骨文公司议程商业价值主张Oracle数据库10g中的JDBCOracleSQLJ的现状如何?Oracle数据库10g中的JavaOracle数据库10g中的Web服务与服务价值主张Java与Web服务价值主张成本降低–更快的Java应用程序开发–更快的Java应用程序部署–更快的Java应用程序执行–集成现有的软件资产风险降低–选择–支持最新的Java标准–防范恶意的Java代码–防范数据库服务器故障Java与Web服务价值主张扩展数据库的范围–扩展数据库的客户基础–数据联合:将远程和动态数据与本地数据整合–平台集成:扩展原有资产–利用标准的或第三方的Java库扩展数据库功能数据库g中的10g中的JDBC有什么新增特性?重新设计统一的代码路径消除功能空白性能直接的XA优化的类型转换最快的JDBC驱动程序瘦等同于粗绑定变量名称PL/SQL索引表代理验证加密算法可靠的智能连接缓存–隐式连接缓存–快速连接故障切换新的数据类型–原生IEEEDOUBLE–原生IEEEFloat–LONG-to-LOB转换–无限大小的LOB–INTERVALDAYTOSECOND端到端跟踪10g中的JDBC有什么新增特性?(续)其他增强的VARRAY支持NLS重新打包可设置的系统属性CHAR/NCHAR行为瘦加密算法停止发送zip文件停止发送classes111新的JDBC3.0特性命名参数新的引用接口数据连接/URLJCA资源适配器连接池语句池JDBCWebRowSetJDBCWebRowSetJSR-114的一个实施,扩展了java.sql.ResultSet功能–支持从XML格式中读取结果集或将结果集写成XML格式–可串行化/可分配–与数据源断开、分离–可扩展到非表格化数据–可以使用HTTP/XML协议通过互联网发送JDBC行集(RowSet)—各种行集的关系JDBCRowSetCachedRowSetFilteredRowSetWebRowSetEJBServletWeb服务JDBCWebRowSet—示例//创建一个结果集以填充行集stmt=conn.createStatement();rs=stmt.executeQuery(select...);OracleWebRowSetwrs=newOracleWebRowSet();//填充行集wrs.populate(rs);//关闭连接conn.close();//行集仍然包含值...wrs.next();Objectcol1=wrs.getObject(1);//以XML格式输出行集wrs.writeXML(out);更丰富的JDBC连接缓存特性9iR210g透明的缓存访问无有刷新陈旧连接无有基于属性的连接检索无有重新声明/重用丢弃的连接无有异种用户/口令无有集中的缓存管理无有特性9iR210g透明的缓存访问无有刷新陈旧连接无有基于属性的连接检索无有重新声明/重用丢弃的连接无有异种用户/口令无有集中的缓存管理无有智能的连接缓存:隐式连接缓存缓存管理器OracleJDBC驱动程序...会话1.1会话n.1....缓存1会话1.m....缓存n会话n.mJ2EE服务器(例如,OracleAS10g)可靠的连接缓存:快速连接故障切换–JDBC连接缓存中失败的连接–监听UP/DOWN故障切换事件–重设连接失败的数据库连接新的数据库连接快速连接故障切换RAC数据库:例程故障切换示例故障切换前故障切换后Instance#1ERPJava/J2EE例程1例程2例程3例程4快速连接故障切换:连接故障切换处理ONS后台程序故障切换事件处理程序线程订阅发布连接缓存管理器启动/停止连接缓存对象阵列......连接对象线程处理事件,每个缓存一个21345handleEvent()TAF与快速连接故障切换连接重试:-FCF允许在应用程序级进行重试,而TAF重试发生在OCI/Net层。应用程序层(例如:EJB容器)完全控制重试与连接缓存集成:-与TAF不同,FCF与隐式连接缓存结合使用,对缓存管理的连接有完全的控制权基于RAC事件:-FCF是一种基于RAC事件的机制。这比检测网络呼叫的故障要更有效。负载平衡支持:-FCF支持活动的RAC例程间的连接的UP事件负载平衡Oracle数据库10g中的JDBC总结重新设计—最大化JDBC驱动程序的效能JDBC和J2EE标准—可移植、使开发更快广泛的特性集—可使用Oracle数据库10g的全部特性即时客户端—无障碍的安装和升级与Oracle数据库的不同版本向上/向下兼容可靠性—RAC/高可用性快速连接故障切换灵活性—兼容的type-2和type-4JDBC驱动程序:灵活性请参阅新的白皮书中的OracleSQLJ的现状不再支持SQLJ—确切情况是怎样的?–在Oracle数据库10g和OracleAS10g中不再支持SQLJTranslator(编译器)–目前保留了SQLJRuntime下一步–支持现有的SQLJ应用程序和存储过程–移植助手:从SQLJ中生成纯JDBC发布在:–Jpublisher:用于维护SQLJ应用程序的新的–sqlj选项请参阅发展方向说明数据库g中的Java-in-the-Database有什么新增特性?OracleJVM运行时升级到J2SE1.4–严格的Java安全性–HeadlessAWT性能:–自我调整的Java池–新的更快的服务器端JDBC驱动程序–更快的LoadJava验证程序本地Java接口优化的Java内存管理(专用服务器)外调–RMI外调–JSP/Servlet外调–EJB外调–Web服务外调调用Java-in-the-Database中的本地Java接口用于直接调用静态的服务器端Java方法的一个客户端stubAPIJPublisher透明地处理stub生成示例:要在服务器中调用以下方法publicStringoracle.sqlj.checker.JdbcVersion.to_string();使用jpub-java=oracle.sqlj.checker.JdbcVersionStubJava类JDBC优化的Java内存管理:专用服务器共享的内存进程内存UGA会话空间共享池Java池固定的SGAPGA新空间旧空间栈空间使用Java-in-the-Database,您能够走多远?ORACLE8iDatabaseCOM客户端非OracleRDBMSTandemCOBOLAS400RPG-DB400OS390Natural/Adabas数据逻辑XDKforPL/SQL-纯Java库非Oraclejdbcjdbc调用RPC调用RPC调用RPC调用ReplyReply批量处理SAP-JCO网关rmi调用ReplyTandemCOBOLAS400RPG-DB400OS390Natural/AdabasSAPENTIREXACISERVICEORACLEJDBCSAPJCOJDBCACIcallReplyReplyReplyReplyReplyReplyACIcallACIcallRFCcallJDBC调用JDBC调用OO4O(1)(2)OracleJVMPL/SQL参考文献:白皮书,文章JavaintheDatabaseatWork–CustomerCaseStudiesADBAPerspectiveonOracleJVMSecurityMechanismsSimplifywithJavaStoredProcedures数据库中的服务调用外部Web服务数据库作为Web服务使用者Oracle9iASWebServicesFrameworkDataDataLogic批量作业XMLSOAP消息WebWeb服务提供者服务提供者服务SQLJavaPL/SQLWSDL服务提供者§实施§打包和部署§描述和发布连接、调用SOAP数据库作为Web服务使用者JavaWS客户端堆栈Oracle数据库Java客户端代理PL/SQL包装程序SQL引擎表函数DynInvItfWeb服务客户端框架(SOAP)数据库模块(Web服务客户端)SELECTcity_name,temp,high_tempFROMTABLE(Temp_TF)SOAP请求/响应HTTP客户端堆栈动态数据—外部Web服务作为SQL数据源Web服务提供者表函数JDBC通过Web服务协议调用数据库操作SOAPJ2EE(BusinessLogic)Oracle9iASWebServicesFrameworkWebWeb服务服务客户端客户端DataDataLogicSQL/查询SQL/DMLJavaPL/SQLOracleASOracleAS1010ggOracleOracle数据库数据库1010ggOracle9Oracle9ii、、Oracle8Oracle8ii数据库作为Web服务提供者端点隐式指定服务器提供的服务类型。XMLXML分析器分析器SOAPSOAP库库OC4JOC4JWebWeb服务服务ServletServlet解码解码编码编码JPubJPub生成的生成的JavaJava类类每个WSDL的SOAP响应HTTPHTTPJDBC数据库作为Web服务提供者托管为J2EEWeb服务§授权§打包和部署§描述和发布连接、调用SOAP获取WSDL并绑定Oracle数据库服务使用者§查找/定位§绑定/连接§调用服务/方法服务实施(PL/SQL、SQL、Java…)Oracle应用服务器JDBCJPublisher简化了Web服务支持Web服务外调–对于给定的WSDL,生成Java代理类、PL/SQL包装程序并加载数据库中的相应文件支持Web服务内调–将PL/SQL程序包、Java存储过程、SQL查询或DML语句作为Web服务提供–实现对PL/SQL类型(CLOB、BLOB)的Web服务支持–REFCURSOR和结果集的映射–支持直接从Java/J2EE中调用Java-in-the-DatabaseOracle数据库10g—Java、JDBC、Web服务—总结商业价值主张成本降低、生产效率风险降低、选择扩展数据库的范围(向内扩展和向外扩展)技术价值主张标准支持:JDBC3.0、JSR-114、J2SE1.4、JAX-RPC为Java、J2EE、Web服务和网格提供的完整、更快、更智能和更可靠的SQL数据访问在离数据更近的位置更快地运行数据逻辑利用标准的Java库实现的数据库可扩展性数据库作为Web服务的提供者和使用者利用Jpublisher简化数据库Web服务