Tech Stack :Java 1.6,JPA(Hibernate 3),Spring 3,Oracle 11g,JAX-RS(RESTEasy),Freemarker,Spring Webflow,jQuery,JBoss5
您好,
目前我正在开展一个项目,我们有两套功能:
我的方法是:
Webflow和Freemarker模板调用此服务层上的方法。
再次使用相同的服务层为REST(@Path)创建另一层组件。
现在,在设计会议上,有人建议如下:
分别为:
创建一个模块a2。 RESTful服务(包含服务层和javax.ws.rs.Produces)
b2。具有服务层的屏幕,用于调用模块a2中发布的服务。这将使用org.apache.commons.httpclient。 HttpClient 来调用a2服务。
我不确定我是否能真正看到这些好处,或者这是否是正确的方法。 我想也许我没有看出建议的做法。
有人可以详细说明哪种方法更好,为什么?
谢谢, ADI
答案 0 :(得分:1)
恕我直言,没有必要使用HttpClient和一切来访问服务层。
这种机制会产生巨大的和无用的 CPU开销(序列化/伪造http传输/反序列化消息),以便在非常接近的2层之间进行通信(在同样的战争)。
如果您确定管理屏幕和REST服务将始终一起部署,请使用直接通信,保持务实。
你应该保留一个maven项目。无需为10个屏幕和5个REST服务创建复杂项目。保持简单。
创建一个处理business + bo的服务层。 使用2个单独的实现创建传输层:
如果你真的想创建maven模块, - 创建一个模块,将jar中的业务服务类捆绑在一起 - 创建两个模块,将传输实现捆绑在两个独立的jar中 - 创建一个模块捆绑业务services.jar,两个传输implementation.jar及其在战争中的依赖
HIH