Actually solitons are in some sense almost the opposite of
dispersion. They depend critically on nonlinearity.
If you have a strong nonlinearity and weak dispersion,
you can form shocks and solitons.
Conversely, if you have strong dispersion and relatively
weak nonlinearity, the dispersion will disperse the
would-be shock before it can form.
-- That's why you see solitons in water in a shallow, one-
dimensional trough. Shallow --> waves of modest height
are nonlinear.
-- In contrast, in a deep pond with a two-dimensional surface,
waves of modest height are linear, and dispersion dominates.
You can have plenty of dispersion in a linear system. The
wave equation for waves in a waveguide is dispersive, even
though the system is linear to an excellent approximation
(with 10 or 20 orders of magnitude to spare).