}
如下是RMIMethodDefinition类,用来描述实现类中实现注解里面接口数组里面的接口的方法。
package com.rmi.core;
import java.lang.reflect.Method;
/**
* 保存实现类实现的接口方法信息的类
* 将扫描到的实现类方法和对应的实现类对象保存;
*
* @author dingxiang
*
*/
public class RMIMethodDefinition {
private Object object;
private Method method;
public RMIMethodDefinition() {
}
public RMIMethodDefinition(Object object, Method method) {
this.object = object;
this.method = method;
}
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
public Method getMethod() {
return method;
}
public void setMethod(Method method) {
this.method = method;
}
}
服务端服务端
RmiServer
服务端的端口可以通过配置文件(如properties)文件来配置,可以参见properties文件解析。
package com.rmi.core;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import com.mec.util.PropertiesParser;
/**
* 1.该类是服务端类
* 2.提供了开启和关闭的方法
* 3.可以设置服务端端口(rmiPort)
* 4.对于侦听到的每一个客户端的方法调用请求
* 这里采用了线程池开启一个RmiAction来处理
*
* @author dingxiang
*
*/
public class RMIServer implements Runnable{
private static final int DEFAULT_PORT=54199;
private int rmiPort;
private ServerSocket server;
private ThreadPoolExecutor threadpool;
private volatile boolean goon;
public RMIServer() {
this.rmiPort=DEFAULT_PORT;
}
public void loadRMIServerConfig(String RMIServerConfigPath) {
PropertiesParser.loadProperties(RMIServerConfigPath);
String configRMIServerPortStr=PropertiesParser.value("configRMIServerPort");
if (configRMIServerPortStr!=null&&configRMIServerPortStr.length()>0) {
int rmiServerPort=Integer.valueOf(configRMIServerPortStr);
if (rmiServerPort>0&&rmiServerPort<65536) {
this.rmiPort=rmiServerPort;
}
}
}
public ThreadPoolExecutor getThreadpool() {
return threadpool;
}
评论0