当前位置: 代码迷 >> 综合 >> IBM大型主机(Mainframe)技术简介之六——数据库和系统集成(二)
  详细解决方案

IBM大型主机(Mainframe)技术简介之六——数据库和系统集成(二)

热度:58   发布时间:2023-12-08 19:25:52.0

1. 系统集成的基础设施

 

RPC (Remote Procedure Call)

 

RPC是现代C/S和分布式程序的基础概念之一,通常由具体的技术来实现。以下是远程通信通常遵循的模式:

 

客户程序 <-> 桩(残根)函数接口 <-> Channel(协议栈通信通路) <-> 桩(残根)函数接口 <-> 服务程序

 

优点: 隐藏传输细节; 简化; 透明

桩函数接口的作用: 程序参数和通信栈上数据之间的转化、组织和传递。

 

CORBA (COmmon Request Broker Architecture)

 

CORBA曾经非常流行的一种RPC模式。其基本概念包括:

物件Object -- 可接受客户请求可位于远端的实体;

服务Servant -- 物件的功能实现;

IDL(Interface Definition Language) -- 接口定义语言,一种协议,类似COM的IDL,WSDL等的作用;用于保证CORBA语言无关

ORB(Object Request Broker) -- 直接位于通信栈上用于处理请求的机构

 

通信模式:

客户程序(使用) <-> 物件对象(引用) | 桩函数接口(根据IDL生成) <-> ORB

                                                                                               |

                                                                                          通信链路

                                                                                               |

 服务程序(创建和维护) <-> 物件对象(实现) | Skeleton函数接口 <-> ORB

 

RMI (Remote Method Invocation)

 

是Java程序之间RPC通信的方式。如果JAVA要和其他语言程序通信,则采用CORBA;因此rmic工具为特定桩对象生成Java方法以支持通信。

在两个Java虚拟机之间则用JRMP(Java Remote Method Protocol)通信。

Server侧接口需继承:java.rmi.Remote,异常:java.rmi.RemoteException。

首先System.get/setSecurityManager()设置安全管理对象,java.rmi.registry.*设置Registry;对象创建,然后绑定到Java的命名系统中:Naming.bind("路径", obj); 客户端查询则通过Naming.lookup("路径");

 

.NET Remoting(已被WCF取代)

 

仅仅是上课提到,非上课重点,且为更新技术取代,不再赘述。

 

2. JEE (J2EE) 系统集成技术发展

 

1.2 (初始版): Servelets, JSP, EJB, JMS, Mail, JDBC, Transactions, JNDI

1.3:Connector Architecture, JAAS, XML for Web Services, JSP Tag Libraries

1.4:Management (JMX), 安全扩展(Security Extensions)

1.5:(主发布版本) 原部署标记(XML)可以用Annotation取代,Dependency Injection,JPA

1.6:(最近版本) Profile概念(功能子集),REST的Web Service(JAS-RS),Managed Beans,Bean Validation, EJB Lite, Servlet(支持Annotations, 异步asynchronous,可插卸性pluggability),Faces(Annotations, facelets, AJAX, implicit navigation)

 

3. JDBC

 

JDBC

 

目的:使Java接入关系数据库系统Relational Dababase Management System (RDMS);

驱动Driver:适应特定数据库的JDBC API;

注册:v4以后的驱动不需要

结构:  Java应用 | JDBC API | JDBC SPI | JDBC驱动(数据库提供商提供) <-> 数据库

步骤:

1. 驱动注册: Class.forName("驱动名称").newInstance(); // need to catch Exception e

2. 建立连接: Connecton conn = DriverManager.getConnection(url); // need to catch SQLException

2'. 含参连接: Properties props = new Propertis(); props.setProperty("user", "Peter"); props...  conn = DriverManager.getConnection(url, props); 或: conn = DriverManager.getConnection(url, name, passwd);

2''. DS连接:Context ctx = new InitialContext(); /*JNDI*/ DataSource ds = (DataSource)ctx.Lookup("路径"); conn = ds.getConnection([user, passwd]); (DataSource是一个Factory产生普通/Pooled/Distributed Transaction的连接)

3. 使用后关闭连接: conn.close();

 

JDBC中使用SQL语句

Statement:执行SQL查询和更新:

Statement stmt = conn.createStatement(); int res = stmt.executeUpdate("SQL更新语句");ResultSet rs = stmt.executeQuery("SQL查询语句" [, resultSetType concurency, holdability]); ... stmt.close();

PreparedStatement:允许java变量作为参数:安全性(防止SQL代码注入);效率(驱动可优化执行代码)

Prepared