模式分解————代理模式(通过java中RMI类的简单实现)
2012-04-01 16:12
453 查看
1:代理模式定义:它为另一个对象提供一个替身或占位符以控制对这个对象的访问。(通俗解释:在被访问对象前段增加控制类)
2、RMI提供了客户辅助对象和服务端辅助对象,为客户辅助对象创建和服务对象相同方法。
啥也不说了,直接上列子代码:
A:建立远程服务端接口类:
import java.rmi.*; // 引用Java中RMI类
public interface TestServiceRemoteInt extends Remote{
public String sayHello() throws RemoteException; // 远程方法调用必修声明RemoteException异常
}
B:建立远程服务实现类:
import java.rmi.*;
import java.rmi.server.*;
/**
* UnicastRemoteObject为java.rmi.*提供类
*
*
**/
public class TestServiceRmoteImpl extends UnicastRemoteObject implements TestServiceRemoteInt
{
public String sayHello() {
return "Server say Hello";
}
public TestServiceRmoteImpl() throws RemoteException{}
public static void main(String[] args) {
try {
TestServiceRemoteInt TestService = new TestServiceRmoteImpl();
// Naming.rebind(java.rmi.*)方法(为)绑定对象到rmiregistzy中,客户端将使用注册名RemoteHello在Rmiregistzy查找
Naming.rebind("RemoteHello",TestService)
} catch (Exception ex){
ex.printStackTrace();
}
}
}
C:客户端实现访问:
import java.rmi.*;
public class TestClient{
public static void main(String[] args) {
new TestClient().doTest();
}
Public void doTest(){
try{
// rmi://127.0.0.1/RemoteHello格式必修rmi://地址/服务定义名,其中地址可以更换
TestServiceRemoteInt testInter = (TestServiceRemoteInt)Naming.lookup(rmi://127.0.0.1/RemoteHello);
String Say = testInter.sayHello();
System.out.println(s);
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
通过上述简单示例:客户端对象通过RMI代理类(RMI Stub )访问 服务器端代理类(RMI skeleton)再访问服务器对象。
2、RMI提供了客户辅助对象和服务端辅助对象,为客户辅助对象创建和服务对象相同方法。
啥也不说了,直接上列子代码:
A:建立远程服务端接口类:
import java.rmi.*; // 引用Java中RMI类
public interface TestServiceRemoteInt extends Remote{
public String sayHello() throws RemoteException; // 远程方法调用必修声明RemoteException异常
}
B:建立远程服务实现类:
import java.rmi.*;
import java.rmi.server.*;
/**
* UnicastRemoteObject为java.rmi.*提供类
*
*
**/
public class TestServiceRmoteImpl extends UnicastRemoteObject implements TestServiceRemoteInt
{
public String sayHello() {
return "Server say Hello";
}
public TestServiceRmoteImpl() throws RemoteException{}
public static void main(String[] args) {
try {
TestServiceRemoteInt TestService = new TestServiceRmoteImpl();
// Naming.rebind(java.rmi.*)方法(为)绑定对象到rmiregistzy中,客户端将使用注册名RemoteHello在Rmiregistzy查找
Naming.rebind("RemoteHello",TestService)
} catch (Exception ex){
ex.printStackTrace();
}
}
}
C:客户端实现访问:
import java.rmi.*;
public class TestClient{
public static void main(String[] args) {
new TestClient().doTest();
}
Public void doTest(){
try{
// rmi://127.0.0.1/RemoteHello格式必修rmi://地址/服务定义名,其中地址可以更换
TestServiceRemoteInt testInter = (TestServiceRemoteInt)Naming.lookup(rmi://127.0.0.1/RemoteHello);
String Say = testInter.sayHello();
System.out.println(s);
} catch(Exception ex) {
ex.printStackTrace();
}
}
}
通过上述简单示例:客户端对象通过RMI代理类(RMI Stub )访问 服务器端代理类(RMI skeleton)再访问服务器对象。
相关文章推荐
- JAVAProxy代理模式简单实现
- Java的代理模式(通过公共接口实现)
- java中实现单例模式的几种方式,简单易懂
- Java实现策略模式的简单应用
- python2.7通过字典实现java的switch-case模式匹配(代码有注释)
- 代理模式及Java实现动态代理
- 设计模式之动态代理的代码实现(Java)
- Java反射之JDK动态代理实现简单AOP
- java webservice 总结(学会读别人的webservice并且通过代理模式访问)
- 设计模式-java实现动态代理
- Java反射机制详解(3) -java的反射和代理实现IOC模式 模拟spring
- 用JSP+Servlet+JavaBean模式实现一个简单的登录网页设计(JSP+Tomcat+MySQL)
- 浅谈java中内置的观察者模式与动态代理的实现
- php,java实现代理模式
- iphone开发之通过代理模式实现自定义控件——代码示例图片库的处理
- java 简单的代理设计模式
- Java设计模式之静态代理和动态代理(简单例子)
- 代理模式之动态代理(java实现)
- Unity3D 利用C#实现简单的代理模式Delegate(委托)
- Rhyme/Java 设计模式之原型模式prototype通过clone方法和反序列化实现深复制