2011-09-25 54 views
1

我需要经验丰富的开发人员就项目的软件架构提供建议。Servlets vs Beans

需要为API提供REST接口,以便客户可以:1)自我验证(这也涉及处理帐户创建) 2)发出get/add/update/delete()请求资源(例如存储新书描述[标题+作者..])

WSDL或其他复杂的东西没有必要(现在)。如果可能的话,我会说我宁愿避免使用WSDL,因为我不会使用它。这不会被用于网站,只有API直接使用。

我读过很多东西,但需要明确的状态如下: - 您会使用servlets还是bean? - 处理身份验证,是有状态的一个好主意?处理会话的最好和简单的方法是什么?

我正在寻找最简单的方法,因为我目前对J2EE的了解很少。

谢谢你的时间!

回答

1

如果客户端要使用Web界面访问您的站点,那么基于会话的系统是更好的选择。如果它只是程序使用的服务API,则使用HTTP身份验证。

如果您打算使用api服务,您最好通过查看其中一个RESTy框架(如JAX-RS)来提供服务。您可以将其用于实际的网站,但通常不会以这种方式使用(所以这些示例并不真正匹配该域)。

如果你正在做一个网站,那么看看Stripes或Struts 2之类的动作框架。这些动作框架可以让你绑定到RESTY网址,但它们对于网站也很棒。

对于这些中的任何一个,最好有一个基本的Servlets知识,特别是HTTP,工作流,重定向和转发之间的差异等。因为这些框架利用了基本的Servlet模型。

所有这些都可以通过原始Servlet轻松完成,框架使事情变得更简单,而JAX-RS和Stripes/Struts 2对于前进的影响相当小。

+0

我正在寻找服务API。所以如果我理解的很好,你会尝试一个面向REST的框架(基于servlet),使用HTTP认证和一个Filter,以及一个HttpSession对象来避免有状态的服务?这听起来不错! – SCO

+0

绝对看JAX-RS。 – BalusC

1

总之?都。你想要servlet和基于POJO接口的bean,但不要做同样的事情。

如果您需要REST,您将使用servlet。这些是Java EE中的HTTP侦听器,REST基于HTTP。因此,我建议使用基于接口的POJO来实现完成所有工作的代码。它会让你的代码更容易测试和改变。

REST是许多人中的一种部署选择。如果你坚持使用基于接口的POJO,只需在bean上使用不同的包装,就可以更改部署策略。

REST层除了身份验证和授权,绑定和验证之外不应该做任何事情。让它遵循POJO bean来完成工作。

Servlets通过URL重写或cookie处理会话。利用他们给你的东西。

但是REST服务应该是无状态的;没有会话,呼叫之间没有状态保存。

在拨打电话之前,您可以使用Filter来检查身份验证。这是交叉的方式。将过滤器视为HTTP的方面。

+0

这很有趣,我会直接在servlet中实现业务逻辑。采用图层方法看起来很聪明。 – SCO

+0

该方法的两个问题是您需要一个servlet容器来测试您的服务,并且如果Web层消失,您必须重写您的服务。最好将它保存为POJO,以便通过SOAP,REST或EJB或其他任何方式将其删除。将远程选择与业务逻辑分开。 – duffymo

1

验证自己的身份(这也涉及处理帐户创建)

Servlet的有内置的安全功能,以及几个库(春季安全,阿帕奇四郎)。

WSDL或其他复杂的东西没有必要(现在)。

WSDL最常用于描述SOAP Web服务。

你会使用servlets还是bean? - 处理身份验证

您是指企业Java bean?他们不会帮助你,你仍然需要一些东西来处理HTTP请求 - servlet在哪里发挥作用。但是你可能想要实现一些实际的业务逻辑 - servlets只有网关,不要在那里实现逻辑。从技术上讲,你可以通过SOAP(但你想要REST)或使用JAX-RS(Java EE栈的一部分)公开EJB,但显然它使用下面的servlet。

将会有状态的一个好主意

原则 - REST是无状态的,没有会话状态。但是,对每个请求进行身份验证可能会花费太多。所以你会在最后的HTTP会话(使用servlet轻松处理)至少存储JSESSIONID。

+0

没有SOAP,但是可以定义一下JAX-RS! – SCO