用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)
用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)
1. 为 Openfire 安装 REST API 插件
安装后在管理平台的插件列表里可以看到 REST API 插件:
2. 配置 REST API 插件
打开 REST API 插件属性页面,配置插件:
注意,如果打不开插件的属性页面,可能是插件版本与 Openfire 的版本不适配的缘故,到 Openfire 官网查看是否适配,如果不适配就下载适配的插件安装。
控制台上显示的版本号:
在官网上查看版本是否适配:
3. 创建 Java Maven 项目
创建项目后,在 pom.xml 文件中加入 Openfire Client 支持:
<dependency>
<groupId>org.igniterealtime</groupId>
<artifactId>rest-api-client</artifactId>
<version>1.1.4</version>
</dependency>
4. 编写 Java 代码
直接上代码:
package oepnfireRestapi;
import java.util.Random;
import javax.ws.rs.core.Response;
import org.igniterealtime.restclient.RestApiClient;
import org.igniterealtime.restclient.entity.AuthenticationToken;
import org.igniterealtime.restclient.entity.UserEntities;
import org.igniterealtime.restclient.entity.UserEntity;
/**
* Purpose: 通过 Rest API 操作用户
* @author Bruce
* @since JDK 1.8
* @date 2019.04.01
* @MaintenancePersonnel Bruce
*/
public class JavaOpenfire {
/**
* 随机数
*/
private static Random r = new Random();
public static void main1(String[] args) {
// **为 openfire Server 服务器端的**
AuthenticationToken authenticationToken = new AuthenticationToken("43zCX7Fw6AoSM7dm");
// 创建客户端
RestApiClient restApiClient = new RestApiClient("http://49.34.110.236", 8088, authenticationToken);
// 删除用户
boolean deleteStatus = deleteByUserName(restApiClient, "newUser66");
if(deleteStatus) System.out.println("删除成功");
else System.out.println("删除失败");
}
/**
* Purpose: CRU
* @author Bruce
* @param args
* @return void
*/
public static void main(String[] args) {
// Basic HTTP Authentication
// AuthenticationToken authenticationToken = new AuthenticationToken("admin", "admin");
// Shared secret key
AuthenticationToken authenticationToken = new AuthenticationToken("43zCX7Fw6AoSM7dm");
RestApiClient restApiClient = new RestApiClient("http://49.34.110.236", 8088, authenticationToken);
String userName = "newUser"+r.nextInt(100);
// 创建用户
boolean crateStatus = createUser(restApiClient, userName, "newUser", "[email protected]", "123456");
if(crateStatus)
System.out.println("创建成功");
else
System.out.println("创建失败");
// 根据 username 查询
UserEntity user = getUserByUserName(restApiClient, userName);
if(user != null) {
System.out.println("User UserName :" + user.getUsername());
System.out.println("User Name :" + user.getName());
System.out.println("User Password :" + user.getPassword());
System.out.println("User E-Mail :" + user.getEmail());
}
// 修改用户信息
boolean udpateStatus = udpateByUserName(restApiClient, userName, "newUserUpdate", "[email protected]", "123456Update");
if(udpateStatus) System.out.println("更新成功");
else System.out.println("更新失败");
}
/**
* Purpose: 根据用户名称删除用户
* @author Bruce
* @param restApiClient
* @param userName
* @return
* @return boolean
*/
public static boolean deleteByUserName(RestApiClient restApiClient,String userName) {
boolean deleteSuccess = false;
try {
UserEntity userEntity = getUserByUserName(restApiClient, userName);
if(userEntity != null) {
Response response = restApiClient.deleteUser(userName);
if(response.getStatus() == 200) deleteSuccess = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return deleteSuccess;
}
/**
* Purpose: 创建用户
* @author Bruce
* @param restApiClient
* @param username
* @param name
* @param email
* @param password
* @return boolean
*/
public static boolean createUser(RestApiClient restApiClient,String username, String name, String email, String password) {
boolean createSuccess = false;
try {
UserEntity userEntity = new UserEntity(username, name, email, password);
Response response = restApiClient.createUser(userEntity);
if(response.getStatus() == 201) createSuccess = true;
} catch (Exception e) {
e.printStackTrace();
}
return createSuccess;
}
/**
* Purpose: 修改用户信息
* @author Bruce
* @param restApiClient
* @param username
* @param name
* @param email
* @param password
* @return
* @return boolean
*/
public static boolean udpateByUserName(RestApiClient restApiClient,String username, String name, String email, String password) {
boolean updateSuccess = false;
try {
UserEntity userEntity = getUserByUserName(restApiClient, username);
if(userEntity != null) {
userEntity.setName(name);
userEntity.setEmail(email);
userEntity.setPassword(password);
Response response = restApiClient.updateUser(userEntity);
if(response.getStatus() == 200) updateSuccess = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return updateSuccess;
}
/**
* Purpose: 根据用户名称获取用户
* @author Bruce
* @param restApiClient
* @return
* @return UserEntities
*/
public static UserEntity getUserByUserName(RestApiClient restApiClient,String userName) {
UserEntity userEntity = null;
try {
userEntity = restApiClient.getUser(userName);
} catch (Exception e) {
e.printStackTrace();
}
return userEntity;
}
/**
* Purpose: 获取所有用户
* @author Bruce
* @param restApiClient
* @return
* @return UserEntities
*/
public static UserEntities getUsers(RestApiClient restApiClient) {
UserEntities userEntities = null;
try {
userEntities = restApiClient.getUsers();
} catch (Exception e) {
e.printStackTrace();
}
return userEntities;
}
}
5. 编译运行
控制台输出创建了新用户:
进入 Openfire 控制台查看确实创建了新用户:
Ok,完毕!