【发布时间】:2011-02-04 23:06:30
【问题描述】:
我有一个网络服务(使用 Spring-WS)。
我有一个包含多个架构(schema1.xsd、schema2.xsd 和 schema3.xsd)的 jar,我将它们包含在我的 Web 服务中。
有没有办法在我的 web 服务 wep 应用程序中通过 servlet 从 jar 中公开模式?
我的 Spring MessageDispatcherServlet 映射到 /ws/
我希望将我的架构暴露给 /schemas/schema1.xsd /schemas/schema2.xsd 等等。
我知道如何使用 servlet 来实现,但它过于冗长,必须有更好的方法。
我的想法是有一个 servlet 过滤器和所有点击 /schemas/ 检查它是否在我的允许资源列表中并显示它。
这必须是与服务器无关的解决方案。 (例如http://tuckey.org/urlrewrite/ 将不起作用)。
谢谢。
【问题讨论】:
-
小心 - 您在 WEB-INF/ 中的资源受到保护是有原因的。如果您构建了一个真正通用的解决方案(这会很巧妙),您可能会无意中提供对 WEB-INF/ 中任何资源的访问权限。不一定是坏事,但您会考虑到这一点,并考虑是否以及如何限制对您打算服务的资源的访问。
-
Spring-WS 很好地支持根据您的模式自动生成 WSDL 文件,并能够为 wsdl 提供服务。这本质上将包括 xsd 文件中的定义。你在用这个吗?
-
Wsdl11Definition 将使用 xsd 就好了。问题不在于 wsdl,而在于 xsd 的可用性。每说如果我想使用 SoapUI 给它 wsdl 它将无法加载,因为它会尝试加载所有 xsd 并且它们不会在那里
-
查看我的第二个答案以了解此问题的替代解决方案。