উদাহরণ সহ Message Dispatching কনফিগারেশন

Spring Web Services এবং Message Dispatching - স্প্রিং ওয়েব সার্ভিসেস (Spring Web Services) - Java Technologies

271

Spring Web Services-এ Message Dispatching হলো SOAP মেসেজ প্রক্রিয়াকরণের একটি প্রক্রিয়া যেখানে ইনকামিং SOAP রিকোয়েস্ট একটি নির্দিষ্ট এন্ডপয়েন্টে রুট করা হয়। Spring-এ MessageDispatcherServlet এই কাজটি পরিচালনা করে। নিচে উদাহরণসহ Message Dispatching কনফিগারেশনের প্রক্রিয়া বর্ণনা করা হলো:


Message Dispatching-এর মূল উপাদান

  1. MessageDispatcherServlet: ইনকামিং SOAP মেসেজ প্রসেস করে এবং এন্ডপয়েন্টে পাঠায়।
  2. DefaultMethodEndpointAdapter: এন্ডপয়েন্ট ক্লাসের মেথডগুলোকে সঠিকভাবে কল করতে সাহায্য করে।
  3. 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 সার্ভিস তৈরি ও কনফিগার করা যায়।

Content added By
Promotion

Are you sure to start over?

Loading...