用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)

用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)

1. 为 Openfire 安装 REST API 插件
安装后在管理平台的插件列表里可以看到 REST API 插件:
用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)

2. 配置 REST API 插件
打开 REST API 插件属性页面,配置插件:
用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)
注意,如果打不开插件的属性页面,可能是插件版本与 Openfire 的版本不适配的缘故,到 Openfire 官网查看是否适配,如果不适配就下载适配的插件安装。

控制台上显示的版本号:
用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)

在官网上查看版本是否适配:

用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)

3. 创建 Java Maven 项目
创建项目后,在 pom.xml 文件中加入 Openfire Client 支持:
<dependency>
    <groupId>org.igniterealtime</groupId>
    <artifactId>rest-api-client</artifactId>
    <version>1.1.4</version>
</dependency>

用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)

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. 编译运行
控制台输出创建了新用户:
用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)
进入 Openfire 控制台查看确实创建了新用户:
用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)

Ok,完毕!