The 27-year old made his NRL/Knights debut in Round 1 of 2007 and has since played 110 games for the Club, scoring 46 tries.
“We are pleased to re-sign James,” CEO Matt Gidley said.
“He is the ultimate professional and sets a high standard at our Club.
“James is a player who is highly respected for the professionalism he displays on and off the field.
“We think James has his best football ahead of him and his consistency has been rewarded with an opportunity to continue to represent our Club.”