Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于将HttpRequest和HttpResponse传递到服务层的想法?_Java_Architecture_Servlets_Paypal Ipn - Fatal编程技术网

Java 关于将HttpRequest和HttpResponse传递到服务层的想法?

Java 关于将HttpRequest和HttpResponse传递到服务层的想法?,java,architecture,servlets,paypal-ipn,Java,Architecture,Servlets,Paypal Ipn,我有一个CommerceService模块来帮助实现常见的订单处理功能,其中包括通过Authorize.net、Paypal和Google Checkout等提供商进行支付授权。它提供了一个简单的界面,如placeOrderOrder,并执行繁重的操作 本地支付提供商的做法是直截了当的,但是Paypal和Google提供远程支付服务,因此以Paypal为例,用户可以离开您的网站,在那里支付,Paypal将发送Http通知以连接到您的订单流程中 我的问题是如何处理这些通知。理想情况下,只需将Htt

我有一个CommerceService模块来帮助实现常见的订单处理功能,其中包括通过Authorize.net、Paypal和Google Checkout等提供商进行支付授权。它提供了一个简单的界面,如placeOrderOrder,并执行繁重的操作

本地支付提供商的做法是直截了当的,但是Paypal和Google提供远程支付服务,因此以Paypal为例,用户可以离开您的网站,在那里支付,Paypal将发送Http通知以连接到您的订单流程中

我的问题是如何处理这些通知。理想情况下,只需将HttpRequest对象传递给服务层,并让服务通过handleRemoteOrderRequest、Response来完成订单,而不是强迫前端担心这些。但是,将请求和响应传递给服务层从直觉上看似乎是错误的

我曾考虑将请求参数提取到一个映射并简单地传递它,但是google checkout java sdk在请求和响应对象上显式工作,因此在这个问题上不使用sdk会很麻烦

这么早就通过HttpRequest是不受欢迎的吗?如果是这样,是否应该有前端逻辑来处理这个问题?或者这是一个毫无根据的担心,我不应该想那么多

在实现接口的类中封装HttpRequest和HttpResponse,并使服务层依赖于接口。对于Google以外的其他服务,您可以通过请求参数传递映射,对于Google a包装器实现。无论如何,服务层不会意识到背后隐藏着什么。

在实现接口的类中封装HttpRequest和HttpResponse,并使服务层依赖于接口。对于Google以外的其他服务,您可以通过请求参数传递映射,对于Google a包装器实现。无论如何,服务层不会意识到背后隐藏着什么。

不应将HttpServletRequest传递给服务层

如果明确需要请求,可以将逻辑放在web层中。或者扩展库并允许它获取参数映射(如果可能)

不应将HttpServletRequest传递给服务层


如果明确需要请求,可以将逻辑放在web层中。或者扩展库并允许它获取参数映射(如果可能)

没有理由不能跨多个层跨商务模块。将其视为UML所称的子系统。因此,您的CommerceSBS包含多个组件,例如:

商业英语;控制与PSP的对话生成指向PSP的链接和回调链接 商业回购;可能是一个等待PSP回调的侦听器servlet 商业服务;实现后端逻辑,例如数据库或ERP访问
这就是我过去所做的…

您没有理由不能跨多个层扩展您的商务模块。将其视为UML所称的子系统。因此,您的CommerceSBS包含多个组件,例如:

商业英语;控制与PSP的对话生成指向PSP的链接和回调链接 商业回购;可能是一个等待PSP回调的侦听器servlet 商业服务;实现后端逻辑,例如数据库或ERP访问
这就是我过去所做的…

我同意Bozho和Boris的观点,即服务层不应该知道HttpR*


另一种考虑的方法是将适配器放置在外部服务和SL之间。这允许您保持SL不受欢迎的依赖关系,但是适配器使您有必要在必要时与外部系统很好地集成;因为适配器是隔离的,并且只有一个特定的任务要做,所以它将是一个灵活的低风险选项。

我同意Bozho和Boris的观点,即服务层不应该知道HttpR*


另一种考虑的方法是将适配器放置在外部服务和SL之间。这允许您保持SL不受欢迎的依赖关系,但是适配器使您有必要在必要时与外部系统很好地集成;因为适配器是隔离的,并且只有一个特定的任务要做,所以它将是一个灵活的低风险选项。

有什么大不了的?保持简单。以简单的名义引入了多少复杂性?有什么大不了的?保持简单。以简单的名义引入了多少复杂性?+1非常正确-没有理由不能。我想问题是你是否应该。非常正确-没有理由你不能。我想问题是你是否应该这样做。