Кажется, что во время демаршаллинга возвращается экземпляр JAXBElement. Вы можете проверить возвращаемый тип и обработать его соответствующим образом:
Object obj = unmarshaller.unmarshal(reader);
CreateOrderRequestType msg = null;
if (obj instanceof CreateOrderRequestType) {
msg = (CreateOrderRequestType) obj;
}
if (obj instanceof JAXBElement) {
msg = ((JAXBElement<CreateOrderRequestType>) obj).getValue();
}
if (msg == null) {
throw new OSMException("Unable to Convert XML String to Java Objects ");
}
И, кстати, было бы лучше сделать переменную JAXBContext jaxbContext;
переменной класса и инициировать ее не во время вызова службы, а в конструкторе или в некотором методе инициализации, потому что инициализация JAXBContext является трудоемкой операцией и обычно должна происходить один раз. JAXBContext является потокобезопасным, и превращение его в переменную класса не должно влиять на функциональность службы.