我读过官方的oracle教程,但是不明白这一点。如果我们回答我的问题,我很高兴。
问题1。 JAX-WS Web服务和RMI之间的概念差异是什么? RMI和JAX-WS都可以调用远程方法。
问题2。为什么我们不能仅将servlet用于可由JAX-WS实现的功能?只需声明init
servlet的方法。
问题3。据我所知,例如,网络服务JAX-WS
无法获得http
响应,http
无法请求servlet。它只是一组端点类,其中包含WebMethods
及其实现。即如果我们想通过web-client
与服务进行通信,我们必须为此需要声明适当的servlet。此servlet将解析http
请求,调用相应的@WebMethod
生成并发送http
响应。这是对的吗?
问题4。 WSDL
文件是xml
- 此WEbService包含的描述是否可用@WebMethod
的所有文件?
问题5。来自官方教程:
A client creates a proxy (a local object representing the service) and then simply invokes methods on the proxy.
客户端是否根据服务的WSDL
- 文档创建代理?
答案 0 :(得分:0)
我按顺序接受答案:
RMI直接从其他Java虚拟机中的对象调用远程Java对象的方法,并使用对象序列化来编组和解组参数。请注意所有这些都是特定于Java的。 JAX-WS是一个Java API,用于利用标准(SOAP,WSDL等)来促进更广泛的互操作性。因此,各种应用程序可以相互通信 - 不仅仅是Java到Java。
使用JAX-WS,您 使用servlet。只是规范在Servlet API之上提供了一个抽象。使用抽象总是比使用低级实现细节更好。这使您可以自由地处理有趣的事情,并帮助您避免错误。
我不太关注这个问题,但HttpServlet
是所有HTTP通信的Java EE抽象。所以JAX-WS,JAX-RS和其他规范依赖于HttpServlet。您不必指定servlet或任何东西。这是抽象的许多低级细节之一。
WSDL是一种超越平台或实现的标准。换句话说,它不知道@WebMethod
或任何其他特定于实现的细节。它只定义了与服务交互的接口。
是。 WSDL并不意味着被人类消费。它们定义了与服务交互的接口,客户端(Java,.NET,等等)使用这些接口自动生成存根,以供您调用WSDL中定义的服务。客户端为您生成SOAP请求并为您处理SOAP响应。