可能有很多人会微笑着阅读这个问题...
这是我的问题。 我有一个Spring 3 Web应用程序,同时充当客户端和服务器。它从客户端“C”获取一些XML数据,它处理它们,然后将它们发送到服务器“S”。 输入XML fron C必须针对模式(例如“c.xsd”)进行验证,而输出XML到S必须针对不同的模式进行验证(例如“s.xsd”)。
我正在使用jaxb2进行编组和解组。
在文档中,我读到可以为[un] / marshaller设置“schema”属性。
因此,当我获得输入时,我需要有一个用于验证的a.xsd,当我生成输出时,我需要有一个b.xsd ...问题如下: 当我将验证模式从c,xsd切换到s.xsd(在处理来自C的请求后生成输出)时,是否要更改服务器的状态?换句话说,如果我在处理来自C的第一个请求时从客户端C2收到第二个请求,我是否会尝试针对s.xsd验证C2输入?应用程序会自动将C2请求放在不同的线程上吗?如果没有,我如何配置弹簧呢?
非常感谢!
答案 0 :(得分:2)
我会抓住它:
必须验证输入XML fron C. 对模式(例如“c.xsd”)
您可以通过在Unmarshaller上设置架构(c.xsd)来完成此操作。
而输出XML必须是 验证了另一个 (例如“s.xsd”)。
您可以通过在Marshaller上设置架构(s.xsd)来实现此目的。
当我切换验证架构时 从c,xsd到s.xsd(生成一个 处理完请求后的输出 C),我是否改变了状态 服务器
不,因为Unmarshaller总是使用c.xsd而且Marshaller总是使用s.xsd。
由于Marshaller和Unmarshaller不是线程安全的,你必须确保不要在线程之间共享它们。