Spring Web Services এর জন্য Endpoints তৈরি

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

338

Spring Web Services-এ Endpoints হলো এমন একটি পদ্ধতি যা ক্লায়েন্টের অনুরোধ (Request) গ্রহণ করে এবং সেগুলোর জন্য সঠিক সাড়া (Response) প্রদান করে। এটি মূলত একটি ক্লাস বা মেথড যা SOAP বার্তা প্রক্রিয়াকরণ করে। Endpoints তৈরির মাধ্যমে আপনি ক্লায়েন্টের সঙ্গে সার্ভিসের ইন্টারঅ্যাকশন নির্ধারণ করতে পারেন।


Endpoints কীভাবে কাজ করে?

Spring Web Services-এ Endpoints একটি বিশেষ অ্যাপ্লিকেশন লেয়ার যেখানে SOAP বার্তা গ্রহণ করা হয় এবং এর কার্যকরী প্রসেসিং করা হয়। এটি XML ম্যাপিংয়ের মাধ্যমে ইনপুট ডেটাকে জাভা অবজেক্টে রূপান্তরিত করে এবং সঠিক কার্য সম্পাদনের পর XML আউটপুট পাঠায়।

প্রধান বৈশিষ্ট্য:

  • SOAP বার্তা প্রসেসিং: ইনকামিং SOAP বার্তা গ্রহণ করে এবং সেটির উপযুক্ত প্রসেসিং সম্পন্ন করে।
  • অ্যানোটেশন ভিত্তিক কনফিগারেশন: @Endpoint এবং @PayloadRoot অ্যানোটেশনের মাধ্যমে নির্ধারণ করা হয়।
  • XSD Schema Validation: XML ডেটার বৈধতা যাচাই করতে XSD (XML Schema Definition) ব্যবহার করা হয়।

Spring Web Services-এর Endpoints তৈরি করার ধাপ

স্টেপ ১: ডিপেনডেন্সি যোগ করা

Maven বা Gradle-এ প্রয়োজনীয় ডিপেনডেন্সি যোগ করুন।

<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws-core</artifactId>
    <version>3.1.1</version>
</dependency>

স্টেপ ২: XSD স্কিমা তৈরি করা

XML ডেটার গঠন সংজ্ঞায়িত করতে একটি XSD (XML Schema Definition) ফাইল তৈরি করুন।

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/hello"
           xmlns="http://example.com/hello" elementFormDefault="qualified">

    <xs:element name="HelloRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="HelloResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="message" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

স্টেপ ৩: Endpoint ক্লাস তৈরি করা

Endpoint তৈরি করার জন্য @Endpoint এবং @PayloadRoot অ্যানোটেশন ব্যবহার করুন।

@Endpoint
public class HelloEndpoint {

    private static final String NAMESPACE_URI = "http://example.com/hello";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "HelloRequest")
    @ResponsePayload
    public HelloResponse sayHello(@RequestPayload HelloRequest request) {
        HelloResponse response = new HelloResponse();
        response.setMessage("Hello, " + request.getName() + "!");
        return response;
    }
}

স্টেপ ৪: কনফিগারেশন ক্লাস তৈরি করা

Endpoint পরিচালনার জন্য একটি কনফিগারেশন ক্লাস তৈরি করুন।

@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {

    @Bean
    public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext context) {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(context);
        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean<>(servlet, "/ws/*");
    }

    @Bean(name = "hello")
    public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema helloSchema) {
        DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
        wsdl11Definition.setPortTypeName("HelloPort");
        wsdl11Definition.setLocationUri("/ws");
        wsdl11Definition.setTargetNamespace("http://example.com/hello");
        wsdl11Definition.setSchema(helloSchema);
        return wsdl11Definition;
    }

    @Bean
    public XsdSchema helloSchema() {
        return new SimpleXsdSchema(new ClassPathResource("hello.xsd"));
    }
}

