小编kry*_*ger的帖子

为什么Java的String不能从Comparable接口分配

JavadocString工具Comparable<String>

但是,以下代码返回false:

String.class.isAssignableFrom(Comparable.class)
Run Code Online (Sandbox Code Playgroud)

如何检查某个类是否实现了给定的接口?

java reflection

1
推荐指数
1
解决办法
380
查看次数

Springboot TomcatEmbeddedServletContainer KeepAliveTimeout无效

我已经在spring boot embeded tomcat server中将keep alive timeout设置为30秒.所以我在Application.java中使用下面的,

@Bean   
public EmbeddedServletContainerFactory getEmbeddedServletContainerFactory() {
    TomcatEmbeddedServletContainerFactory containerFactory = new TomcatEmbeddedServletContainerFactory();
    containerFactory
            .addConnectorCustomizers(new TomcatConnectorCustomizer() {
                @Override
                public void customize(Connector connector) {
                    ((AbstractProtocol) connector.getProtocolHandler())
                            .setKeepAliveTimeout(30000);
                }
            });

    return containerFactory;
}
Run Code Online (Sandbox Code Playgroud)

然后我从我的休息控制器睡了40秒的请求线程.但是当我通过邮递员发出请求时,它成功返回HTTP状态代码200,而不应该返回网关超时错误.

我尝试setConnectionTimeout和setKeepAliveTimeout,它不起作用.

我在这里失踪了什么?

编辑问题:我最初的问题

让我解释一下我的原始问题,这个问题引导我提出上述问题.

好吧,我有一个很长的民意调查过程,通常运行超过5分钟.

那么当我为longpoll调用Rest API时会发生什么,在2.2分钟后我在浏览器中得到504 http错误.

我正在使用AWS环境,其中我有一个安装在AWS EC2实例中的ELB和HAProxy.

根据AWS doc,它表示ELB的默认空闲连接超时为60秒.所以我把它增加到最多30分钟.

而且它说,

如果您使用HTTP和HTTPS侦听器,我们建议您为EC2实例启用keep-alive选项.您可以在Web服务器设置或EC2实例的内核设置中启用keep-alive.

因此,将上面的代码片段中的嵌入式tomcat保持活动超时增加到30.2分钟

所以现在我希望我的长轮询请求能够完成,而不会出现504错误.但是我仍然在浏览器中出现504错误?

参考:AWS开发指南

java spring tomcat spring-boot

1
推荐指数
1
解决办法
9081
查看次数

Spring Boot 项目与 Apache Http Server 配合使用

我有两个用 Spring Boot 编写的项目,并且有单独的端口号。

server.port: 23100
server.port: 23101
Run Code Online (Sandbox Code Playgroud)

现在,我想将两个项目部署到一台服务器上并分片相同的端口80,我应该如何支持这种情况?

我知道它可以使用 Apache Http Server 来支持 PHP 等,Spring Boot 如何做到这一点?

更新

感谢@HeadBangingSloth给出了这个解决方案,总体思路是根据域名将80端口重定向到本地端口号。

  • 在/etc/httpd/conf.d/文件夹中创建vhost.conf文件
  • 根据您的实际情况添加以下内容。
  • 通过service httpd restart重启 http 服务器 <VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ServerName www.app1.com ServerAlias app1.com ProxyPass / http://localhost:23100/ ProxyPassReverse / http://localhost:23100/ </VirtualHost> <VirtualHost *:80> ProxyPreserveHost On ProxyRequests Off ServerName www.app2.com ServerAlias app2.com ProxyPass / http://localhost:23101/ ProxyPassReverse / http://localhost:23101/ </VirtualHost>

apache spring-mvc

1
推荐指数
1
解决办法
8176
查看次数

PIT变异测试Maven插件会跳过所有私有方法

我认为并非所有私有方法都应作为代码的独立部分进行测试。这就是为什么我要从PIT测试工具 maven插件的坑报告中排除它们的原因。我试图找到一种方法来做,但是失败了。这里的一些配置接近,在排除方法主题中的文档中进行了介绍,但这显然不是排除每个私有方法的正确方法。

所以我的问题是,从PIT分析中排除所有私有方法的方法是什么?

java unit-testing mutation-testing pitest

1
推荐指数
1
解决办法
350
查看次数

在Spring Framework中将字符串转换为其URL表示形式

Spring Framework中是否有任何方法可以将字符串转换为其URL表示形式?例如从.Majstrovstvá v ?adovom hokejimajstrovstva-v-ladovom-hokeji.

java spring spring-mvc

0
推荐指数
1
解决办法
1092
查看次数

如何测试非公开方法?

我正在学习Scala并编写了Email类似于以下内容的类:

class Email(emailConfigName: String) {
  private val emailConfig = ConfigFactory.load(emailConfigName) getConfig ("email")

  def notifySupportForTenant(symbolicName: String) {
    val emailMessage: Message = constructEmailMessage(symbolicName)
    Transport.send(emailMessage)
  }

  def constructEmailMessage(symbolicName: String): Message = {
    val message = createMessage(emailConfig getString ("shn.mail.smtp.host"))
    message setFrom (new InternetAddress(emailConfig getString ("shn.mail.from")))
    // todo: should come from API (sent by client)
    message setSentDate (new Date())
    message setSubject (emailConfig getString ("shn.mail.subject") replace("TENANT_ID", symbolicName))
    message setContent(emailConfig getString ("shn.mail.body"), "text/html")
    message.setRecipients(Message.RecipientType.TO, getMessageRecipients(emailConfig getString ("shn.mail.recipient")))
    message
  }

  private def createMessage(smtpHost: String): Message = …
Run Code Online (Sandbox Code Playgroud)

junit unit-testing scala scalatest

0
推荐指数
1
解决办法
454
查看次数