private void loadLatestServerInfo() {
        Document xmlResponse;
        File file = new File(JiveGlobals.getHomePath() + File.separator + "conf",
                "server-update.xml");
        if (!file.exists()) {
            return;
        }
        // Check read privs.
        if (!file.canRead()) {
            Log.warn("Cannot retrieve server updates. File must be readable: " + file.getName());
            return;
        }
        try {
            xmlResponse = SAXReaderUtil.readDocument(file);
        } catch (Exception e) {
            Log.error("Error reading server-update.xml", e);
            if (e instanceof InterruptedException) {
                Thread.currentThread().interrupt();
            }
            return;
        }

        // Parse info and recreate update information (if still required)
        Element openfire = xmlResponse.getRootElement().element("openfire");
        if (openfire != null) {
            Version latestVersion = new Version(openfire.attributeValue("latest"));
            URL changelog = null;
            try
            {
                changelog = new URL( openfire.attributeValue("changelog") );
            }
            catch ( MalformedURLException e )
            {
                Log.warn( "Unable to parse URL from openfire changelog value '{}'.", openfire.attributeValue("changelog"), e );
            }

            URL url = null;
            try
            {
                url = new URL( openfire.attributeValue("url") );
            }
            catch ( MalformedURLException e )
            {
                Log.warn( "Unable to parse URL from openfire download url value '{}'.", openfire.attributeValue("url"), e );
            }
            // Check if current server version is correct
            Version currentServerVersion = XMPPServer.getInstance().getServerInfo().getVersion();
            if (latestVersion.isNewerThan(currentServerVersion)) {
                serverUpdate = new Update("Openfire", latestVersion, String.valueOf(changelog), String.valueOf(url) );
            }
        }
    }
Loads list of available plugins and latest available server version from
conf/available-plugins.xml and conf/server-update.xml respectively.
xmppserver/src/main/java/org/jivesoftware/openfire/update/UpdateManager.java