将URL映射到Java中请求处理程序的最简单方法

时间:2011-06-22 00:32:09

标签: java servlets jetty rpc

我正在使用Java为内部应用程序构建一个简单的RPC服务器。

虽然最终我想切换到专门的高性能RPC库,如MessagePack,Apache Avro或Java绑定到0mq,现在我想让事情变得尽可能简单,所以我要开始使用JSON over HTTP。我想使用Jetty,以便我可以嵌入网络服务器,并使安装和部署尽可能简单。但是我对Java webdev没有太多经验,并且我很想知道将少数特定请求处理程序对象中的每一个与特定URL相关联的非常简单的挑战。我的总体印象是,这可能是web.xml文件的用途,但如果可能的话,我宁愿将其连接到源代码中。

我应该强调,我不需要有趣的webapp功能,如会话,模板,数据库访问等。我只需要从POST请求体中获取JSON字符串,执行操作,然后在响应中写回字符串。

基本上,最好的方法是,编写两个请求处理程序(servlet?),它们分别返回请求主体大写和小写,并使用路径“/ upper”和“/ lower”注册它们。我的服务器,最好不使用配置文件。这将在嵌入式Jetty应用程序中进行,但如果您不想这样做,您当然不需要依赖它。

2 个答案:

答案 0 :(得分:1)

就个人而言,我会用Spring做。 Spring可以做很多事情,正如你所说,你不需要大量的网络功能,但你仍然可以从中选择你想要的功能。

根据需要,您可以使用单个控制器设置Spring,并在处理请求的方法上使用@ResponseBody注释。然后告诉Spring将响应对象序列化为JSON(我认为它实际上是默认值)。然后Spring为您处理序列化,您的代码只处理Java对象。

这是关于我正在谈论的功能的更详细的文章:http://java.dzone.com/articles/spring-3-rest-json-path-variables

如果你去寻找你可能会看到很多带有一些令人讨厌的xml配置的例子,但不要担心,Spring的后续版本只能配置几行Java代码。

要解决有关使用Avro的说明,实际上并不像您想象的那样难以设置。以下是在服务器组件的servlet容器中使用Avro的完整示例应用程序: http://code.google.com/p/avro-http-example/wiki/Guide

答案 1 :(得分:0)

如果您不想设置配置文件,那么Jetty API应该非常方便。开始here