Endpoint Mapping কী?
স্প্রিং ওয়েব সার্ভিসেসে Endpoint Mapping হল একটি প্রক্রিয়া যেখানে SOAP বার্তা প্রক্রিয়াকরণের জন্য নির্দিষ্ট এন্ডপয়েন্ট নির্বাচন করা হয়। এটি SOAP রিকোয়েস্টের ভিত্তিতে সঠিক মেথড বা ক্লাসে রিকোয়েস্ট রাউট করে। স্প্রিং-WS ডিফল্ট এবং কাস্টম উভয় ধরনের এন্ডপয়েন্ট ম্যাপিং সমর্থন করে।
Default Endpoint Mapping
স্প্রিং-WS ডিফল্টভাবে বার্তা হ্যান্ডলিংয়ের জন্য PayloadRootQNameEndpointMapping ব্যবহার করে। এটি SOAP বার্তার Payload Root QName (Qualified Name) ব্যবহার করে নির্দিষ্ট এন্ডপয়েন্টে রিকোয়েস্ট পাঠায়।
কনফিগারেশন
ডিফল্ট এন্ডপয়েন্ট ম্যাপিং ব্যবহার করার জন্য নিচের ধাপগুলো অনুসরণ করা হয়:
Endpoint ক্লাস তৈরি
@Endpointঅ্যানোটেশন ব্যবহার করে একটি এন্ডপয়েন্ট তৈরি করতে হয়।উদাহরণ:
@Endpoint public class EmployeeEndpoint { private static final String NAMESPACE_URI = "http://example.com/webservice"; @PayloadRoot(namespace = NAMESPACE_URI, localPart = "GetEmployeeRequest") @ResponsePayload public GetEmployeeResponse getEmployee(@RequestPayload GetEmployeeRequest request) { GetEmployeeResponse response = new GetEmployeeResponse(); response.setName("John Doe"); response.setSalary(75000); return response; } }- SOAP রিকোয়েস্ট অনুযায়ী রুট নির্ধারণ
@PayloadRootঅ্যানোটেশন ব্যবহার করে রিকোয়েস্ট রুট এবং নেমস্পেস সংজ্ঞায়িত করতে হবে।
ডিফল্টের সুবিধা
- সহজে কনফিগার করা যায়।
- ছোট প্রকল্পের জন্য কার্যকর।
- কমপ্লেক্সিটি কম এবং দ্রুত সেটআপের জন্য আদর্শ।
Custom Endpoint Mapping
বড় এবং জটিল অ্যাপ্লিকেশনে SOAP বার্তা হ্যান্ডলিংয়ের জন্য Custom Endpoint Mapping ব্যবহার করা হয়। এটি বিশেষত তখন ব্যবহার করা হয় যখন বার্তা প্রসেসিংয়ের জন্য Payload Root QName যথেষ্ট নয়।
কাস্টম ম্যাপিংয়ের জন্য ক্লাসগুলো
স্প্রিং-WS কাস্টম ম্যাপিংয়ের জন্য কয়েকটি প্রিফিনড ক্লাস সরবরাহ করে:
- SoapActionEndpointMapping: SOAP অ্যাকশনের ভিত্তিতে এন্ডপয়েন্ট নির্বাচন করে।
- SimpleUrlEndpointMapping: URL এর ভিত্তিতে এন্ডপয়েন্ট ম্যাপ করে।
- XPathPayloadEndpointMapping: XPath এক্সপ্রেশন ব্যবহার করে এন্ডপয়েন্ট নির্ধারণ করে।
SoapActionEndpointMapping ব্যবহার
SOAP বার্তার SOAP Action এর ভিত্তিতে এন্ডপয়েন্ট নির্বাচন করতে SoapActionEndpointMapping ব্যবহার করা হয়।
SOAP Action সেটআপ
WSDL ফাইলে SOAP Action নির্ধারণ করতে হবে।উদাহরণ:
<soap:operation soapAction="http://example.com/webservice/GetEmployee"/>SOAP Action Mapping কনফিগার
কনফিগারেশনেSoapActionEndpointMappingযোগ করতে হবে।উদাহরণ:
@Bean public SoapActionEndpointMapping soapActionEndpointMapping() { SoapActionEndpointMapping mapping = new SoapActionEndpointMapping(); mapping.setMappings(Collections.singletonMap( "http://example.com/webservice/GetEmployee", "employeeEndpoint" )); return mapping; }
SimpleUrlEndpointMapping ব্যবহার
URL ভিত্তিক এন্ডপয়েন্ট নির্বাচন করতে SimpleUrlEndpointMapping ব্যবহার করা হয়।
Mapping Configuration
নির্দিষ্ট URL এবং এন্ডপয়েন্টের মধ্যে ম্যাপিং সেট করুন।উদাহরণ:
@Bean public SimpleUrlEndpointMapping simpleUrlEndpointMapping() { SimpleUrlEndpointMapping mapping = new SimpleUrlEndpointMapping(); mapping.setMappings(Collections.singletonMap( "/employeeService", "employeeEndpoint" )); return mapping; }
XPathPayloadEndpointMapping ব্যবহার
XML পেলোডের নির্দিষ্ট অংশের উপর ভিত্তি করে এন্ডপয়েন্ট নির্বাচন করতে XPathPayloadEndpointMapping ব্যবহার করা হয়।
XPath এক্সপ্রেশন নির্ধারণ
পেলোড থেকে XPath ব্যবহার করে বার্তা প্রক্রিয়াকরণের জন্য গুরুত্বপূর্ণ তথ্য নির্ধারণ করুন।উদাহরণ:
@Bean public XPathPayloadEndpointMapping xpathEndpointMapping() { XPathPayloadEndpointMapping mapping = new XPathPayloadEndpointMapping(); mapping.setExpressions(Collections.singletonMap( "//GetEmployeeRequest", "employeeEndpoint" )); return mapping; }
Default এবং Custom Endpoint Mapping এর তুলনা
| বৈশিষ্ট্য | Default Mapping | Custom Mapping |
|---|---|---|
| ব্যবহারযোগ্যতা | সাধারণ এবং দ্রুত সেটআপ | বড় এবং জটিল প্রকল্পে কার্যকর |
| কনফিগারেশন জটিলতা | সহজ | অপেক্ষাকৃত জটিল |
| আবশ্যকতা | PayloadRootQName যথেষ্ট | SOAP Action, URL বা XPath প্রয়োজন |
Endpoint Mapping কেন গুরুত্বপূর্ণ?
- SOAP বার্তা প্রক্রিয়াকরণ সহজ করে।
- প্রজেক্টের স্কেল অনুযায়ী কাস্টমাইজ করার সুযোগ দেয়।
- ক্লিন এবং ওয়েল-ডিফাইন্ড আর্কিটেকচার নিশ্চিত করে।
ডিফল্ট ম্যাপিং ছোট প্রকল্পে উপযোগী হলেও, কাস্টম ম্যাপিং বড় স্কেল এন্টারপ্রাইজ অ্যাপ্লিকেশনের জন্য অত্যন্ত কার্যকর।
Read more