Asynchronous Web Services এর মাধ্যমে একাধিক ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে নিরবচ্ছিন্নভাবে যোগাযোগ করতে পারে, কিন্তু একে অপরের কাজের জন্য অপেক্ষা করার প্রয়োজন হয় না। এটি বিশেষভাবে গুরুত্বপূর্ণ যখন সার্ভিস কলগুলি দীর্ঘ সময় ধরে চলে বা কখনও কখনও ব্যস্ত সার্ভারের কারণে দীর্ঘ প্রতিক্রিয়া সময়ের সম্মুখীন হয়।
Asynchronous ওয়েব সার্ভিস হল এমন একটি সার্ভিস যেখানে ক্লায়েন্ট রিকোয়েস্ট পাঠানোর পরে, সার্ভার সেই রিকোয়েস্ট প্রক্রিয়া করতে পারে এবং একই সময়ে অন্যান্য কাজও করতে পারে, এবং শেষমেশ ক্লায়েন্টকে ফলাফল পাঠাতে পারে যখন কাজটি সম্পন্ন হবে।
Apache CXF তে অ্যাসিনক্রোনাস ওয়েব সার্ভিস তৈরি করা খুবই সহজ। CXF এর মাধ্যমে অ্যাসিনক্রোনাস ওয়েব সার্ভিসে @Async
অ্যানোটেশন ব্যবহার করা যেতে পারে অথবা Future অবজেক্ট বা Callback ক্লাসের মাধ্যমে কার্যকরী করা যায়।
@Async
অ্যানোটেশন ব্যবহারimport javax.jws.WebService;
import javax.jws.WebMethod;
import java.util.concurrent.Future;
@WebService
public class AsyncService {
@WebMethod
public Future<String> longRunningTask(String input) {
return new AsyncResult<>(processTask(input)); // Process asynchronously
}
private String processTask(String input) {
// Simulate a long-running task
try {
Thread.sleep(5000); // Simulate delay
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Processed: " + input;
}
}
এই কোডে, longRunningTask
মেথডটি অ্যাসিনক্রোনাসভাবে কাজ করে এবং Future
অবজেক্টের মাধ্যমে রিকোয়েস্টের ফলাফল ফিরিয়ে দেয়।
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class AsyncCallbackClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(AsyncService.class);
factory.setAddress("http://localhost:8080/asyncService");
AsyncService service = (AsyncService) factory.create();
service.longRunningTask("Request Data", new AsyncHandler<String>() {
@Override
public void handleResponse(Response<String> response) {
// Handle the response when it is ready
System.out.println("Response received: " + response.get());
}
});
}
}
এই উদাহরণে, একটি callback হ্যান্ডলার ব্যবহৃত হয়েছে, যা ওয়েব সার্ভিসের কাজ সম্পন্ন হওয়ার পর ফলাফল গ্রহণ করে।
Asynchronous Web Services ওয়েব অ্যাপ্লিকেশন ও সার্ভিস আর্কিটেকচারে কার্যকরী সমাধান প্রদান করে, বিশেষ করে দীর্ঘ সময়সাপেক্ষ প্রক্রিয়া পরিচালনা করার ক্ষেত্রে। এর মাধ্যমে সার্ভিসের দক্ষতা, স্কেলেবিলিটি, এবং পারফরম্যান্স উন্নত হয়, এবং ক্লায়েন্টরা কোনওভাবে সার্ভারের কাজের জন্য অপেক্ষা না করেই তাদের কার্যক্রম চালিয়ে যেতে পারে।