JAXB e interfaces

Bom dia pessoal,

Estou com um problema com o JAXB. Temos os seguintes trechos de código:

public interface Interchangeable {
...
}
@XmlRootElement
public class DWInterchangeable implements Interchangeable {
@XmlElement
private String currentEncryptedName;
@XmlElement
private String newEncryptedName;
...
}
@XmlRootElement
public class Request {
@XmlElement
private Long id;
@XmlElement
private String operation;
@XmlElement
private Interchangeable interchangeable;
...
}
...
Request request = new Request();
// Preenchimento do objeto request
Marshaller marshaller = JAXBContext.newInstance(Request.class).createMarshaller();
Writer writer = new StringWriter();
marshaller.marshal(request, writer);
...

A ideia é criar um xml conforme abaixo, onde a tag <interchangeable> tenha conteúdo de acordo com as várias implementações da interface Interchangeable que existem no projeto.

&lt;request&gt;
   &lt;id&gt;...&lt;/id&gt;
   &lt;operation&gt;...&lt;/operation&gt;
   &lt;interchangeable&gt;
       ...
   &lt;/interchangeable&gt;
&lt;/request&gt;

P.ex., usando DWInterchangeable, teríamos:

&lt;request&gt;
   &lt;id&gt;1298391&lt;/id&gt;
   &lt;operation&gt;create&lt;/operation&gt;
   &lt;interchangeable&gt;
       &lt;dwinterchangeable&gt;
           &lt;currentencryptedname&gt;twrWew&lt;/currentencryptedname&gt;
           &lt;newEncryptedName&gt;qwquw&lt;/newEncryptedName&gt;
       &lt;/dwinterchangeable&gt;
   &lt;/interchangeable&gt;
&lt;/request&gt;

Porém, pelo que pesquisamos (e pela exceção que foi lançada), JAXB e interface não se dão bem, e por isso, esta solução não está funcionando. Tentamos outra solução com CDATA, porém gera caracteres de scape, além de não ficar uma solução legal. Assim, agradeço de antemão possíveis dicas com sugestões de novas solução, de design ou correção de código.