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

Java中将URL映射到请求处理程序的最简单方法,java,servlets,jetty,rpc,Java,Servlets,Jetty,Rpc,我正在用Java为一个内部应用程序原型化一个简单的RPC服务器 虽然最终我想切换到一个专门的、高性能的RPC库,如MessagePack、ApacheAvro或0mq的Java绑定,但现在我想让事情尽可能简单,所以我从HTTP上的JSON开始。我想使用Jetty,这样我就可以嵌入Web服务器,使安装和部署尽可能简单。但是我对JavaWebdev没有太多的经验,而且我对将少数特定请求处理程序对象中的每一个与特定URL相关联这一非常简单的挑战感到困惑。我的总体印象是,这可能就是web.xml文件的用

我正在用Java为一个内部应用程序原型化一个简单的RPC服务器

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

我应该强调的是,我不需要像会话、模板、数据库访问等有趣的webapp功能。我只需要从POST请求主体中获取一个JSON字符串,然后做一些事情,然后在响应中写回一个字符串


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

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

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

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

这里有一篇关于我所说的功能的更详细的文章:

如果您四处搜索,您可能会看到许多带有一堆讨厌的xml配置的示例,但是不要担心,Spring的更高版本可以只配置几行Java代码

为了解决您关于使用Avro的注意事项,实际上设置Avro并不像您想象的那么困难。下面是在服务器组件的servlet容器中使用Avro的完整示例应用程序: