要点一
- 在某堆上的对象无法进行另外堆上的对象引用
- Java Remote Method Invocation(RMI)让你感觉上像是调用远程对象的方法,但其实不是
- 当客户端调用远程对象的方法时 其实是调用代理上的方法,此代理被称为stub
- stub是个处理低层网络细节的辅助性对象,它会把方法的调用包装起来送到服务器上
- 要创建远程服务的话,你就必须要以远程接口来启动
- 远程接口必须要extend过java.rmi.Remote这个接口 且所有的方法都必须声明RemoteException
- 你的远程服务会实现远程接口
- 远程服务应该要继承UnicastRemoteObject(技术上也有其他方法可以创建远程对象,但这是最简单的方式)
- 远程服务必须要声明RemoteException的构造函数(因为父类的构造函数声明了)
- 远程服务的对象必须要向RMI registry注册
- 使用静态的Naming.rebind()来注册远程服务
- RMI registry必须在同一台机器上与远程服务一块执行,且必须在对象的注册之前启动
- 客户端会以Naming.lookup()查询远程服务
- 几乎所有的与RMI有关的都会抛出RemoteException(由编译器检查)
要点二
- servlet是完全在HTTP服务器上运行的Java程序
- servlet用来处理与用户交互的网页程序。例如用户提交一些信息给服务器,servlet就可以处理信息并把特定的结果以网页的形式返回给用户
- 你需要service.jar文件中的servlet相关包才能编译出servlet。它不是标准函数库的一部分,所以需要从java.sun.com或Web服务器供货商处取得(事实上Java 2 Enterprise Edition,也就是J2EE就带有Servlet函数库)
- 你必须要有支持servlet的Web服务器才能运行servlet,比如apache的Tomcat
- servlet必须放在特定位置才能执行 如果Web服务器是向ISP租借的,它会告诉你应该放在哪个目录
- 一般的servlet是继承HttpServlet并覆盖doGet()和doPost()来创建的
- Web服务器会根据用户的请求来启动并调用servlet上对应的方法
- servlet可以通过doGet()的响应参数取得输出串流来组成响应的网页
- servlet要输出带有完整标识的HTML网页