I'm assuming you're talking about javax.jms.MessageListener here. If your server goes down, the listener wouldn't know a thing, since it's only concerned with messages actually being consumed (since none are at that point, it's oblivious to the situation).
You should check into using javax.jms.ExceptionListener. Note that the spec says that JMS providers should attempt to correct problems before propogating the exception to the ExceptionListener. Assuming you have a nice provider, it would reconnect so your MessageListener works as expected. But do check your JMS provider's documentation.
As for your "middle" question .... as long as your subscriber is durable you shouldn't have any issues. You can read all about the durability issues in the spec or somewhere else -- I read the O'Reilly JMS book -- run reading.
Nathaniel Stodard<br />SCJP, SCJD, SCWCD, SCBCD, SCDJWS, ICAD, ICSD, ICED