Usando o JAXB do JDK sem o prefixo ns2

Depois de ler todos os posts sobre isso nos fóruns da Oracle, Stackoverflow, java.net, finalmente estou postando aqui. Estou usando o JAXB para criar arquivos XML, mas o problema é que ele adiciona o famosons2 prefixo antes dos meus elementos, eu tentei todas as soluções que ninguém trabalhou para mim. java -version dá "1.6.0_37"

Solução 1: Usando o package-info.java

Eu criei o arquivo no meu pacote contendo minhas classes anotadas @ Xml * com o seguinte conteúdo:

@XmlSchema(
    namespace = "http://mynamespace",
    elementFormDefault = XmlNsForm.QUALIFIED,
    xmlns = {
        @XmlNs(namespaceURI = "http://mynamespace", prefix = "")
    }
)
package com.mypackage;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
import javax.xml.bind.annotation.XmlSchema;

Solução 2: NamespacePrefixMapper

Eu criei a seguinte classe e configurei o mapeador para o marshaller:

// Change mapper to avoid ns2 prefix on generated XML
class PreferredMapper extends NamespacePrefixMapper {
    @Override
    public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
        return "";
    }
}
NamespacePrefixMapper mapper = new PreferredMapper();
try {
    marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", mapper);
}
catch (PropertyException e) {
   logger.info("No property for com.sun.xml.bind.namespacePrefixMapper found : " + e.getMessage());
}

Comcom.sun.xml.bind.namespacePrefixMapper nada acontece, comcom.sun.xml.internal.bind.namespacePrefixMapper, lança a exceção.

Eu também adicionei a dependência maven no meu pom, mas parece que a versão do JRE tem uma prioridade mais alta:

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.4</version>
</dependency>

Você pode me ajudar nisso?

PS: Eu não posso incluir diretamente o jar no meu caminho de classe por razões de construção. PS2: Eu não posso usar o JDK7. Desde já, obrigado.

questionAnswers(2)

yourAnswerToTheQuestion