Spring Web Services-এ Interceptor ব্যবহার একটি সাধারণ কৌশল যা ক্লায়েন্ট এবং সার্ভারের মধ্যে HTTP বা SOAP বার্তাগুলির প্রক্রিয়াকরণে হস্তক্ষেপ করতে ব্যবহৃত হয়। Interceptor-গুলো সাধারণত লগিং, অথেনটিকেশন, অথরাইজেশন, অথবা বার্তা পরিবর্তন করতে ব্যবহৃত হয়।
নিচে Spring Web Services-এ Interceptor ব্যবহার করার একটি উদাহরণ দেওয়া হলো:
ধরি, আপনি একটি SOAP ওয়েব সার্ভিস ব্যবহার করছেন, এবং প্রতিটি অনুরোধের আগে একটি নির্দিষ্ট হেডার যাচাই করতে চান।
ধাপ ১: Maven নির্ভরতা যোগ করুন
আপনার pom.xml ফাইলে নিচের নির্ভরতাগুলো যোগ করুন:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
</dependencies>
ধাপ ২: Interceptor তৈরি করুন
একটি ক্লাস তৈরি করুন যা EndpointInterceptor ইন্টারফেস ইমপ্লিমেন্ট করে।
package com.example.interceptor;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.server.EndpointInterceptor;
import org.springframework.ws.soap.SoapHeader;
import org.springframework.ws.soap.SoapMessage;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
public class CustomInterceptor implements EndpointInterceptor {
@Override
public boolean handleRequest(MessageContext messageContext, Object endpoint) throws Exception {
SoapMessage soapMessage = (SoapMessage) messageContext.getRequest();
SoapHeader header = soapMessage.getSoapHeader();
if (header == null) {
throw new RuntimeException("Missing SOAP header");
}
// Example: Validate a specific header
Source source = header.getSource();
DOMSource domSource = (DOMSource) source;
// Validate the header content as needed
return true; // Continue the processing if validation passes
}
@Override
public boolean handleResponse(MessageContext messageContext, Object endpoint) throws Exception {
// Logic for response handling
return true;
}
@Override
public boolean handleFault(MessageContext messageContext, Object endpoint) throws Exception {
// Logic for fault message handling
return true;
}
@Override
public void afterCompletion(MessageContext messageContext, Object endpoint, Exception ex) throws Exception {
// Cleanup logic after completion
}
}
ধাপ ৩: Interceptor Configurations
একটি কনফিগারেশন ক্লাস তৈরি করুন যেখানে Interceptor রেজিস্টার করবেন।
package com.example.config;
import com.example.interceptor.CustomInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.ws.config.annotation.EnableWs;
import org.springframework.ws.config.annotation.WsConfigurerAdapter;
import org.springframework.ws.server.EndpointInterceptor;
import java.util.List;
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {
@Override
public void addInterceptors(List<EndpointInterceptor> interceptors) {
interceptors.add(new CustomInterceptor());
}
}
ধাপ ৪: SOAP ক্লায়েন্ট থেকে অনুরোধ পাঠানো
SOAP ক্লায়েন্ট থেকে বার্তা পাঠালে Interceptor প্রথমে হেডারটি যাচাই করবে।
আউটপুট
- যদি হেডারটি বৈধ হয়, অনুরোধটি প্রসেস করা হবে।
- যদি হেডারটি অনুপস্থিত বা অবৈধ হয়, Interceptor একটি ত্রুটি নিক্ষেপ করবে।
এই পদ্ধতিটি ব্যবহার করে আপনি Spring Web Services-এ Interceptor সহজেই যোগ করতে এবং ব্যবহার করতে পারবেন।
Read more