package remotecall;
import java.io.*;
import java.net.*;
import java.util.*;
import java.lang.reflect.*;
public class SimpleServer {
private Map remoteObjects=new HashMap(); //存放远程对象的缓存
/** 把一个远程对象放到缓存中 */
public void register(String className,Object remoteObject){
remoteObjects.put( className,remoteObject);
}
public void service()throws Exception{
ServerSocket serverSocket = new ServerSocket(8000);
System.out.println("服务器启动.");
while(true){
Socket socket=serverSocket.accept();
InputStream in=socket.getInputStream();
ObjectInputStream ois=new ObjectInputStream(in);
OutputStream out=socket.getOutputStream();
ObjectOutputStream oos=new ObjectOutputStream(out);
Call call=(Call)ois.readObject(); //接收客户发送的Call对象
System.out.println(call);
call=invoke(call); //调用相关对象的方法
oos.writeObject(call); //向客户发送包含了执行结果的Call对象
ois.close();
oos.close();
socket.close();
}
}
public Call invoke(Call call){
Object result=null;
try{
String className=call.getClassName();
String methodName=call.getMethodName();
Object[] params=call.getParams();
Class classType=Class.forName(className);
Class[] paramTypes=call.getParamTypes();
Method method=classType.getMethod(methodName,paramTypes);
Object remoteObject=remoteObjects.get(className); //从缓存中取出相关的远程对象
if(remoteObject==null){
throw new Exception(className+"的远程对象不存在");
}else{
result=method.invoke(remoteObject,params);
}
}catch(Exception e){result=e;}
call.setResult(result); //设置方法执行结果
return call;
}
public static void main(String args[])throws Exception {
SimpleServer server=new SimpleServer();
//把事先创建的HelloServiceImpl对象加入到服务器的缓存中
server.register("remotecall.HelloService",new HelloServiceImpl());
server.service();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Spring_Java的反射.rar (66个子文件)
Spring_Java的反射
Java的反射
示例程序源代码
反射示例
7.检索类的构造函数
GetConstructor.java 847B
org
reflect
test
GetConstructor.class 1KB
4.检索父类
GetParentClass.java 466B
UserInfo.java 518B
org
reflect
test
UserInfo.class 760B
GetParentClass.class 1009B
UserInfoMore.class 564B
UserInfoMore.java 376B
5.检索实现的接口
org
reflect
test
GetInterfaces.class 1007B
Student.class 588B
Person.class 237B
Person.java 192B
GetInterfaces.java 558B
Student.java 440B
3.检索修饰符
UserInfo.java 518B
org
reflect
test
GetModifiers.class 2KB
UserInfo.class 760B
GetModifiers.java 987B
8.检索类的方法
org
reflect
test
GetMethods.class 2KB
GetMethods.java 1KB
1.获取一个Class对象
UserInfo.java 518B
org
reflect
test
UserInfo.class 760B
GetClassTest.class 1KB
GetClassTest.java 1KB
6.检索类的成员变量
FieldInfo.java 542B
GetFields.java 721B
org
reflect
test
GetFields.class 1KB
FieldInfo.class 703B
2.获得类名称
org
reflect
test
GetClassName.class 1KB
GetClassName.java 460B
静态代理
1
Hello.java 90B
HelloImpl1.java 135B
HelloProxy.java 318B
HelloImpl2.java 133B
Client.java 420B
proxy
HelloImpl1.class 311B
Client.class 622B
HelloImpl2.class 313B
HelloImpl.class 309B
HelloProxy.class 391B
Hello.class 139B
反射基本操作
ReflectionBase.java 377B
ReflectionBase.class 728B
远程方法调用中的反射
HelloServiceImpl.java 214B
SimpleServer.java 2KB
SimpleClient.java 899B
HelloService.java 137B
Call.java 1KB
remotecall
SimpleClient.class 1KB
HelloServiceImpl.class 612B
Call.class 2KB
HelloService.class 211B
SimpleServer.class 3KB
动态代理
1
Hello.java 90B
HelloProxyFactory.java 817B
HelloImpl.java 134B
Client.java 308B
proxy
Client.class 881B
HelloImpl.class 309B
HelloProxyFactory$1.class 1KB
Hello.class 139B
HelloProxyFactory.class 686B
2
VectorProxy.java 1KB
proxy
VectorProxy.class 2KB
Java的反射.ppt 331KB
Thumbs.db 6KB
共 66 条
- 1
资源评论
vow3344
- 粉丝: 0
- 资源: 7
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功