স্প্রিং ওয়েব সার্ভিসেস (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 ক্লায়েন্টের রিকোয়েস্ট প্রসেস করে কাঙ্ক্ষিত আউটপুট প্রদান করে। এটি এন্টারপ্রাইজ লেভেলের ওয়েব সার্ভিস তৈরি করার জন্য আদর্শ।
Read more