Spring web服务流

我是春季Web服务的新手,在为阶乘服务编写示例程序之后,我留下了一些疑问。 我认为这是春季Web服务的工作原理:


应用程序在服务器上运行并生成一个请求 - >请求发送到web.xml中定义的调度程序servlet - >调度程序servlet查找[servlet-name] -servlet.xml - >调度程序servlet然后查找payloadroot,正确的端点 - > xml请求到达终点 - >响应由端点生成


现在我的疑惑是:

  • 到端点的请求如何以XML形式出现? 我知道XSD有助于创建xml,但是它何时做到这一点?
  • 在这整个过程中什么时候构建了wsdl?
  • 以下是bean定义,即: [servlet-name]-servlet.xml文件:

    <beans ...>
        <bean id="findFactorialService" class="springws.findFactorial.FindFactorialServiceImpl"/>
    
        <bean id="findFactorialServiceEndpoint" class="springws.findFactorial.endpoint.FindFactorialServiceEndpoint">
            <property name="findFactorialService" ref="findFactorialService" />
        </bean>
    
        <bean id="payloadMapping" class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping">
                <property name="defaultEndpoint" ref="findFactorialServiceEndpoint" />
            </bean>
    
            <bean id="findFactorialSchema" class="org.springframework.xml.xsd.SimpleXsdSchema">
                <property name="xsd" value="/WEB-INF/findFactorialService.xsd"  />
            </bean>
    
            <bean id="findFactorial" class="org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition">
                <property name="schema" ref="findFactorialSchema" />
                <property name="portTypeName" value="hello" />
                <property name="locationUri" value="http://localhost:7070/find-factorial-using-contractfirst/services" />
            </bean>
        </beans>
    

  • XSD不生成xml,它用于验证它。 人们也在写客户端来了解如何形成他们的XML以发送给您的服务。 “请求”是某种类型的客户端向您的服务发送的消息 - 它通常通过http协议(万维网协议)进入您的服务。

  • 您在代码中提到,这意味着合同优先 - 这意味着您应该在执行任何其他操作之前编写wsdl(尽管这通常与描述接口的xsd一起完成)。 然后,可以使用wsdl和一些注释来配置Spring,以便处理消息 - 甚至可以使用jaxb直接将代码自动绑定到代码中的java对象中,以便您不必手动分析传入的xml有效内容。

  • 这是旧的,但它遵循您使用的相同方法,甚至使用相同的弃用春季课程。

    现在很多开发人员都采用WS- *风格的Web服务来支持基于REST的Web服务,这些Web服务通过使用spring-web和spring-mvc以及java pojo上的一些简单注释非常容易实现。 如果你愿意的话,甚至可以让spring自动将你的xml载荷绑定到从xsd生成的java对象上,这样你就不必在任何时候实际处理XML。


  • spring使用JAXB序列化为xml并从请求中解析。
  • 如果您使用JAX-WS ,则WSDL将在运行时生成(默认情况下),但也可以提供预生成的WSDL
  • 要解决您的评论:

    如果你看看spring-ws-core maven的依赖关系,你会发现它依赖于spring-oxm (对xml < - >对象映射的抽象),它依赖于jaxb-api项目。

    仔细看看你的依赖中实际使用的是什么。 JAXB可能来自应用程序服务器库/文件夹。

    第二点。 JAXB不仅用于序列化为xml,还可以从xml反序列化。

    链接地址: http://www.djcxy.com/p/71717.html

    上一篇: Spring web services flow

    下一篇: How download file with service in android?