我是web服务新手,正在阅读Martin Kalin的《Java Webservices》一书。我已经了解了它最初的基本概念,有一个问题:
假设生产者
将HTTP请求(包含SOAP消息信封)发送到JavaWeb服务(消费者
)。该请求是否由Servlet内部处理,Servlet提取SOAP消息并将其转换为相应Java域对象,然后调用服务实现bean?
无论Metro和Axis等现成框架如何,这个问题都是通用的。只需考虑以下代码
Endpoint.publish("webserviceURL", new CustomerServiceImpl())
现在,如果消费者将请求发送到webserviceURL
,Servlet会始终在切入点处理还是以其他方式处理?(因为这是任何Web应用程序中处理Web请求的方式)
所有web服务都在servlet之上工作,无论是SOAP还是REST。根据您使用的web服务框架,将配置servlet映射,例如jersey、resteasy等。
请求由能够处理HTTP请求的东西处理,句号。
使用servlet或过滤器很方便,因为管道已经以servlet/应用程序容器的形式为您编写,但这不是必需的。例如,在Netty上运行的服务不需要遵循servlet规范。(尽管IIRC有一个层允许Netty直接调用servlet。)
只要客户机和服务器都在谈论HTTP,底层实现就无关紧要,也不需要是servlet——它只需要谈论HTTP。
Servlet是一个Java类,可以接收HTTP请求并发送响应,对吗?
也就是说,您可以(如果您真的想)只使用servlet(使用其方法doGet()和
doPost())编写一个完整的web服务。
例如,您将逐个字节地获取HTTP请求,将其转换为
String
,将其解析为XML文件,然后将其解释为SOAP信封(让我们称之为“管道工作”),然后才开始处理实际请求(您最初真正想要的)。
在处理完实际请求后,您必须做更多的管道工作,将对象转换回XML和SOAP信封(不要忘记处理最终故障/异常的麻烦)。
你问:
请求是否由servlet内部处理,它提取皂消息并将其转换为相应的java域对象(...)
答案是否定的。servlet除了接收字节之外什么都不做,让您在Java方法中操作它们(例如,
doGet()
或doPost()
)。您可以手动完成,但将数据转换为域对象通常由Web服务框架完成。
现在,如果消费者将请求发送到webservice URL,它将由servlet始终在切入点处理还是以其他方式处理?
第一个。它将始终由servlet在入口点进行处理。但你可能会问:
那么,像JAX-RS、Spring WS或JAX-RS这样的Web服务API有什么意义呢?
所有Java著名的web服务API都构建在Servlet API之上。
servlet确实是第一个处理请求的,但所做的“处理”非常少:正如我所说的,它们只获取HTTP请求位,并让您将其作为Java方法使用。
在那之后,WS框架可以为您做很多其他的管道工作。例如,他们可以获取HTTP POST请求并执行所有的字节
您可以仅使用servlet来完成所有这些工作,但有了Web服务框架,您就不必担心所有需要的管道工作,只需创建方法来处理实际请求。
为了清楚起见:Servlet绝不是用Java处理HTTP请求的唯一方法。
然而,它们是在JavaEE中执行此操作的标准方法,因为它们是最稳定和无可争议的JavaEE API之一,但是当然还有其他方法——总是有的。
我所说的是,最著名的框架是建立在Servlet API之上的,仅举几点:
JAX-RS:
- 地铁
- 轴
- 轴2
- CXF
- JBossWS
- 泽西,
- 恢复容易;
- CXF,
- Restlet(名字说明了一切...)
- Spring天气预报
- SpringMVC
正如我所说,这只是其中的几点。
问题内容: 我最近公布的我面对这个问题的详细说明,这里的SO。由于我无法发送实际的请求,因此我使用了超时来模拟异步行为。在@Gloopy的帮助下,从模型到视图的数据绑定工作正常 现在,当我使用而不是(在本地测试)时,我可以看到异步请求成功,并且在我的服务中充满了json响应。但是,我的看法没有更新。 在这里更新了Plunkr 问题答案: 这是一个可以满足您需求的Plunk:http ://plnk
背景: 我正在构建一个应用程序,建议的体系结构是基于微服务体系结构的事件/消息驱动的。 做事情的单一方式是,我有一个,它操作一些具有直接的命令。因此,响应相同的用户/HTTP请求是“无忧无虑的”。 问题: 用户向UI服务(有多个UI服务)发送一个,该服务向队列(Kafka/RabbitMQ/any)触发一些事件。N个服务拾取该事件/消息,并在此过程中发挥一些魔力,然后在某个时刻,相同的UI服务应拾
问题内容: 看来我应该这样做: 通过将其设置为来配置dispatcherServlet 但是,考虑到我没有XML配置,或者代码中没有任何各种初始化程序类(此答案提到),该怎么做? 在一个类中,我有一个像这样的方法,当前不会被调用。 Spring Boot 1.2.7.RELEASE; 一个简单的设置与Spring REST指南并没有太大区别 。 问题答案: 选项1:Spring Boot属性(仅适
问题内容: 我最近公布的我面对这个问题的详细说明,这里的SO。由于我无法发送实际的请求,因此我使用了超时来模拟异步行为。在@Gloopy的帮助下,从模型到视图的数据绑定工作正常 现在,当我使用而不是(在本地测试)时,我可以看到异步请求成功,并且在我的服务中充满了json响应。但是,我的看法没有更新。 问题答案: 这个想法是您直接使用promise及其promise,然后使用它们的“ then”函数
首先,我阅读了“如何使用Spring MVC处理HTTP选项?”但答案似乎并不直接适用于Spring Boot。 看起来我应该这么做: 通过将dispatcherServlet的设置为 但是,考虑到我的代码中没有XML配置,也没有任何种类的初始化器类(在这个答案中提到),如何做到这一点呢? 在一个类中,我有一个这样的方法,它目前没有被调用。 Spring靴1.2.7。释放一个简单的设置与Sprin
问题内容: 我的公司拥有数千个现有的xml Web服务,并开始为新项目采用AngularJs。 http://angularjs.org/上的教程专门使用json服务。看起来他们在控制器中进行了服务调用,解析了生成的JSON,并将生成的对象直接传递给视图。 我该如何处理XML?我看到四个选项: 解析它,然后将DOM对象直接传递到UI(view)。 在服务器端围绕我的XML服务放置一个JSON包装器