0

我正在开发一个从另一台服务器获取服务的 JAX-WS 网络服务。我必须打开套接字并关闭套接字才能使用此服务。

我正在寻找一些方法,我可以在部署时打开套接字并在未部署 web 服务时关闭套接字。

我计划使用@PostConstruct 和@PreDestroy,但它不能满足我的要求

@PostConstruct 仅在将新实例添加到方法就绪池时调用

@PreDestroy 仅在应用程序服务器决定减少 Method-Ready 池的大小时调用 - 即它确定它不需要保留尽可能多的 @WebService 实例。

请推荐我如何解决这个问题。我试图在每个请求时打开和关闭套接字,但它导致客户端超时。

问候, 伊姆兰

4

1 回答 1

0

您可以在构造函数或 PostConstruct 注释方法中检查您的静态 Socket 是否已初始化(例如非 null)。并在需要时对其进行初始化。

如果您需要使用加载的实例数维护一个静态 int,您可以。

然后,您可以在 Finalize 或 PreDestroy 中使用减少计数器并在其达到 0 时销毁套接字。

于 2012-08-17T08:30:50.360 回答