返回关键字后的调度程序

时间:2011-06-16 08:42:02

标签: java web-services scheduling

我有一个打开Web服务会话的方法。方法结构如下所示:

public Soap getServicePort()
{
   //TODO: Open a connect and return the SOAP object
   return soap;
 }

我要求在退货后直接添加显示器。监视器的工作是等待2小时并激活会话并重建一个新会话 - 因此当前会话当时无效,因此我们需要重建并返回一个新会话。

有人能提出合理的方法吗?

感谢。

2 个答案:

答案 0 :(得分:1)

public Soap getServicePort()
{
    try {
   return soap;
   } finally {
      // add monitor here.
   }
 }

但要小心:监视器不应该抛出异常。把它的启动ito try / catch。

可能更好的解决方案是包装模式。例如,您可以使用方法getServicePort()和2个实现来定义接口:一个是真正的实现,另一个是真实的并且添加了监视器。该解决方案更灵活。例如,您可能需要创建您的监视器以及其他方法,甚至在其他类中实现其他方法之后。

在这种情况下,您可以使用AOP。有几种方法可以使用它。一个是使用java的动态代理。其他人正在使用像AspectJ这样的特殊工具。

所以,选择你的解决方案。您的选择应取决于您的任务的复杂性以及实现此功能所需的方法/类的数量。如果只有一个方法使用try / finally,如果它是同一个类中的几个方法,请使用包装器模式。如果几个类中的多个方法都需要使用Proxy或AspectJ。

答案 1 :(得分:0)

您可以像这样尝试 logic ..无需监控此

private Soap soap = null;
public Soap getServicePort()
{
try {
    if(soap!=null && soap.isValide()){ 
      // not sure about the method isValide(), some condition to check session
      return soap;
    }else{
      // create new soap & return
      return soap;
    }
} catch(Exception e){
}// END Catch
}// END MEthod

根据需要多次调用该方法......