首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在http4s中配置tomcat

如何在http4s中配置tomcat
EN

Stack Overflow用户
提问于 2021-10-07 22:17:32
回答 1查看 32关注 0票数 0

我想知道在使用http4s服务器应用程序接口时是否有配置tomcat的选项。Tomcat构建器允许更改一些基本选项,但除了这些选项之外,没有什么可以设置的。我可以提供一个server.xml文件吗?或者获取tomcat实例的访问权限?

EN

回答 1

Stack Overflow用户

发布于 2021-10-08 12:35:51

Tomcat,AFAIR是一个运行定义为WAR的应用程序的服务器。也就是说:你的应用程序是而不是a server,你的应用程序被逻辑绑定到这个外部层提供的功能。

Http4s服务器直接与外部世界通信,它通过FS2 streams管理请求生命周期,如果你使用它,那么你可能会通过Doobie或其他一些Cats库与DB通信,这些库也管理自己的线程池和事务,而不是依赖于ThreadLocal和其他类似JavaEE和JPA类的约定。

长话短说:这些模型是不兼容的。

您将不得不剥离90%的Http4s,以保留一些可能与实现无关的东西,然后将其连接到Tomcat,但这将只剩下,IDK,DSL用于构建请求?为此,您将有更好的机会,例如,使用Endpoints4s或Tapir定义事物,并实现将事物绑定到Tomcat的解释器。

但在这一点上,使用Tomcat或任何其他servlet容器可能没有好处:在Java中,监视通常很容易,因为每个1个正在进行的请求都有一个线程,并且所有DB连接和内容都作为请求范围的内容放入ThreadLocal中。同时,几乎所有的IO monad都使用线程池(不同的边界是分开的),因此您的操作可以跨越多个线程。容器用来监视事物的所有约定(在性能方面相当不灵活)都该下地狱了。

同时,Http4s有自己的跟踪方法(通过中间件),类似地,您可以向DB查询添加工具。因此,servlet容器提供的东西也可以在那里使用,尽管配置它们需要一些工作。

底线是:如果你使用Http4s,你不需要servlet容器,如果你使用servlet容器,那么你不能很好地集成使用任何IO monad (scala.concurrent.Futurecats.effect.IOmonix.execution.Taskzio.ZIO,等等)的任何东西,因为它们不能保证在同一线程中运行整个操作(使某些Java框架所做的许多假设无效)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69488445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档