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 中的好友关系管理涉及到 XML 数据包的交换(如 `<presence>` 和 `<iq>`)以及与数据库的交互,通过这些操作来维持好友列表的实时性和准确性。理解和掌握这一过程对于管理和开发基于 Openfire 的...
OpenFire 使用 HazelCast 集群 OpenFire 是一款流行的即时通信服务器软件,而 HazelCast 是一个高性能的分布式内存数据网格。OpenFire 使用 HazelCast 集群可以提高系统的可扩展性和高可用性。本文将从集群概念、两...
### XMPP简介及OpenFire使用手册 #### 一、XMPP概述 **1.1 什么是XMPP** XMPP(Extensible Messaging and Presence Protocol,可扩展消息与存在协议)是目前四大主流即时消息(Instant Messaging, IM)协议之一。...
在Openfire中,用户可以通过添加好友来建立联系人列表,从而实现消息的发送和接收。下面将详细解释Openfire中添加好友的过程以及涉及到的相关概念。 1. **Presence包与类型**: - `unavailable`: 用户下线或者离线...
标题“使用openfire登录android”涉及的技术点主要是集成Openfire服务器和MySQL数据库,以及在Android平台上实现登录功能。Openfire是一款开源的即时通讯(Instant Messaging, IM)服务器,它基于XMPP(Extensible ...
openfire添加好友离线请求推送
你还将了解到如何设置访问控制列表(ACL),以限制特定用户的权限,以及如何使用OpenFire的内置安全功能,如防止垃圾邮件和恶意行为。 OpenFire的扩展性和可定制性是其一大亮点。书中会讲述如何利用OpenFire的插件...
通过以上步骤,你就能成功地使用Strophe.js通过flXHR实现跨域访问Openfire服务器,从而实现在不同域的网页上进行即时通讯。这种方法虽然依赖于Flash插件,但仍然是一个有效的解决方案,尤其是在一些旧的或不支持...
**Android Demo**,即`MyXmpp`,可能是一个演示应用,展示了如何使用Openfire服务器和ASMACK库在Android平台上实现即时通讯功能。这个示例可能包括登录、发送和接收消息、查看联系人列表、处理离线消息等功能。...
openfire mac系统安装文件 Openfire (formerly Wildfire) is a cross-platform real-time collaboration server based on the XMPP (Jabber) protocol.
使用Ant编译Openfire源代码,添加build.xml文件,编译源代码。 四、 修改Openfire源代码 修改org.jivesoftware.openfire.XMPPServer类的locateOpenfire()方法,将verifyHome("..", jiveConfigName)修改为...
openfire3.6.3插件开发方法说明: winxp/myeclipse6.5/jdk1.5&1.6/mysql5.0/openfire3.6.3 开发步骤:1. 布署openfire3.6.3源码(请参考openfire3.6.3导入eclipse项目实现方法)
当我们需要使用Smack来访问Openfire服务器时,主要涉及以下几个核心知识点: 1. **XMPP协议**:首先,我们需要了解XMPP是什么。XMPP是一种基于XML的实时通讯协议,用于在多个系统之间交换结构化的信息。它为开发者...
在Openfire的使用过程中,可能会遇到各种报错,例如"openfire3.9.1所需jar包改过后,需要的都在.zip"可能涉及到依赖库的问题。为了解决这些问题,你可以查阅"报错集",这是一个包含了Openfire常见错误及其解决方案的...
3. **联系人管理**:用户可以查看和管理自己的联系人列表,添加新的好友,同时可以查看好友的状态,了解他们是否在线。 4. **群聊功能**:支持创建和参与群组聊天,方便团队协作或社交交流。 5. **离线消息**:...
- 客户端需要实现登录注册、好友管理、群组功能、发送接收消息等功能,这些都涉及到Android的Activity、Fragment、Intent等组件的使用。 3. **Openfire集成**: - 开发者需要在Android客户端中集成Smack库,这是...
本项目聚焦于基于Openfire的Android聊天软件开发,旨在为用户提供一个可以注册、登录、聊天、查找和添加好友的全方位沟通平台。 【描述】:“基于openfire的Android聊天软件,可注册 登陆 聊天 查找 添加好友” ...
在Linux环境下,Openfire是一款基于Java的开源即时通讯(IM)服务器,它允许用户通过XMPP协议进行实时通信。为了在Linux系统上成功安装并配置Openfire,我们需要遵循一系列步骤,涉及的主要组件包括JDK(Java ...
3. 建立连接:使用XMPPTCPConnection类创建连接实例,并调用connect()方法尝试连接到Openfire服务器。 4. 登录验证:连接成功后,使用login()方法进行用户身份验证。这需要提供用户名、密码以及可选的资源名(如...
8. **扩展与集成**:OpenFire支持与其他系统的集成,例如与其他应用同步用户数据,或者通过Webhook实现事件通知。 在OpenFire的压缩包文件"onlineuser"中,可能包含了插件的源代码、配置文件或其他资源,你可以通过...