Endpoint এর কার্যপ্রণালী

  1. SOAP বার্তা গ্রহণ: MessageDispatcherServlet ইনকামিং SOAP বার্তা গ্রহণ করে।
  2. PayloadRoot অ্যানোটেশন অনুসন্ধান: বার্তায় নির্ধারিত namespace এবং localPart এর ভিত্তিতে সঠিক Endpoint চিহ্নিত হয়।
  3. প্রসেসিং এবং রেসপন্স: Endpoint ক্লাসের মেথড বার্তাটি প্রসেস করে এবং নির্ধারিত আউটপুট প্রদান করে।

উদাহরণ: SOAP বার্তা প্রক্রিয়াকরণ

ইনপুট (SOAP Request)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://example.com/hello">
   <soapenv:Header/>
   <soapenv:Body>
      <hel:HelloRequest>
         <hel:name>John</hel:name>
      </hel:HelloRequest>
   </soapenv:Body>
</soapenv:Envelope>

আউটপুট (SOAP Response)

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:hel="http://example.com/hello">
   <soapenv:Header/>
   <soapenv:Body>
      <hel:HelloResponse>
         <hel:message>Hello, John!</hel:message>
      </hel:HelloResponse>
   </soapenv:Body>
</soapenv:Envelope>

Endpoint ব্যবহারের সুবিধা

  • সহজ কাস্টমাইজেশন: ইনকামিং বার্তার উপর নির্ভর করে লজিক প্রয়োগ সহজ।
  • XML ভ্যালিডেশন সমর্থন: XSD ব্যবহার করে বার্তার ডেটার সঠিকতা যাচাই করা যায়।
  • SOAP এবং Spring এর সমন্বয়: Spring এর সুবিধা ব্যবহার করে উন্নত মানের ওয়েব সার্ভিস প্রদান।

Content added By

স্প্রিং ওয়েব সার্ভিসে Endpoint হলো একটি লজিক্যাল পয়েন্ট বা ইন্টারফেস যা ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ স্থাপন করে। এটি মূলত একটি URI (Uniform Resource Identifier) দ্বারা চিহ্নিত হয় এবং ক্লায়েন্ট থেকে আসা অনুরোধ (Request) গ্রহণ করে, সেগুলো প্রক্রিয়া করে এবং ফলাফল (Response) প্রদান করে।


Endpoint এর ভূমিকা

  1. অনুরোধ গ্রহণ
    Endpoint ওয়েব সার্ভিসে ক্লায়েন্টের পাঠানো অনুরোধ গ্রহণ করে। এটি নির্ধারিত URI বা URL এর মাধ্যমে অ্যাক্সেস করা যায়।
  2. ডেটা প্রক্রিয়াকরণ
    Endpoint অনুরোধ অনুযায়ী প্রয়োজনীয় ডেটা প্রক্রিয়া করে। উদাহরণস্বরূপ, SOAP বার্তা প্রক্রিয়া করা বা RESTful API এর ডেটা রিড/আপডেট করা।
  3. উত্তর প্রদান
    Endpoint প্রক্রিয়াকৃত ডেটার ভিত্তিতে ক্লায়েন্টকে একটি উত্তর (Response) প্রদান করে, যা প্রায়ই XML বা JSON ফরম্যাটে হয়।
  4. সার্ভিসের লগিক সংজ্ঞায়ন
    Endpoint সার্ভিসের মূল ব্যবসায়িক লজিক সংজ্ঞায়িত করে এবং এটি কীভাবে কাজ করবে তা নির্ধারণ করে।

স্প্রিং ওয়েব সার্ভিসে Endpoint তৈরি

স্প্রিং ওয়েব সার্ভিসে Endpoint তৈরি করার জন্য @Endpoint এবং @PayloadRoot অ্যানোটেশন ব্যবহার করা হয়। নিচে একটি উদাহরণ দেওয়া হলো:

@Endpoint
public class MyEndpoint {

    private static final String NAMESPACE_URI = "http://example.com/soap";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "GetRequest")
    @ResponsePayload
    public GetResponse handleRequest(@RequestPayload GetRequest request) {
        GetResponse response = new GetResponse();
        response.setMessage("Hello, " + request.getName());
        return response;
    }
}

