问题标签 [embedded-tomcat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring - 使用 JavaConfig 获取 NoInitialContext Spring Boot 2.0.x Embedded Tomcat 资源和数据源配置
在其他链接之后,我尝试了所有配置,包括启用嵌入式 tomcat 容器的 jndi。(一个很好的详细信息是:https ://www.roytuts.com/spring-boot-jndi-datasource/ )但问题是 DataSource 是针对 JNDI 查找的,我得到以下异常:
请注意,从 Spring 2.0.x 开始,嵌入式配置类已更改。
获取:javax.naming.NoInitialContextException:需要在环境或系统属性中指定类名,或作为小程序参数,或在应用程序资源文件中:java.naming.factory.initial。
至于嵌入式 tomcat 中 JNDI 查找的问题是罕见的用例,我试图在生产中模拟和重现数据库连接池错误,为此我必须对 Resource 和 DataSource 都使用 JavaConfig 设置。
tomcat - 具有嵌入式 Tomcat 和通用名称 (CN) 的双向 TLS
我们使用嵌入式 Tomcat 运行 REST 服务。我们的应用程序需要 Mutual TLS 通过从客户端证书中提取 CN 并验证一组授权用户的权限来进行身份验证和授权。
这适用于反向代理,例如 Nginx 使用提取 CN 并将其传递到 HTTP 标头中的配置:
相反,是否可以在嵌入式 Tomcat 中提取 CN 而不是使用反向代理?
java - 对于某些任务,Gradle 执行冻结 3 分钟
我有 2 个相对简单的 Gradle 6.1.1 配置,一个是使用https://plugins.gradle.org/plugin/com.github.node-gradle.node构建一个 react 应用程序,另一个是基于https: //plugins.gradle.org/plugin/com.bmuschko.tomcat并在嵌入式 tomcat 中运行一个简单的检票口应用程序。
npm 任务的第一个配置是:
并在 Windows 10 中产生以下输出:
在这一点上,任务持续了大约。20 秒,然后在 CPU 负载低于 1% 的情况下挂起 3 分钟并继续:
奇怪的是,在另一台 Win10 机器上的类似项目上运行相同的配置会导致干净运行而不会冻结。
还有任务:
表现出相同的额外 3 分钟行为。
第二个配置看起来像:
并在 Win10 中产生输出:
此时它再次挂起大约 3 分钟,CPU 负载低于 18%,然后继续:
因此,无缘无故(从我的 POV 中),gradle 执行在某些任务之后或之前挂起 3 分钟。
欢迎任何提示和想法!
TIA
java - SpringBoot - HttpMessageNotReadableException:JSON 解析错误:java.net.SocketTimeoutException
我的代码抛出异常如下
我的 spring-boot 版本是 2.1.7.RELEASE 并且嵌入式 tomcat 用于运行应用程序。我也设置了属性server.connection-timeout=30s
我几乎到处搜索,无法确定这个问题的根本原因。我也捕捉到了这个异常并将其打印在日志中并将响应返回为 BAD_REQUEST。
此异常间歇性抛出,此时我的生产服务器消耗了 80% 以上的 CPU 和内存。
这实际上是一个 POST 请求,请求正文验证如下
我的 SaveDto 如下
我的 saveEntryDto 如下
spring-boot - 使用 jmeter 完成负载测试时,Tomcat 对请求的意外最大响应时间
我有一个 spring boot 应用程序,它有一个 post 端点,它接受请求并将其发送到另一个服务并获取响应并将其保存到 mongo 数据库并将响应返回给用户。该应用程序部署在 Spring Boot 的嵌入式 tomcat 上。我正在使用 jmeter 查看最大响应时间、吞吐量等。
当我从 jmeter 运行 500 个线程的测试 10 分钟时,我得到的最大时间约为 3500 毫秒。当我从 jmeter 重复测试时,最大时间减少到 900 毫秒。同样,如果我在很长一段时间后运行测试,最大值再次上升到 3500 毫秒。
我无法获得有关 tomcat 的这种行为的任何信息。
你能帮我理解tomcat的这种行为吗?
java - 与嵌入式 tomcat 交战
我最近创建了一个使用 spring mvc、gradle 和 tomcat 来托管它的 Web 应用程序。我一直在尝试创建一个 web 应用程序的 war 文件,它可以自己执行,而无需在您的计算机上安装 gradle 和 tomcat。
例如 runningjava -jar <path-to-war>
并且服务器将在指定的 localhost 端口上运行。
解决这个问题的最佳方法是什么?
spring-boot - Spring Boot 嵌入式 Tomcat 内部工作
我最近阅读了一篇关于 Tomcat 架构的文章以及对其工作和监控的高级概述。
在本文中,它提到了 Tomcat 的每个连接器都有一个可以配置的工作线程池。
它还提到了 Executors 以及它如何主要是一个与多个连接器共享的线程池。
我对 Spring Boot 及其嵌入式 Tomcat 服务器有一些疑问
- 这个嵌入式 Tomcat 服务器默认配置了多少个连接器?
- 嵌入式 Tomcat 是否配置了 Executor?或者它只是工作线程的基本池。
- 我可以看到我们可以使用 application.properties 通过使用以下属性来配置接受计数
- server.tomcat.accept-count
- 我相信 acceptCount 设置了当没有工作线程可用时可以在操作系统级别队列中排队的最大连接数。(根据提到的文章)
- 这是否意味着没有为默认的Connector配置Executor?如果有,我们如何配置该执行器的队列大小?
如果有人能对上述内容有所了解,我将不胜感激。
简而言之,我只是想知道通过 application.propeties 的服务器配置是用于 Executor 还是用于 Connector 特定的工作线程池。
tomcat - 服务器重启时如何保持会话?
我正在尝试实现 tomcat 嵌入式 Web 服务器。一切运作良好。但是当我重新启动时会话被清除。
我正在尝试实现正确的会话持久性配置。但没有成功。这是我当前的代码片段。它有什么问题?
编辑:
我发现 StandardManager 可以将会话存储到文件调用方法StandardManager.unload()
。但StandardManager.load()
对会话没有影响。
我领先一步,但仍然没有成功。
java - 同一台机器上不同项目对调用相同 API 的不同反应 -> SSLException
我有一个在 a 上运行的单页 Web 应用程序(Spring MCV + JSF(primefaces) + tomca 8)Development-server
,它调用 API 来从提供者(例如https://stream.xyz.com)获取数据,起初我有SSLHandshakeException:
javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径
经过一番研究,我发现问题是什么,我通过导出域证书并/jdk/jdk1.8.0_65/jre/lib/security/cacerts
通过一些命令手动添加它来解决它,然后我的问题就解决了。
但主要问题:
我有一个on production-server it has SSL enabled, I mean that in /resources folder I have a SSLKeystore.p12
包含我的证书的 SpringBoot(v 1.5.12) 应用程序,但是当我运行它on development-server(which mentioned webApp exists) SSL configs have been commented
并且它再次想要对同一个域进行 API 调用时,我面临着SSLHandshakeException
上述问题。
springBoot 是否不使用cacerts
我在其中添加域证书的文件?
任何有关如何解决此问题的想法将不胜感激!
更新:
经过一些研究,我在项目中添加了这个配置类:
还有这些在属性文件中:
现在我面临这个例外:
原因:java.lang.RuntimeException:意外错误:java.security.InvalidAlgorithmParameterException:在 sun.security.validator.PKIXValidator.(PKIXValidator.java:90) 的 sun.security.validator.Validator 的 trustAnchors 参数必须非空.getInstance(Validator.java:179) 在 sun.security.ssl.X509TrustManagerImpl.getValidator(X509TrustManagerImpl.java:312) 在 sun.security.ssl.X509TrustManagerImpl.checkTrustedInit(X509TrustManagerImpl.java:171) 在 sun.security.ssl。 x509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:184) 在 sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124) 在 sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1491) 在 sun.security.ssl .ClientHandshaker.processMessage(ClientHandshaker.java:216) 在 sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) 在 sun.security.ssl.Handshaker.process_record(Handshaker.java:914) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) 在 sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java :1375) 在 sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) ... 144 更多原因:java.security.InvalidAlgorithmParameterException:在 java.security.cert.PKIXParameters 的 trustAnchors 参数必须为非空.setTrustAnchors(PKIXParameters.java:200) 在 java.security.cert.PKIXParameters.(PKIXParameters.java:120) 在 java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104) 在 sun.security.validator.PKIXValidator。 (PKIXValidator.java:88)SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) ... 144 更多原因:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须在java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200) 在 java.security.cert.PKIXParameters.(PKIXParameters.java:120) 在 java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104) 在 sun .security.validator.PKIXValidator.(PKIXValidator.java:88)SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) ... 144 更多原因:java.security.InvalidAlgorithmParameterException:trustAnchors 参数必须在java.security.cert.PKIXParameters.setTrustAnchors(PKIXParameters.java:200) 在 java.security.cert.PKIXParameters.(PKIXParameters.java:120) 在 java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104) 在 sun .security.validator.PKIXValidator.(PKIXValidator.java:88)java:200) 在 java.security.cert.PKIXParameters.(PKIXParameters.java:120) 在 java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104) 在 sun.security.validator.PKIXValidator.(PKIXValidator.java: 88)java:200) 在 java.security.cert.PKIXParameters.(PKIXParameters.java:120) 在 java.security.cert.PKIXBuilderParameters.(PKIXBuilderParameters.java:104) 在 sun.security.validator.PKIXValidator.(PKIXValidator.java: 88)