Alterando o cabeçalho XML produzido pelo marshaller JAXB

Atualmente, estou usando o código a seguir para empacotar um objeto em uma seqüência xml

    JAXBContext context;

    try {
        context = JAXBContext.newInstance(heartbeat.getClass());
        StringWriter writer = new StringWriter();
        Marshaller marshaller = context.createMarshaller();

        heartbeat.setHeader(header);
        heartbeat.setHeartbeatEvent(event);

        marshaller.marshal(heartbeat, writer);
        String stringXML = writer.toString();
        return stringXML;

    } catch (JAXBException e) {
        throw new RuntimeException("Problems generating XML in specified "
                + "encoding, underlying problem is " + e.getMessage(),
                e);
    }

Qual produz o seguinte cabeçalho

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Minha saída desejada é a seguinte

<?xml version=\"1.0\"?>

Adicionando isso ao marshaller

marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE);
marshaller.setProperty("com.sun.xml.bind.xmlHeaders", "<?xml version=\"1.0\"?>");

eu recebi

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?xml version="1.0"?>

e alterar a propriedade JAXB_FRAGMENT para TRUE remove o cabeçalho completamente. Eu tenho acompanhado oJAXB - Remover 'standalone = "yes"' do XML gerado thread tentando resolver o problema, mas eu não tive sorte até agora. Alguém pode me dar algumas dicas sobre como obter o meu cabeçalho desejado do marshaller JAXB?

questionAnswers(2)

yourAnswerToTheQuestion