উদাহরণের ব্যাখ্যা:

  1. @Endpoint: এই অ্যানোটেশন ব্যবহার করে ক্লাসটিকে একটি Endpoint হিসেবে চিহ্নিত করা হয়।
  2. @PayloadRoot: এটি SOAP মেসেজের নির্দিষ্ট namespace এবং localPart অনুযায়ী অনুরোধকে নির্ধারণ করে।
  3. @RequestPayload এবং @ResponsePayload: ইনকামিং অনুরোধ এবং আউটগোয়িং উত্তরকে যথাক্রমে প্রক্রিয়া এবং প্রদান করে।

Endpoint এর প্রধান কাজ

URI চিহ্নিতকরণ
Endpoint একটি নির্দিষ্ট URI বা URL এর মাধ্যমে চিহ্নিত হয়, যা ক্লায়েন্টের জন্য অ্যাক্সেস পয়েন্ট হিসেবে কাজ করে।

SOAP বার্তা প্রক্রিয়াকরণ
SOAP ভিত্তিক ওয়েব সার্ভিসে Endpoint XML বার্তাগুলো গ্রহণ ও প্রক্রিয়া করে এবং প্রাসঙ্গিক উত্তর প্রদান করে।

ব্যবসায়িক লজিক বাস্তবায়ন
Endpoint সার্ভিসের লজিক বাস্তবায়ন করে, যেমন ডেটা প্রক্রিয়াকরণ বা ডেটাবেস থেকে তথ্য আহরণ।

ডেটা ট্রান্সফরমেশন
Endpoint প্রায়ই ইনকামিং ডেটাকে ক্লায়েন্টের প্রয়োজন অনুযায়ী ট্রান্সফর্ম করে।

নিরাপত্তা নিশ্চিত করা
Endpoint সার্ভিসের নিরাপত্তা নিশ্চিত করতে WS-Security বা অন্যান্য নিরাপত্তা পদ্ধতির সমর্থন প্রদান করে।


Endpoint এর উপকারিতা

  • সংজ্ঞায়িত যোগাযোগ পয়েন্ট: ক্লায়েন্ট এবং সার্ভারের মধ্যে নির্দিষ্ট যোগাযোগ পয়েন্ট তৈরি করে।
  • ব্যবসায়িক লজিকের স্পষ্টতা: সার্ভিস লজিক স্পষ্টভাবে সংজ্ঞায়িত এবং সহজে পরিচালনা করা যায়।
  • নিরাপত্তা এবং নির্ভরযোগ্যতা: ক্লায়েন্ট-সার্ভার যোগাযোগকে নিরাপদ এবং নির্ভরযোগ্য করে।
  • SOAP এবং REST উভয় সমর্থন: স্প্রিং ওয়েব সার্ভিসে উভয় ধরনের Endpoint তৈরি করা যায়।

সারাংশ

স্প্রিং ওয়েব সার্ভিসের Endpoint হলো একটি গুরুত্বপূর্ণ উপাদান, যা সার্ভিসের লজিক বাস্তবায়ন এবং ক্লায়েন্ট-সার্ভার যোগাযোগ পরিচালনার মূল দায়িত্ব পালন করে। এটি ওয়েব সার্ভিসের কার্যকর এবং সুশৃঙ্খল পরিচালনার জন্য অপরিহার্য।

Content added By

স্প্রিং ওয়েব সার্ভিসেস ডেভেলপমেন্টের সময়, @Endpoint এবং @PayloadRoot অ্যানোটেশন দুটি SOAP মেসেজ প্রসেসিংয়ের জন্য মূল ভূমিকা পালন করে। এদের সাহায্যে আপনি ইনকামিং SOAP মেসেজ হ্যান্ডল করতে পারেন এবং সঠিক ফাংশনে রাউট করতে পারেন।


@Endpoint অ্যানোটেশন

ভূমিকা

@Endpoint একটি ক্লাসের উপর প্রয়োগ করা হয় যা SOAP মেসেজ প্রক্রিয়াকরণের জন্য দায়ী। এটি স্প্রিং ওয়েব সার্ভিস ফ্রেমওয়ার্ককে নির্দেশ করে যে এই ক্লাসটি SOAP মেসেজ হ্যান্ডল করবে।

