使用JBoss AS实现REST API服务的“正确”方法

时间:2010-07-09 18:57:14

标签: rest jboss

我在一家喜欢使用“企业”这个词的公司开始了一份新工作。因此,他们所写的一切都是用Java编写的。我来自一个非常网络开发的背景,主要是使用LAMP堆栈。

现在,直到三天前,除了人们使用Java以外,我对Java一无所知,而且它是一种编程语言。谷歌语言本身就很简单了。然而,当人们说“Java”时,它们似乎指的不仅仅是语言,例如各种框架和应用程序服务器。它有点过分,并且在使用“Java”时遇到了一些麻烦。

即将开展的项目涉及我为其中一个产品创建一个公开的REST API。看起来很简单。但是,我有一些关于如何继续的问题....

我是第一次与JBoss AS合作;不确定PHP中是否有相应的东西,所以我可以理解JBoss究竟做了什么,但我怀疑这是一种“正确”的做事方式。这就是我在想的事情:

1)创建一个包含单个servlet的包,如下所示:

package com.awesome.myrestapi;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HiggiltyServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public HiggiltyServlet() {
        super();
    }

    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        PrintWriter out = response.getWriter();

        // @todo ideally, do something more RESTfully useful and less vindictive
        out.println( "<html><body>HAHA!  all ur api requests are belong to us</body></html>" );
        out.close();
    }

}

2)正如您所看到的,我正在考虑重写服务方法以提供REST API请求。

3)相应地更新了我的web.xml文件,以便url-pattern匹配“higgilty”,从而使我的URL端点类似....

http://localhost/awesomeproject/higgilty

现在,我觉得我可能做错了什么。我是以正确的方式解决这个问题,还是我完全不合适?

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

您应该使用面向REST的框架,例如RestletJerseyRESTeasy。这将有助于您处理各种事情,例如拆分URI,拥有基于资源和表示的系统以及可能的内容类型协商(如果您需要)。

Restlet可以在servlet容器中运行,也可以作为独立应用程序运行。 RESTeasy是一个JBoss项目,但我不会因为这个原因而忽略其他框架,因为JBoss AS原则上应该能够运行用其他框架编写的应用程序(我在JBoss AS中成功运行了Restlet应用程序,虽然我不经常使用它。)

答案 1 :(得分:1)

同意最好使用框架。

如果你想自己滚动,你需要写一些东西来解析URL并路由到适当的方法。与web.xml匹配的URL模式非常有限。

此外,您可能希望覆盖与HTTP方法相对应的HttpServlet方法 - doGet,doPost等。