gpt4 book ai didi

java - 具有模式验证的 JAX-RS

转载 作者:行者123 更新时间:2023-11-30 09:45:54 26 4
gpt4 key购买 nike

我有一个 RESTful 服务,它有一个路径参数和一个从请求正文中解码的参数。请求正文参数是 XML,我有一个 XSD。我一直在尝试根据 XSD 验证 XML 有效负载,但无济于事。我已经尝试了以下内容,如 here 所述:

<jaxrs:server address="/"
serviceClass="my.endpoint.class">
<jaxrs:schemaLocations>
<jaxrs:schemaLocation>classpath:schema/myschema.xsd</jaxrs:schemaLocation>
</jaxrs:schemaLocations>
</jaxrs:server>

正在找到模式(至少没有错误),但我认为无效的有效负载不会引发异常。与 XSD 内容不匹配的参数将作为 null 通过。它可能不相关,但我自动生成的负载类具有三个属性,其中一些是必需的。

我已经简要介绍了如何创建 MessageBodyReader,如 here 所述但我认为我遇到了范围问题,并且在调用 readFrom 时我的模式对象不可用。

如有任何帮助或建议,我们将不胜感激!

最佳答案

原来我使用的 servlet 不接受上面显示的 jaxrs 配置。我改变了使用这个:

<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

为此:

<servlet-class>
org.apache.cxf.transport.servlet.CXFServlet
</servlet-class>
<init-param>
<param-name>config-location</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</init-param>

我的 applicationContext.xml 的片段

<jaxrs:server address="/">
<jaxrs:schemaLocations>
<jaxrs:schemaLocation>classpath:schema/myschema1.xsd</jaxrs:schemaLocation>
<jaxrs:schemaLocation>schema/myschema2.xsd</jaxrs:schemaLocation>
<jaxrs:schemaLocation>schema/myschema3.xsd</jaxrs:schemaLocation>
</jaxrs:schemaLocations>

<jaxrs:serviceBeans>
<bean class="my.package.endPoint1" />
<bean class="my.package.endPoint2" />
</jaxrs:serviceBeans>

<jaxrs:features>
<cxf:logging />
</jaxrs:features>
</jaxrs:server>

架构引用来自资源目录,与 WEB-INF 相邻。

关于java - 具有模式验证的 JAX-RS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7401231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com