বৈশিষ্ট্য

  • এটি একটি স্ট্যান্ডার্ড স্প্রিং Bean।
  • SOAP মেসেজ রাউটিং এবং প্রসেসিং পরিচালনার জন্য ব্যবহৃত হয়।

উদাহরণ

@Endpoint
public class HelloWorldEndpoint {
    // SOAP মেসেজ প্রসেসিং মেথড এখানে ডিফাইন করা হয়
}

@PayloadRoot অ্যানোটেশন

ভূমিকা

@PayloadRoot অ্যানোটেশনটি একটি মেথডের উপর প্রয়োগ করা হয়, যা নির্দিষ্ট XML নেমস্পেস এবং লোকালপার্থ (localPart) এর ভিত্তিতে ইনকামিং SOAP মেসেজের পে-লোড (Payload) প্রসেস করে।

বৈশিষ্ট্য

  • একটি মেথড নির্দিষ্ট নেমস্পেস এবং লোকালপার্থের জন্য রেজিস্টার করে।
  • এটি XML ভিত্তিক SOAP মেসেজ প্রক্রিয়াকরণের জন্য নির্দিষ্ট ফাংশন নির্বাচন করতে সাহায্য করে।

উদাহরণ

@PayloadRoot(namespace = "http://example.com/helloworld", localPart = "HelloRequest")
@ResponsePayload
public HelloResponse sayHello(@RequestPayload HelloRequest request) {
    // ইনকামিং রিকোয়েস্ট প্রসেসিং এবং রেসপন্স রিটার্ন
}

@Endpoint এবং @PayloadRoot এর সংযুক্ত ব্যবহার

পূর্ণ উদাহরণ

নিচে একটি পূর্ণাঙ্গ উদাহরণ দেওয়া হলো যেখানে @Endpoint এবং @PayloadRoot একসাথে ব্যবহার করা হয়েছে:

@Endpoint
public class HelloWorldEndpoint {

    private static final String NAMESPACE_URI = "http://example.com/helloworld";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "HelloRequest")
    @ResponsePayload
    public HelloResponse sayHello(@RequestPayload HelloRequest request) {
        HelloResponse response = new HelloResponse();
        response.setMessage("Hello, " + request.getName());
        return response;
    }
}

