Spring WebApp 如何管理不同的客户端?要求?
可能有很多人读到这个问题时会微笑......
这是我的问题。 我有一个 Spring 3 Web 应用程序,既充当客户端又充当服务器。它从客户端“C”获取一些 XML 数据,对其进行处理,然后将它们发送到服务器“S”。 来自 C 的输入 XML 必须根据一种模式(例如“c.xsd”)进行验证,而来自 S 的输出 XML 必须根据不同的模式(例如“s.xsd”)进行验证。
我使用 jaxb2 进行编组和解组。
在文档中,我读到可以为 [un]/marshaller 设置“schema”属性。
因此,当我获得输入时,我需要一个 a.xsd 进行验证,当我生成输出时,我需要一个 b.xsd...问题如下: 当我将验证模式从 c,xsd 切换到 s.xsd(在处理来自 C 的请求后生成输出)时,我是否会更改服务器的状态?换句话说,如果我在处理来自 C 的第一个请求时收到来自客户端 C2 的第二个请求,我是否会尝试根据 s.xsd 验证 C2 输入?应用程序会自动将 C2 请求放在不同的线程上吗?如果没有,我该如何配置 spring 来做到这一点?
多谢!
probably there are a lot of people who will smile reading this question...
Here's my problem.
I have a Spring 3 web application acting both as a client and server. It gets some XML data from a client "C", it processes them, and it sends them to a server "S".
The input XML fron C must be validated against a schema (e.g. "c.xsd") while the output XML to S must be validated against a different one (e.g. "s.xsd").
I'm using jaxb2 for marshalling and unmarshalling.
In the documentation I read that it is possible to set the "schema" attribute for the [un]/marshaller.
Therefore, I need to have an a.xsd for the validation when I get an input and a b.xsd when I produce an output... the question is the following:
when I switch the validation schema from c,xsd to s.xsd (producing an output after processing a request from C), do I change the status of the server? In other words, If I am receiving a second request form a client C2 when I'm processing the first request from C, will I attempt to validate C2 input against s.xsd? Will the application automatically put the C2 request on a different thread? If not, how can I configure spring to do so?
Thanks alot!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我会尝试一下:
您可以通过在 Unmarshaller 上设置架构 (c.xsd) 来完成此操作。
您可以通过在编组器上设置架构 (s.xsd) 来完成此操作。
不,因为 Unmarshaller 始终使用 c.xsd,而 Marshaller 始终使用 s.xsd。
由于 Marshaller 和 Unmarshaller 不是线程安全的,因此您必须确保不要在线程之间共享它们。
I'll take a stab at it:
You can do this by setting a schema (c.xsd) on the Unmarshaller.
You can do this by setting a schema (s.xsd) on the Marshaller.
No, because the Unmarshaller is always using c.xsd and the Marshaller is always using s.xsd.
Since Marshaller and Unmarshaller are not thread safe you must be sure not to share them among threads.