Openfire 使用RMI远程调用同步好友列表
来源:互联网 发布:汉语拼音标准发音软件 编辑:程序博客网 时间:2024/05/22 01:50
Openfire 使用RMI远程调用同步好友列表
- 博客分类:
- rmi
1. 定义接口:
public interface RmiRemoteIntface extends Remote{
void deleteFriend(String user1, String user2) throws RemoteException;
String addFriend(String user1, String user2) throws RemoteException;
}
2. 实现接口
public class RmiRemoteObj extends UnicastRemoteObject implements
RmiRemoteIntface {
protected RmiRemoteObj() throws RemoteException {
super();
}
@Override
public void deleteFriend(String user1, String user2) throws RemoteException {
// IQ iq = new IQ();
// iq.setType(IQ.Type.set);
// for (ClientSession session : XMPPServer.getInstance().getRoutingTable().getClientsRoutes(true)) {
// if (session.getAddress().getNode().equals(user1)) {
// processDeleteMsg(iq, user2, session);
// } else if (session.getAddress().getNode().equals(user2)) {
// processDeleteMsg(iq, user1, session);
// }
// }
// Element element = null;
}
public String addFriend(String user1, String user2) throws RemoteException{
// IQ iq = new IQ();
// iq.setType(IQ.Type.set);
// for (ClientSession session : XMPPServer.getInstance().getRoutingTable().getClientsRoutes(true)) {
// if (session.getAddress().getNode().equals(user1)) {
// processAddMsg(iq, user2, session);
// } else if (session.getAddress().getNode().equals(user2)) {
// processAddMsg(iq, user1, session);
// }
System.out.println(user1+ " "+user2);
return user1+" "+user2+ " hello world " ;
}
3. 编写RmiServer
public class RmiServer extends Thread{
public static int rmi = 0;
public static RmiServer rmiServer;
static{
rmiServer = new RmiServer();
rmiServer.setDaemon(false);
rmiServer.start();
}
public static void main(String args[]){
//创建并安装安全管理器
// if(System.getSecurityManager() == null){
// System.setSecurityManager(new RMISecurityManager());
// }
try{
LocateRegistry.createRegistry(8057);
//创建远程对象
RmiRemoteIntface rro = new RmiRemoteObj();
//将实例注册到专有的URL
Naming.rebind("//127.0.0.1:8057/RmiRemoteObj", rro);
System.out.println("RMI服务器正在运行...");
}catch(Exception e){
e.printStackTrace();
}
}
public void run(){
try{
LocateRegistry.createRegistry(8057);
//创建远程对象
RmiRemoteIntface rro = new RmiRemoteObj();
//将实例注册到专有的URL
Naming.rebind("//127.0.0.1:8057/RmiRemoteObj", rro);
System.out.println("RMI服务器正在运行...");
}catch(Exception e){
e.printStackTrace();
}
}
4. 编写RmiClient
public class RmiClient {
public static void main(String args[]){
//创建并安装安全管理器
// if(System.getSecurityManager()==null)
// {
// System.setSecurityManager(new RMISecurityManager());
// }
String host = "rmi://127.0.0.1:8057/RmiRemoteObj";
// String host = "rmi://192.168.1.103:2099/RmiRemoteObj";
// String host = "rmi://192.168.1.119:2099/RmiRemoteObj";
// if(args.length > 0){
// host = args[0];
// }
try{
//根据制定的URL定位远程对象
RmiRemoteIntface rri = (RmiRemoteIntface)Naming.lookup(host);
// rri.addFriend("test01", "test02");
System.out.println(rri.addFriend("aaaaaaa", "ccc"));
// rri.deleteFriend("admin", "kocko");
System.out.println("调用成功!");
}catch(Exception e){
e.printStackTrace();
}
}
5. 在Openfire启动时加载Rmi服务
在类org.jivesoftware.openfire.spi.ConnectionManagerImpl 的方法 startListeners()startHTTPBindListeners后面加上RmiServer rmi = new RmiServer();
搞定!
RmiServer rmi = new RmiServer();
- Openfire 使用RMI远程调用同步好友列表
- openfire+smack使用ListFragment加载好友列表
- 使用RMI实现远程方法调用
- 使用Spring RMI调用远程方法
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用SpringBoot进行远程RMI调用
- 使用Java的RMI完成远程调用
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- 使用 RMI + ZooKeeper 实现远程调用框架
- [Unity&多人游戏插件]Playfab 的下载 安装以及简单的说明
- Android实现文本复制到剪切板功能(ClipboardManager)
- 谷歌大脑科学家亲解 LSTM:一个关于“遗忘”与“记忆”的故事
- 走入javascript(四)操作标签属性操作css样式[]的使用
- [最短路] 2017 计蒜之道 复赛 D. 百度地图导航
- Openfire 使用RMI远程调用同步好友列表
- 从PAXOS到ZOOKEEPER分布式一致性原理与实践--3PC(Three-Phase Commit)
- 通过http方式向openfire客户端发信息
- [数位DP 莫比乌斯反演] 2017 计蒜之道 复赛 A. 阿里云秘钥池
- Ignoring InnerClasses attribute错误
- iOS 画饼状图
- RNN以及LSTM的介绍和公式梳理
- 下载Tomcat时Tomcat网站上的core和deployer的区别
- 系统学习深度学