Hex-string representation of a byte array
Your code is good. The CXF code has a bug, and is missing leading-zero values when the byte value is less than 16.

Your code can be improved, though. It's doing a lot more work than it needs to do get the characters right.

Converting the value to a "longer" string and then taking the substring is a long-winded way of getting the padding right.

Consider a lookup-table for the task, and then use that as a mechanism for fast string building using a char array.

I have had a lot of success with this method:

private static final char[] hexchars = "0123456789abcdef".toCharArray();

private static String toHexRL(byte[] checksumArray) {
    int len = checksumArray.length * 2;
    char[] hchars = new char[len];
    int pos = 0;
    for (byte b : checksumArray) {
        hchars[pos++] = hexchars[(b&gt;&gt;4) &amp; 0xf];
        hchars[pos++] = hexchars[b &amp; 0xf];
    }
    return new String(hchars);
}


Note, I have put your method, my method, and the CXF method in to a test case here on Ideone: https://ideone.com/o66K1P

Note: To my knowledge, there's no authoritative (Java core library) for converting an array of byte to a hex string.