在jar启动时预加载Java类/库?

我已经用Java编写了Thrift服务器来利用特定的Java包/库,但是我不是Java程序员。

问题是; 我看到对服务器的第一个RPC调用超时。Subsequest请求的执行没有任何问题,它仅影响以某些(但必不可少)语言编写的客户端。

我当前的想法是服务器在响应上超时,因为在第一次调用时,服务器必须加载请求所需的所有库。一些Thrift客户端实现必须比其他实现更好地处理超时,这可能会使请求打开的时间更长一些。

在Java中,有没有一种方法可以在我第一次启动.jar文件时预加载我正在使用的库,因此对第一个请求没有延迟?

我通过增加节俭客户端的超时来解决问题(并提出了其他问题)。但是,我也实现了static /

Class.forName答案来帮助解决问题,效果很好。谢谢!

回答:

您可以在服务器上线之前运行负载。您尚未指定如何加载服务器,类以及环境是什么,但是可以利用以下事实:加载类时将运行类静态初始化程序。因此,如果您从“

main”方法运行,则您的类可能看起来像这样

public class Foo {

static {

//this will be run when the class is loaded

try { Class.forName("fully.qualified.class.name.that.i.want.to.Load"); }

catch ...

}

public static void main (string args[])

{

//run my server...

}

}

以上是 在jar启动时预加载Java类/库? 的全部内容, 来源链接: utcz.com/qa/413658.html

回到顶部