Spring Web Services-এ Message Dispatching হলো SOAP মেসেজ প্রক্রিয়াকরণের একটি প্রক্রিয়া যেখানে ইনকামিং SOAP রিকোয়েস্ট একটি নির্দিষ্ট এন্ডপয়েন্টে রুট করা হয়। Spring-এ MessageDispatcherServlet এই কাজটি পরিচালনা করে। নিচে উদাহরণসহ Message Dispatching কনফিগারেশনের প্রক্রিয়া বর্ণনা করা হলো:
Message Dispatching-এর মূল উপাদান
- MessageDispatcherServlet: ইনকামিং SOAP মেসেজ প্রসেস করে এবং এন্ডপয়েন্টে পাঠায়।
- DefaultMethodEndpointAdapter: এন্ডপয়েন্ট ক্লাসের মেথডগুলোকে সঠিকভাবে কল করতে সাহায্য করে।
- PayloadRootAnnotationMethodEndpointMapping: SOAP পেইলোডের রুট এলিমেন্টের ভিত্তিতে এন্ডপয়েন্ট ম্যাপিং করে।
Message Dispatching কনফিগারেশন
ধাপ ১: Maven ডিপেন্ডেন্সি যোগ করা
SOAP মেসেজ ডিসপ্যাচার সক্রিয় করতে নিচের ডিপেন্ডেন্সিগুলো নিশ্চিত করুন:
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>2.5.0</version>
</dependency>
ধাপ ২: MessageDispatcherServlet কনফিগার করা
MessageDispatcherServlet কনফিগার করতে একটি Spring Configuration ক্লাস তৈরি করুন।
WebServiceConfig.java:
@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {
@Bean
public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) {
MessageDispatcherServlet servlet = new MessageDispatcherServlet();
servlet.setApplicationContext(applicationContext);
servlet.setTransformWsdlLocations(true); // WSDL লোকেশনের ডাইনামিক রুটিং সক্রিয় করে
return new ServletRegistrationBean<>(servlet, "/ws/*");
}
@Bean(name = "students")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema studentsSchema) {
DefaultWsdl11Definition definition = new DefaultWsdl11Definition();
definition.setPortTypeName("StudentDetailsPort");
definition.setLocationUri("/ws");
definition.setTargetNamespace("http://example.com/students");
definition.setSchema(studentsSchema);
return definition;
}
@Bean
public XsdSchema studentsSchema() {
return new SimpleXsdSchema(new ClassPathResource("student-details.xsd"));
}
}
ব্যাখ্যা:
ServletRegistrationBeanক্লাস ব্যবহার করেMessageDispatcherServletরেজিস্টার করা হয়েছে।setTransformWsdlLocations(true)ফিচারটি SOAP WSDL লোকেশন ডাইনামিক করার জন্য ব্যবহার করা হয়।/ws/*এই URL প্যাটার্নটি SOAP সার্ভিসকে রুট করার জন্য নির্ধারণ করা হয়েছে।
ধাপ ৩: এন্ডপয়েন্ট তৈরি
একটি এন্ডপয়েন্ট তৈরি করুন যা ইনকামিং SOAP মেসেজ প্রসেস করবে।
StudentEndpoint.java:
@Endpoint
public class StudentEndpoint {
private static final String NAMESPACE_URI = "http://example.com/students";
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "GetStudentRequest")
@ResponsePayload
public GetStudentResponse getStudentDetails(@RequestPayload GetStudentRequest request) {
GetStudentResponse response = new GetStudentResponse();
response.setName("John Doe");
response.setAge(22);
response.setGrade("A");
return response;
}
}
ব্যাখ্যা:
@Endpoint: এই অ্যানোটেশন একটি ক্লাসকে SOAP এন্ডপয়েন্ট হিসেবে চিহ্নিত করে।@PayloadRoot: ইনকামিং পেইলোডের রুট এলিমেন্ট এবং নেমস্পেসের ভিত্তিতে এন্ডপয়েন্ট ম্যাপিং করে।@RequestPayloadএবং@ResponsePayload: ইনকামিং SOAP পেইলোডকে ডি-সিরিয়ালাইজ এবং আউটগোয়িং পেইলোডকে সিরিয়ালাইজ করতে ব্যবহৃত হয়।
ধাপ ৪: WSDL ফাইল এবং Schema তৈরি
SOAP সার্ভিসের কাঠামো নিশ্চিত করতে WSDL এবং Schema তৈরি করতে হবে।
student-details.xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://example.com/students"
xmlns="http://example.com/students"
elementFormDefault="qualified">
<xsd:element name="GetStudentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="GetStudentResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="age" type="xsd:int"/>
<xsd:element name="grade" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
ধাপ ৫: সার্ভিস পরীক্ষা
SOAP ক্লায়েন্ট বা SoapUI দিয়ে সার্ভিস পরীক্ষা করুন।
SOAP রিকোয়েস্ট উদাহরণ:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stu="http://example.com/students">
<soapenv:Header/>
<soapenv:Body>
<stu:GetStudentRequest>
<stu:id>1</stu:id>
</stu:GetStudentRequest>
</soapenv:Body>
</soapenv:Envelope>
SOAP রেসপন্স উদাহরণ:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:stu="http://example.com/students">
<soapenv:Header/>
<soapenv:Body>
<stu:GetStudentResponse>
<stu:name>John Doe</stu:name>
<stu:age>22</stu:age>
<stu:grade>A</stu:grade>
</stu:GetStudentResponse>
</soapenv:Body>
</soapenv:Envelope>
সারাংশ
Spring Web Services-এ Message Dispatching কনফিগারেশন সহজ এবং কার্যকর। MessageDispatcherServlet ইনকামিং SOAP মেসেজগুলো সঠিক এন্ডপয়েন্টে রুট করে এবং তা প্রসেস করে। উপরের ধাপগুলো অনুসরণ করে একটি শক্তিশালী SOAP সার্ভিস তৈরি ও কনফিগার করা যায়।
Read more