Spring WebApp如何管理不同客户的请求?

时间:2011-05-20 18:22:56

标签: spring validation web-applications jaxb spring-ws

可能有很多人会微笑着阅读这个问题...

这是我的问题。 我有一个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请求放在不同的线程上吗?如果没有,我如何配置弹簧呢?

非常感谢!

1 个答案:

答案 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不是线程安全的,你必须确保不要在线程之间共享它们。