With those latency requirements why did you use Java?
It's by no means new or even especially difficult these days. The resulting code is far more maintainable and robust than C++ solutions.
And yeah, we restart everyday (we only trade US equities, so plenty of downtime for a restart).
We're currently fighting a Java app that in general has decent latency (10s of usecs), but has outliers of greater than a second when GC kicks in. We don't have that issue with the C++ components of our trading system.