📄 dnsserverserviceimpl.java
字号:
package dnsServer;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.LinkedList;
public class DnsServerServiceImpl extends UnicastRemoteObject implements
DnsServerService {
protected DnsServerServiceImpl() throws RemoteException {
super();
}
/**
*
*/
private static final long serialVersionUID = -8776756004931031423L;
ServiceList list=null;
public String logout(String serviceUrl, String serviceName) throws RemoteException {
list=this.readUserListFromFile();
LinkedList<Node> list1=list.getList();
int i;
for(i=0;i<list1.size();i++){
if(list1.get(i).url.equals(serviceUrl) && list1.get(i).service.equals(serviceName)){
break;
}
}
if(i<list1.size()){
list1.remove(i);
writeUserListToFile(list);
System.out.println("服务器"+serviceUrl+"注销服务"+serviceName+"成功");
return "注销成功";
}
else{
System.out.println("服务器"+serviceUrl+"注销服务"+serviceName+"失败");
return "注销失败";
}
}
public String lookupService(String serviceName) throws RemoteException {
list = this.readUserListFromFile();
LinkedList<Node> list1 = list.getList();
int i;
Node temp = null;
for (i = 0; i < list1.size(); i++) {
if (list1.get(i).service.equals(serviceName)) {
if (temp == null) {
temp = list1.get(i);
} else {
if (temp.failNo > list1.get(i).failNo) {
temp = list1.get(i);
}
}
}
}
if(temp==null){
System.out.println("no service");
return null;
}
System.out.println("客户端查询服务"+serviceName+",返回时间服务器地址为"+temp.url);
return temp.url;
}
public String lookupService(String serviceName, String url) throws RemoteException {
list = this.readUserListFromFile();
LinkedList<Node> list1 = list.getList();
int i;
for (i = 0; i < list1.size(); i++) {
if (list1.get(i).url.equals(url)
&& list1.get(i).service.equals(serviceName)) {
list1.get(i).failNo++;
break;
}
}
int j;
Node temp = null;
for (j = 0; j < list1.size(); j++) {
if(j==i){
continue;
}
if (list1.get(j).service.equals(serviceName)) {
if (temp == null) {
temp = list1.get(j);
} else {
if (temp.failNo > list1.get(j).failNo) {
temp = list1.get(j);
}
}
}
}
if(temp==null){
temp=list1.get(i);
}
writeUserListToFile(list);
System.out.println("客户端查询服务"+serviceName+",返回时间服务器地址为"+temp.url);
return temp.url;
}
public String registerService(String serviceUrl, String serviceName) throws RemoteException {
list=this.readUserListFromFile();
LinkedList<Node> list1=list.getList();
for(int i=0;i<list1.size();i++){
if(list1.get(i).url.equals(serviceUrl) && list1.get(i).service.equals(serviceName)){
System.out.println("服务器"+serviceUrl+"的服务"+serviceName+"已经注册过");
return "该服务已经注册";
}
}
Node node=new Node(serviceUrl,serviceName);
list1.add(node);
writeUserListToFile(list);
System.out.println("服务器"+serviceUrl+"注册服务"+serviceName+"成功");
return "注册成功";
}
private ServiceList readUserListFromFile(){
ServiceList list=null;
ObjectInputStream ois;
FileInputStream fis = null;
try {
fis = new FileInputStream("serviceList.txt");
ois=new ObjectInputStream(fis);
Object obj=ois.readObject();
list=(ServiceList)obj;
ois.close();
fis.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}finally{
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return list;
}
private void writeUserListToFile(ServiceList list){
ObjectOutputStream oos;
FileOutputStream fos = null;
try {
fos = new FileOutputStream("serviceList.txt",false);
oos = new ObjectOutputStream(fos);
oos.writeObject(list);
oos.flush();
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -