【问题标题】:How can I convert a method to asynchronous of my web service?如何将方法转换为我的 Web 服务的异步?
【发布时间】:2017-04-29 18:19:05
【问题描述】:

我目前有一个工作正常的网络肥皂服务方法,但我想知道如何将其转换为返回确认消息已收到并且客户端不会等到我完成该过程。

@Service
@WebService(serviceName = 
  "getStudents",wsdlLocation="/wsdl/Students.wsdl")
  public class StudentsImpl implements Students {


   public StudentResponse getStudents(StudentRequest 
   request) {

       **********************
   }
 }


public class StudentResponse
  {
    private String status;
    private Date timeStamp;
    ....................
  }

我想知道如何回复“OK”状态以及时间。

    @WebService
    public abstract interface Students
    {

       @WebResult(name="response")
       @XmlElement(required=true, name="request")
       public abstract StudentResponse 
       getStudents(@WebParam(name="request") StudentRequest 
       request);

    }

【问题讨论】:

    标签: java web soap soap-client


    【解决方案1】:

    有趣的是,这似乎是我回答的最后一个问题Howto Convert an async call to blocking

    所以步骤是:

    • 在新线程中执行阻塞调用。
    • 引入监听接口
    • 阻塞调用完成时从线程调用监听器
    • 引入一个可以从调用者调用的新异步包装器。

    假设您的阻塞电话是fooBlocking(),请执行以下操作:

    public class MyKoolClass {
        // .. kool functionalities here ...
    
        public interface Listener {
            void onTaskCompleted(String message);
        }
    
        public void fooAsyncWrapper() {
            new FooTask(new Listener() {
                @Override
                public void onTaskCompleted(final String message) {
                    System.out.println("So complete, bruh" + message);
                }    
            }).start();
        }
    
        public static class FooTask extends Thread {
            Listener listener;
    
            public FooTask(final Listener listener) {
                this.listener = listener;
            }
    
            @Override
            public void run() {
                fooBlocking();
                listener.onTaskCompleted("Sup baws.");
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-12
      • 2017-05-14
      • 2019-12-26
      • 2011-08-28
      • 2012-10-23
      • 1970-01-01
      • 2013-08-24
      相关资源
      最近更新 更多