JavaScript (V8), 136 bytes
A naive solution that prints the triplets m n r.
X=>{for(m=0;m++<X;)for(n=m;n++<X;)for(x=0;x++<X;d=(m*m+n*n+x*x+y*y)**.5,!(d%2||y%1||y<x|d>X*2)&m+n<d&x+y<d&&m-x&&print(m,n,d/2))y=m*n/x}
A naive solution that prints the triplets m n r.
X=>{for(m=0;m++<X;)for(n=m;n++<X;)for(x=0;x++<X;d=(m*m+n*n+x*x+y*y)**.5,!(d%2||y%1||y<x|d>X*2)&m+n<d&x+y<d&&m-x&&print(m,n,d/2))y=m*n/x}