我应该使用哪些技术来开发小型Java Web服务?

3

基本上,我需要一个 Web 服务,客户端可以通过 ID 请求我们的 Web 服务中的一个布尔值。哪种技术最适合这个小型 API?当然,可能会有更多接口函数,但现在我们只需要一个函数。它还需要进行身份验证,以便只有经过授权的客户端才能访问服务。并且每个客户端都有不同的身份验证凭据。

针对这个目的,什么技术是好的选择?

8个回答

2
我正在使用 resteasy 来构建我的 Web 服务,它非常易于使用...只需要在我的方法上使用注解来提供 Web 服务。 这里 是不同 JAX-RS 框架的比较。看一下吧。

1

JAX-WS + 任何 Servlet 容器(Tomcat 是常用选择)

@WebService(targetNamespace = "http://affinity.foo.com", name="RewardsStatus")
@SOAPBinding(style=SOAPBinding.Style.RPC, use=SOAPBinding.Use.LITERAL)
public interface RewardsStatusIF {
    @WebMethod(operationName="GetLastNotificationDate", action="urn:GetLastNotificationDate")
    @WebResult(name="return")
    public Date getLastNotificationDate() throws AffinityException;
...

实际上,你甚至不需要一个servlet容器。JAX-WS有一种方法可以在独立的Java应用程序下运行服务。它有一些限制(我未能使一个有状态的服务工作),但创建起来非常简单。


1
要在Java 5中使用@WebService注释,您还需要JSR 181实现。如果您使用Java 6,则已包含它以及JAXB。我想表达的是:您需要Java 5加上JAXB和JSR 181或者Java 6。 - Fabian Steeg
我也在想:要让这个实际起作用,我们不需要 JAX-WS 吗? - Fabian Steeg
好的,没错,应该是JAX-WS。我打字匆忙。 - Vladimir Dyuzhev
Java 5 在我所看到的地方都被 Java 6 取代了,所以这不再是一个问题。 - Vladimir Dyuzhev

1
首先:认证和授权。不要自己动手,选择一个应用服务器或Servlet容器,并配置它来完成工作。
对于Web服务...
最简单的方法就是实现一个Servlet,响应POST请求(如果请求修改内部状态,则不是GET请求),并在主体中返回结果。这样,您不需要任何框架,也没有任何学习任务(如果您已经了解Servlet)。缺点是随着添加更多功能,它不会扩展,并且您没有使用足够的流行词。
如果您想要基于SOAP的Web服务,则请查看JAX-WS。现在它已经被支持到Java 6中,变得非常容易。
在最简单的级别上,JAX-WS允许您在类上放置一些注释,如@WebService,并自动生成WSDL并通过Web服务公开您的类的实例。
有很多文档可以告诉您如何做到这一点:

0
你可以使用一些像jersey这样的RESTful框架。

0

鉴于您将问题标记为“Java”,我建议使用Jetty。它是一个非常好的小型Servlet引擎。它支持会话,因此添加身份验证不应该成为问题。


0
如果您正在使用Java 6,那么已经内置了一个HTTP服务器,它支持HTTP身份验证。这就是您所需要的全部。请查看,

com.sun.net.httpserver


0

使用JAX-WS的基于SOAP的Web服务的替代方案是JAX-RS(用于RESTful Web服务)。


0
我们在项目中有很多场景,希望在应用程序运行时通过简单的HTTP URL 提供少量数据,而在我的经验中,Restlet (http://www.restlet.org/) 似乎是为在Java应用程序中建立简单的“Web服务”类型接口(RESTful接口)而提供的最简单的工具之一。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接