0
オブジェクトをXML表記でアンマーシャリングしようとすると、ClassCastExceptionが発生します。JAXBを使用してInputStreamをアンマーシャリングする方法は?
私のデスクトップクライアントは、適切にフォーマットされ、検証されたリストを返すRESTfulサービスを呼び出します。
例外を出してくれる方法は次のとおりです。
public class DecodeXML {
JAXBContext jaxbContext;
Unmarshaller jaxbUnmarshaller;
public Agent convertXmlToAgent(InputStreamReader inputStreamReader) {
// XStream xstream = new XStream();
// xstream.processAnnotations(Agent.class);
// xstream.processAnnotations(FtpConnection.class);
// xstream.processAnnotations(SmtpConnection.class);
// xstream.processAnnotations(SqlConnection.class);
//
// return (Agent) xstream.fromXML(inputStreamReader);
try {
jaxbContext = JAXBContext.newInstance(Agent.class);
jaxbUnmarshaller = jaxbContext.createUnmarshaller();
jaxbUnmarshaller.unmarshal(inputStreamReader);
} catch (JAXBException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return (Agent) jaxbUnmarshaller;
}
}
コメントアウトセクションでは、私から動くよ旧実装です。
Agent
POJOが、ここで私を見ていないです何
@XmlRootElement (name = "agent")
@XmlAccessorType(XmlAccessType.NONE)
public class Agent extends BasePojo {
private static final long serialVersionUID = 1L;
@XmlElement(name = "description")
private String description;
@XmlElement(name = "agentId")
private String agentId;
@XmlElement(name = "ftpConnection")
private FtpConnection ftpConnection;
@XmlElement(name = "smtpConnection")
private SmtpConnection smtpConnection;
@XmlElement(name = "sqlConnection")
private SqlConnection sqlConnection;
@XmlElement(name = "pollIntervall")
private Integer pollInterval;
@XmlElement(name = "lastExecutionDate")
private Date lastExecutionDate;
// getters and setters
のですか?