在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