《Chap基于分布构件的体系结构实用实用教案》由会员分享,可在线阅读,更多相关《Chap基于分布构件的体系结构实用实用教案(45页珍藏版)》请在金锄头文库上搜索。
1、1内容(nirng)8.18.1EJBEJB分布构件分布构件(gujin)(gujin)框架框架8.28.2DCOMDCOM分布构件分布构件(gujin)(gujin)框架框架8.38.3CORBACORBA分布构件分布构件(gujin)(gujin)框架框架第1页/共44页第一页,共45页。28.1 EJB8.1 EJB分布构件分布构件(gujin)(gujin)框架框架简介( jinji):EJB(EnterpriseJavaBean)分布构件框架由SUN公司主导制定,它基于Java语言,面向企业级的分布式系统开发。第2页/共44页第二页,共45页。38.1 EJB8.1 EJB分布分布(
2、fnb)(fnb)构件框架构件框架实例(shl):HelloWorldEJB构件HelloWorldBean文件HelloWorldBean.java:第3页/共44页第三页,共45页。48.1 EJB8.1 EJB分布构件分布构件(gujin)(gujin)框架框架实例(shl):HelloWorldEJB构件HelloWorldBean文件HelloWorld.java:第4页/共44页第四页,共45页。58.1 EJB8.1 EJB分布分布(fnb)(fnb)构件框架构件框架实例:HelloWorldEJB构件HelloWorldBean编译上述两个文件,便能够得到两个类文件HelloW
3、orldBean.class和HelloWorld.class,它们分别描述了EJB构件HelloWorldBean和它的远程接口HelloWorld。将这两个类放在Jboss安装目录的examplesserver子目录下,然后(rnhu)打包成一个文件HelloWorld.jar。至此,EJB构件HelloWorldBean就开发好了。第5页/共44页第五页,共45页。68.1 EJB8.1 EJB分布构件分布构件(gujin)(gujin)框架框架实例:HelloWorldEJB构件HelloWorldBean的部署(bsh)在开发完EJB构件之后,需要将其部署(bsh)到EJB应用服务器
4、中。对于Jboss,在成功启动之后,只需要将上述的文件HelloWorld.jar直接拷贝到Jboss安装目录下的一个特定子目录中,Jboss就会自动完成EJB构件HelloWorldBean的部署(bsh)。第6页/共44页第六页,共45页。78.1 EJB8.1 EJB分布构件分布构件(gujin)(gujin)框架框架实例(shl):HelloWorldEJB客户HelloWorldClient的开发第7页/共44页第七页,共45页。88.1 EJB8.1 EJB分布构件分布构件(gujin)(gujin)框架框架实例:HelloWorld测试编译(biny)完文件HelloWorldC
5、lient.java后,即可运行命令“javaexamples.client.HelloWorldClient”,结果如下所示:第8页/共44页第八页,共45页。98.1 EJB8.1 EJB分布分布(fnb)(fnb)构件框架构件框架原理分析:本实例中定义的三个类之间的关系如下图所示。构件(gujin)HelloWorldBean的实例由构件(gujin)容器负责创建。第9页/共44页第九页,共45页。108.1 EJB8.1 EJB分布构件分布构件(gujin)(gujin)框架框架原理分析:本实例中定义(dngy)的三个类之间的关系如下图所示。构件HelloWorldBean的实例由构件
6、容器负责创建。第10页/共44页第十页,共45页。118.1 EJB8.1 EJB分布分布(fnb)(fnb)构件框架构件框架原理(yunl)分析:RMI原理(yunl)第11页/共44页第十一页,共45页。128.1 EJB8.1 EJB分布分布(fnb)(fnb)构件框架构件框架其它说明:在EJB构件框架下,客户端可以有各种不同的形式,如下图所示。无论简单( jindn)的Java程序,还是Web容器或者客户容器中的Java程序,它们都遵守上述的EJB构件框架,即通过远程对象的存根访问EJB容器中的会话Bean。第12页/共44页第十二页,共45页。13内容(nirng)8.18.1EJB
7、EJB分布分布(fnb)(fnb)构件框架构件框架8.28.2DCOMDCOM分布分布(fnb)(fnb)构件框架构件框架8.38.3CORBACORBA分布分布(fnb)(fnb)构件框架构件框架第13页/共44页第十三页,共45页。148.2 DCOM8.2 DCOM分布构件分布构件(gujin)(gujin)框架框架DCOM(DistributedComponentObjectModel,分布构件对象模型)是一个二进制代码层面的构件模型,由微软公司于1995年左右提出,从COM(ComponentObjectModel,构件对象模型)扩充而成。按照这个模型,以二进制形式(xngsh)存在
8、的构件可以被远程客户透明访问。第14页/共44页第十四页,共45页。158.2 DCOM8.2 DCOM分布构件分布构件(gujin)(gujin)框架框架基本概念DCOM客户:泛指所有与DCOM构件交互的程序片断。如果一个DCOM构件要与其他DCOM构件交互,那它同时也是一个DCOM客户。DCOM构件:是具有特定格式要求(yoqi)的动态链接库(DLL)文件或可执行(EXE)文件。对象、类和类工厂接口接口的代理/残桩DLL第15页/共44页第十五页,共45页。16第16页/共44页第十六页,共45页。178.2 DCOM8.2 DCOM分布分布(fnb)(fnb)构件框架构件框架整体(zhn
9、gt)结构第17页/共44页第十七页,共45页。188.2 DCOM8.2 DCOM分布分布(fnb)(fnb)构件框架构件框架实例:HelloWorld,共包含十个文件:HelloComponent.cpp、HelloComponent.h:包含EXE构件的主函数WinMain()和相关代码。HelloClass.cpp、HelloClass.h:包含EXE构件向外提供的类CHelloClass的定义、以及(yj)向外提供的工厂类CFactory的定义。Hello.idl:定义类CHelloClass向外提供的接口IHello。既用于EXE构件,也用于客户程序。HelloClient.cpp
10、:客户程序。Registry.cpp、Registry.h:包含一些辅助函数的定义,用于访问Windows注册表。Makefile、HelloProxy.def第18页/共44页第十八页,共45页。198.2 DCOM8.2 DCOM分布分布(fnb)(fnb)构件框架构件框架实例(shl):HelloWorldEXE构件主程序(HelloComponent.cpp)第19页/共44页第十九页,共45页。208.2 DCOM8.2 DCOM分布分布(fnb)(fnb)构件框架构件框架实例(shl):HelloWorldEXE构件中的工厂类CFactory第20页/共44页第二十页,共45页。2
11、18.2 DCOM8.2 DCOM分布分布(fnb)(fnb)构件框架构件框架实例(shl):HelloWorldEXE构件中的类CHelloClass第21页/共44页第二十一页,共45页。228.2 DCOM8.2 DCOM分布构件分布构件(gujin)(gujin)框架框架实例(shl):HelloWorld类CHelloClass的接口IHello第22页/共44页第二十二页,共45页。238.2 DCOM8.2 DCOM分布构件分布构件(gujin)(gujin)框架框架实例(shl):HelloWorld类CHelloClass的接口IHello:Hello.idl第23页/共44
12、页第二十三页,共45页。248.2 DCOM8.2 DCOM分布分布(fnb)(fnb)构件框架构件框架实例:HelloWorldEXE构件HelloComponent.exe的生成和部署:部署时,需要将HelloComponent.exe和HelloProxy.dll拷贝到服务器上,并应该将它们都注册(zhc)到服务器上的DCOM系统中。注册(zhc)HelloProxy.dll的命令是“Regsvr32HelloProxy.dll” ;注册(zhc)HelloComponent.exe的命令是“HelloComponent.exe-regserver”,也就是说它能够自我注册(zhc)。第
13、24页/共44页第二十四页,共45页。258.2 DCOM8.2 DCOM分布构件分布构件(gujin)(gujin)框架框架实例(shl):HelloWorld客户程序(HelloClient.cpp)第25页/共44页第二十五页,共45页。268.2 DCOM8.2 DCOM分布构件分布构件(gujin)(gujin)框架框架实例:HelloWorld客户程序(HelloClient.cpp):客户端请求(qngqi)服务器创建对象的过程第26页/共44页第二十六页,共45页。278.2 DCOM8.2 DCOM分布构件分布构件(gujin)(gujin)框架框架实例:HelloWorld
14、客户方的部署和测试(csh):将HelloClient.exe和HelloProxy.dll拷贝到客户机上,并将HelloProxy.dll注册到客户机上的DCOM系统中。第27页/共44页第二十七页,共45页。288.2 DCOM8.2 DCOM分布分布(fnb)(fnb)构件框架构件框架对原理的进一步分析:客户与EXE服务构件之间有三次直接的交互,如图上的数字6、8、9所标识。但在分布环境下,客户是不可能直接与EXE构件在接口( jiku)层面直接交互的。实际上,上述三次交互都是由本地机器上的代理对象或残根对象完成的,而这些代理对象和残根对象都是由前面生成的代理/残根动态链接库HelloP
15、roxy.dll生成,只不过这个过程由DCOM系统控制,外界看不到而已。第28页/共44页第二十八页,共45页。29第29页/共44页第二十九页,共45页。30内容(nirng)8.18.1EJBEJB分布构件分布构件(gujin)(gujin)框架框架8.28.2DCOMDCOM分布构件分布构件(gujin)(gujin)框架框架8.38.3CORBACORBA分布构件分布构件(gujin)(gujin)框架框架第30页/共44页第三十页,共45页。318.3 CORBA8.3 CORBA分布构件分布构件(gujin)(gujin)框架框架CORBA(CommonObjectRequestB
16、rokerArchitecture ,分布对象请求代理(dil)体系结构)是一种异构平台下的语言无关的分布对象互操作模型。由OMG(ObjectManagementGroup,对象管理组织)于1990年首次提出,后经过多版改进,最新的CORBA规范是2008年发布的3.1版。第31页/共44页第三十一页,共45页。328.3 CORBA8.3 CORBA分布分布(fnb)(fnb)构件框架构件框架基本( jbn)体系结构第32页/共44页第三十二页,共45页。338.3 CORBA8.3 CORBA分布分布(fnb)(fnb)构件框架构件框架基本( jbn)体系结构第33页/共44页第三十三页
17、,共45页。348.3 CORBA8.3 CORBA分布分布(fnb)(fnb)构件框架构件框架基本( jbn)体系结构第34页/共44页第三十四页,共45页。358.3 CORBA8.3 CORBA分布分布(fnb)(fnb)构件框架构件框架实例分析(fnx):HelloWorld,包含四个文件和七个Java类第35页/共44页第三十五页,共45页。368.3 CORBA8.3 CORBA分布构件分布构件(gujin)(gujin)框架框架实例分析:HelloWorld接口( jiku)的定义(Hello.idl)第36页/共44页第三十六页,共45页。378.3 CORBA8.3 CORB
18、A分布分布(fnb)(fnb)构件框架构件框架实例(shl)分析:HelloWorld服务器端的对象实现类的定义HelloImpl.java第37页/共44页第三十七页,共45页。388.3 CORBA8.3 CORBA分布分布(fnb)(fnb)构件框架构件框架实例(shl)分析:HelloWorld服务器端的主程序(Server.java)第38页/共44页第三十八页,共45页。398.3 CORBA8.3 CORBA分布分布(fnb)(fnb)构件框架构件框架实例(shl)分析:HelloWorld客户端程序(Client.java)第39页/共44页第三十九页,共45页。408.3 C
19、ORBA8.3 CORBA分布构件分布构件(gujin)(gujin)框架框架实例分析:HelloWorld测试在服务器上使用JacORB的ns命令启动(qdng)CORBA命名服务。在服务器上启动(qdng)服务器主程序,使用的命令是“jacodemo.helloworld.Server”。启动(qdng)客户端主程序,使用的命令是“jacodemo.helloworld.Client”。第40页/共44页第四十页,共45页。418.3 CORBA8.3 CORBA分布分布(fnb)(fnb)构件框架构件框架完整(wnzhng)体系结构第41页/共44页第四十一页,共45页。428.3 CO
20、RBA8.3 CORBA分布分布(fnb)(fnb)构件框架构件框架完整(wnzhng)体系结构第42页/共44页第四十二页,共45页。43第43页/共44页第四十三页,共45页。44感谢您的欣赏(xnshng)!第44页/共44页第四十四页,共45页。内容(nirng)总结1。在开发完EJB构件(gujin)之后,需要将其部署到EJB应用服务器中。构件(gujin)HelloWorldBean的实例由构件(gujin)容器负责创建。原理分析:RMI原理。DCOM客户:泛指所有与DCOM构件(gujin)交互的程序片断。既用于EXE构件(gujin),也用于客户程序。Registry.cpp、Registry.h:包含一些辅助函数的定义,用于访问Windows注册表。但在分布环境下,客户是不可能直接与EXE构件(gujin)在接口层面直接交互的。第43页/共44页第四十五页,共45页。