don't use NPE, throw IllegalStateException
support optional headers for the JMS message
constructor that is given a factory
endpoint supports URI