কোড ব্যাখ্যা

  1. @Endpoint:
    • HelloWorldEndpoint ক্লাসটি SOAP মেসেজ প্রক্রিয়ার জন্য ডিক্লেয়ার করা হয়েছে।
    • স্প্রিং এটি একটি Bean হিসেবে চিনে।
  2. @PayloadRoot:
    • মেথডটি নির্দিষ্ট নেমস্পেস (http://example.com/helloworld) এবং লোকালপার্থ (HelloRequest) এর জন্য রেজিস্টার করা হয়েছে।
    • শুধুমাত্র মিলে যাওয়া পে-লোড পেলেই মেথডটি এক্সিকিউট হবে।
  3. @RequestPayload এবং @ResponsePayload:
    • @RequestPayload ইনকামিং XML ডেটা HelloRequest অবজেক্টে ম্যাপ করে।
    • @ResponsePayload আউটপুটকে HelloResponse অবজেক্ট থেকে XML ফর্ম্যাটে রূপান্তর করে।

ব্যবহারের সুবিধা

  • সহজতা: স্প্রিং ওয়েব সার্ভিসের মাধ্যমে SOAP মেসেজ প্রসেসিং সহজ হয়।
  • ম্যাপিং: @PayloadRoot এর মাধ্যমে নির্দিষ্ট XML নেমস্পেস এবং লোকালপার্থের ভিত্তিতে মেথড নির্বাচন করা যায়।
  • স্ট্রাকচারড কোড: @Endpoint ব্যবহার করে SOAP মেসেজ প্রসেসিং লজিক এক জায়গায় সংগঠিত রাখা যায়।

সারাংশ

স্প্রিং ওয়েব সার্ভিসেসে @Endpoint এবং @PayloadRoot অ্যানোটেশন SOAP মেসেজ প্রসেসিংকে সুনির্দিষ্ট ও স্ট্রাকচারড করে তোলে। এর মাধ্যমে আপনি ক্লিন এবং স্কেলেবল কোড লিখতে পারেন, যা বড় প্রজেক্টের জন্য খুবই গুরুত্বপূর্ণ।


Content added By

Spring Web Services (Spring-WS) SOAP ভিত্তিক ওয়েব সার্ভিস তৈরি ও ব্যবহারের জন্য একটি শক্তিশালী ফ্রেমওয়ার্ক। এটি SOAP রিকোয়েস্ট গ্রহণ ও রেসপন্স তৈরি করতে কাস্টমাইজড এন্ডপয়েন্ট এবং বিভিন্ন টুলস সরবরাহ করে।


SOAP রিকোয়েস্ট কীভাবে কাজ করে

SOAP রিকোয়েস্ট হলো একটি XML ভিত্তিক বার্তা, যা ক্লায়েন্ট থেকে সার্ভারে পাঠানো হয়। এটি প্রয়োজনীয় তথ্য বহন করে এবং প্রটোকল হিসেবে HTTP বা HTTPS ব্যবহার করে।

SOAP রেসপন্স কী

SOAP রেসপন্স হলো সার্ভারের পক্ষ থেকে প্রেরিত একটি XML বার্তা, যা রিকোয়েস্টের উত্তরে ক্লায়েন্টকে প্রয়োজনীয় তথ্য প্রদান করে।


স্প্রিং ওয়েব সার্ভিসে SOAP রিকোয়েস্ট গ্রহণ ও রেসপন্স তৈরি করার ধাপ

১. XML স্কিমা (XSD) তৈরি করা

XML স্কিমা একটি SOAP মেসেজের কাঠামো সংজ্ঞায়িত করে।

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           targetNamespace="http://example.com/soap" 
           xmlns="http://example.com/soap" 
           elementFormDefault="qualified">

    <xs:element name="GetRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

    <xs:element name="GetResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="message" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

২. JAXB ব্যবহার করে XML থেকে জাভা ক্লাস জেনারেট করা

JAXB (Java Architecture for XML Binding) ব্যবহার করে XML স্কিমা থেকে জাভা ক্লাস জেনারেট করতে পারে। এটি Spring-WS এ SOAP বার্তার ডেটা প্রসেস করার জন্য ব্যবহৃত হয়।

৩. SOAP এন্ডপয়েন্ট তৈরি করা

Spring-WS এ এন্ডপয়েন্ট হলো সেই স্থান যেখানে SOAP রিকোয়েস্ট প্রক্রিয়াজাত করা হয় এবং রেসপন্স তৈরি করা হয়।

@Endpoint
public class ExampleEndpoint {

    private static final String NAMESPACE_URI = "http://example.com/soap";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "GetRequest")
    @ResponsePayload
    public GetResponse handleRequest(@RequestPayload GetRequest request) {
        GetResponse response = new GetResponse();
        response.setMessage("Hello, " + request.getName() + "!");
        return response;
    }
}

এন্ডপয়েন্ট ব্যাখ্যা

  • @Endpoint: এটি নির্দেশ করে যে এই ক্লাসটি একটি SOAP এন্ডপয়েন্ট।
  • @PayloadRoot: SOAP বার্তার নির্দিষ্ট রুট এলিমেন্টের জন্য এই পদ্ধতি ব্যবহার করা হবে।
  • @RequestPayload: SOAP রিকোয়েস্টের ডেটা গ্রহণ করতে ব্যবহৃত হয়।
  • @ResponsePayload: SOAP রেসপন্স তৈরি ও পাঠানোর জন্য ব্যবহৃত হয়।

৪. কনফিগারেশন ফাইল তৈরি

@EnableWs
@Configuration
public class WebServiceConfig extends WsConfigurerAdapter {

