That being said setUniformi() doesn't do any "binding" it associates a uniform name with the value at the unit location.
When you activate a texture slot:
gl.glActiveTexture(GL4.GL_TEXTURE0 + unit);
you are ready to bind a texture:
With your texture(s) bound you now need to tell the program which uniform references the slot:
Did you check your image buffer to make sure that it's not full of garbage?
Edit: to be clear, you do not have to call glActiveTexture() when only using one texture at a time, however the others are a must.