加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Spring Web服务流程

发布时间:2020-12-15 00:49:43 所属栏目:Java 来源:网络整理
导读:我是初学网络服务的新手,在为一个阶乘服务编写示例程序后,我有些疑惑.我认为这是春季网络服务的工作原理: Application run on server and generates a request – Request goes to dispatcher servlet as defined in web.xml – dispatcher servlet looks f
我是初学网络服务的新手,在为一个阶乘服务编写示例程序后,我有些疑惑.我认为这是春季网络服务的工作原理:

Application run on server and generates a request –> Request goes to
dispatcher servlet as defined in web.xml –> dispatcher servlet looks
for [servlet-name]-servlet.xml –> dispatcher servlet then looks for
payloadroot which finds the right endpoint –> the xml request goes to
the end point –> response is generated by the endpoint

现在我的怀疑是:

  1. How does the request that comes to the endpoint comes in XML form? I know XSD helps to create xml but when does it do that?
  2. In this whole process when is wsdl constructed?

以下是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有效负载.

This is old,但它遵循您正在使用的相同方法,甚至使用相同的已弃用的spring类.

如今,许多开发人员都避免使用WS- *风格的Web服务,而采用基于REST的Web服务,这些服务使用spring-web和spring-mvc非常容易实现,并且在java pojo上有几个简单的注释.如果愿意,您甚至可以让spring自动将xml有效负载绑定到从xsd生成的java对象,这样您就不必在任何时候实际处理XML.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读