    @Bean
    public ServletRegistrationBean<MessageDispatcherServlet> messageDispatcherServlet(ApplicationContext applicationContext) {
        MessageDispatcherServlet servlet = new MessageDispatcherServlet();
        servlet.setApplicationContext(applicationContext);
        servlet.setTransformWsdlLocations(true);
        return new ServletRegistrationBean<>(servlet, "/ws/*");
    }

    @Bean(name = "example")
    public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema exampleSchema) {
        DefaultWsdl11Definition definition = new DefaultWsdl11Definition();
        definition.setPortTypeName("ExamplePort");
        definition.setLocationUri("/ws");
        definition.setTargetNamespace("http://example.com/soap");
        definition.setSchema(exampleSchema);
        return definition;
    }

    @Bean
    public XsdSchema exampleSchema() {
        return new SimpleXsdSchema(new ClassPathResource("example.xsd"));
    }
}

SOAP রিকোয়েস্টের উদাহরণ

SOAP ক্লায়েন্ট থেকে একটি রিকোয়েস্ট এইরকম হতে পারে:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ex="http://example.com/soap">
   <soapenv:Header/>
   <soapenv:Body>
      <ex:GetRequest>
         <ex:name>John</ex:name>
      </ex:GetRequest>
   </soapenv:Body>
</soapenv:Envelope>

SOAP রেসপন্সের উদাহরণ

সার্ভারের থেকে রেসপন্স আসতে পারে নিচের মতো:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ex="http://example.com/soap">
   <soapenv:Header/>
   <soapenv:Body>
      <ex:GetResponse>
         <ex:message>Hello, John!</ex:message>
      </ex:GetResponse>
   </soapenv:Body>
</soapenv:Envelope>

স্প্রিং-WS ব্যবহার করার সুবিধা

  • কাস্টমাইজড রিকোয়েস্ট এবং রেসপন্স হ্যান্ডলিং
  • SOAP স্ট্যান্ডার্ড সমর্থন
  • XML ভিত্তিক ডেটা প্রসেসিং সহজতর।

স্প্রিং-WS একটি সুসংগঠিত উপায়ে SOAP রিকোয়েস্ট গ্রহণ এবং রেসপন্স তৈরি করার জন্য উন্নত টুলস এবং ফ্রেমওয়ার্ক সরবরাহ করে। এটি এন্টারপ্রাইজ লেভেলের অ্যাপ্লিকেশন তৈরিতে বিশেষভাবে কার্যকর।

Content added By

স্প্রিং ওয়েব সার্ভিসেস (Spring Web Services) ব্যবহার করে SOAP এন্ডপয়েন্ট তৈরি করা একটি সাধারণ এবং কার্যকর প্রক্রিয়া। এখানে উদাহরণসহ একটি SOAP এন্ডপয়েন্ট তৈরি করার সম্পূর্ণ গাইড দেওয়া হলো।


প্রাথমিক ধারণা

SOAP এন্ডপয়েন্ট একটি সার্ভার-সাইড উপাদান যা SOAP ক্লায়েন্টের পাঠানো রিকোয়েস্ট গ্রহণ করে এবং সঠিক উত্তর প্রদান করে। এটি নির্দিষ্ট একটি নেমস্পেস ও XML মেসেজের সাথে কাজ করে।


XML স্কিমা তৈরি

SOAP এন্ডপয়েন্টে ব্যবহৃত ডেটার কাঠামো (structure) ডিফাইন করার জন্য একটি XML স্কিমা (XSD) তৈরি করতে হবে।

greeting.xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           targetNamespace="http://example.com/webservice"
           xmlns="http://example.com/webservice" 
           elementFormDefault="qualified">
    <xs:element name="GetGreetingRequest">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="name" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="GetGreetingResponse">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="message" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

JAXB ক্লাস জেনারেট করা

উপরে উল্লেখিত স্কিমা থেকে JAXB ক্লাস জেনারেট করতে maven-jaxb2-plugin ব্যবহার করুন।

Maven প্লাগইন যুক্ত করুন:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxb2-maven-plugin</artifactId>
    <version>2.5.0</version>
    <executions>
        <execution>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <schemaDirectory>${project.basedir}/src/main/resources/xsd</schemaDirectory>
        <outputDirectory>${project.basedir}/target/generated-sources/jaxb</outputDirectory>
    </configuration>
