【问题标题】:JAX-RS with Schema Validation带有模式验证的 JAX-RS
【发布时间】:2011-11-16 02:31:26
【问题描述】:

我有一个 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 传入。它可能不相关,但我的自动生成的有效负载类具有三个属性,其中一些是必需的。

here 所述,我已经简要地创建了一个MessageBodyReader,但我认为我遇到了范围问题,并且在调用readFrom 时我的架构对象不可用。

任何帮助或建议将不胜感激!

【问题讨论】:

    标签: java spring rest cxf jax-rs


    【解决方案1】:

    原来我使用的 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 相邻。

    【讨论】:

    • 您在架构位置标签中提到的架构,它们是否相互关联,我的意思是您使用某种导入或包含,或者它们完全不同并且正在验证不同的请求?
    • 你好大卫,我正在尝试做同样的事情。但是我没有使用 servlet。我应该如何进行。
    猜你喜欢
    • 2011-04-22
    • 1970-01-01
    • 2011-10-13
    • 2011-11-26
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-14
    相关资源
    最近更新 更多