Cha*_*eep 7 java spring web-services java-ee
我是初学网络服务的新手,在为一个阶乘服务编写示例程序后,我有些疑惑.我认为这是春季网络服务的工作原理:
应用程序在服务器上运行并生成一个请求 - >请求转到web.xml中定义的调度程序servlet - > dispatcher servlet查找[servlet-name] -servlet.xml - > dispatcher servlet然后查找找到的payloadroot右端点 - > xml请求转到结束点 - >端点生成响应
现在我的怀疑是:
- 到端点的请求是如何以XML格式提供的?我知道XSD有助于创建xml但是什么时候这样做?
- 在构建wsdl的整个过程中?
以下是bean定义,即:[servlet-name]-servlet.xml
file:
<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>
Run Code Online (Sandbox Code Playgroud)
XSD 不生成 xml,它用于验证它。编写客户端的人员也可以使用它来了解如何形成 xml 以发送到您的服务。“请求”是由某种客户端发送到您的服务的消息——它如何进入您的服务,通常是通过 http 协议(万维网协议)。
您在代码中提到,这意味着契约优先——这意味着您应该在执行其他操作之前编写 wsdl(尽管通常这是与描述接口的 xsd 一起完成的)。然后可以使用 wsdl 和一些注释来配置 Spring,以便处理消息——您甚至可以使用 jaxb 自动绑定,直接绑定到代码中的 java 对象,这样您就不必手动解析传入的 xml 有效负载。
这是旧的,但它遵循您正在使用的相同方法,甚至使用相同的已弃用的 spring 类。
如今,许多开发人员回避 WS-* 风格的 Web 服务,转而使用基于 REST 的 Web 服务,这些服务可以使用 spring-web 和 spring-mvc 轻松实现,并在 java pojo 上添加几个简单的注释。如果您愿意,您甚至可以让 spring 自动将您的 xml 有效负载绑定到从 xsd 生成的 java 对象,这样您就不必在任何时候实际处理 XML。
归档时间: |
|
查看次数: |
1838 次 |
最近记录: |