</plugin>

SOAP এন্ডপয়েন্ট তৈরি

স্প্রিং ওয়েব সার্ভিসের মাধ্যমে SOAP এন্ডপয়েন্ট তৈরি করা খুব সহজ। নিচে একটি উদাহরণ দেওয়া হলো:

GreetingEndpoint.java

@Endpoint
public class GreetingEndpoint {

    private static final String NAMESPACE_URI = "http://example.com/webservice";

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "GetGreetingRequest")
    @ResponsePayload
    public GetGreetingResponse getGreeting(@RequestPayload GetGreetingRequest request) {
        GetGreetingResponse response = new GetGreetingResponse();
        response.setMessage("Hello, " + request.getName() + "! Welcome to SOAP Web Services.");
        return response;
    }
}

উপরের কোডে:

  • @Endpoint: এন্ডপয়েন্ট ক্লাস হিসেবে চিহ্নিত করে।
  • @PayloadRoot: নির্দিষ্ট নেমস্পেস এবং রিকোয়েস্ট এলিমেন্টের জন্য মেথডটি ব্যবহারযোগ্য করে তোলে।
  • @RequestPayload: SOAP মেসেজের ডেটা ইনপুট হিসেবে গ্রহণ করে।
  • @ResponsePayload: SOAP মেসেজ আউটপুট হিসেবে প্রদান করে।

ওয়েব সার্ভিস কনফিগারেশন

SOAP মেসেজ প্রসেসিং এবং WSDL জেনারেশনের জন্য কনফিগারেশন প্রয়োজন।

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);
        return new ServletRegistrationBean<>(servlet, "/ws/*");
    }

    @Bean(name = "greetings")
    public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema greetingSchema) {
        DefaultWsdl11Definition definition = new DefaultWsdl11Definition();
        definition.setPortTypeName("GreetingPort");
        definition.setLocationUri("/ws");
        definition.setTargetNamespace("http://example.com/webservice");
        definition.setSchema(greetingSchema);
        return definition;
    }

    @Bean
    public XsdSchema greetingSchema() {
        return new SimpleXsdSchema(new ClassPathResource("xsd/greeting.xsd"));
    }
}

উপরের কনফিগারেশনে:

  • MessageDispatcherServlet: SOAP মেসেজ প্রসেস করে।
  • DefaultWsdl11Definition: WSDL ডিফিনেশন তৈরি করে।
  • XsdSchema: XML স্কিমা লোড করে।

SOAP রিকোয়েস্ট এবং রেসপন্স

SOAP ক্লায়েন্ট থেকে রিকোয়েস্ট পাঠানো হলে নিচের মতো রেসপন্স আসবে:

SOAP Request:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://example.com/webservice">
   <soapenv:Header/>
   <soapenv:Body>
      <web:GetGreetingRequest>
         <web:name>John</web:name>
      </web:GetGreetingRequest>
   </soapenv:Body>
</soapenv:Envelope>

SOAP Response:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://example.com/webservice">
   <soapenv:Header/>
   <soapenv:Body>
      <web:GetGreetingResponse>
         <web:message>Hello, John! Welcome to SOAP Web Services.</web:message>
      </web:GetGreetingResponse>
   </soapenv:Body>
</soapenv:Envelope>

সারাংশ

SOAP এন্ডপয়েন্ট তৈরি করার প্রক্রিয়া সহজ এবং স্ট্রাকচারড। XML স্কিমা, JAXB ক্লাস জেনারেশন, এবং স্প্রিং কনফিগারেশনের মাধ্যমে একটি SOAP এন্ডপয়েন্ট তৈরি করা যায় যা SOAP ক্লায়েন্টের রিকোয়েস্ট প্রসেস করে কাঙ্ক্ষিত আউটপুট প্রদান করে। এটি এন্টারপ্রাইজ লেভেলের ওয়েব সার্ভিস তৈরি করার জন্য আদর্শ।

Content added By
Promotion

Are you sure to start over?

Loading...