Spring Boot দিয়ে একটি Spring Web Service তৈরি করা হলো SOAP ভিত্তিক সার্ভিস ডেভেলপমেন্টকে সহজ এবং দ্রুত করার একটি কার্যকর পদ্ধতি। এখানে বিস্তারিতভাবে একটি SOAP সার্ভিস তৈরির ধাপগুলো ব্যাখ্যা করা হয়েছে।
প্রয়োজনীয় টুলস এবং লাইব্রেরি
Spring Boot দিয়ে Spring Web Service তৈরি করার জন্য নিম্নলিখিত টুলস ও লাইব্রেরি প্রয়োজন হবে:
- জাভা ডেভেলপমেন্ট কিট (JDK)
- মেভেন (Maven) বা গ্র্যাডল (Gradle)
- Spring Boot Starter Web Services ডিপেনডেন্সি
স্টেপ ১: প্রজেক্ট সেটআপ
মেভেন প্রজেক্টের জন্য pom.xml কনফিগারেশন
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
স্টেপ ২: XML Schema তৈরি
SOAP সার্ভিসে ডেটা আদান-প্রদানের জন্য একটি XML Schema Definition (XSD) তৈরি করতে হবে। উদাহরণস্বরূপ, একটি সার্ভিস ব্যবহারকারীর ডেটা ফিরিয়ে দেবে।
user-details.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="GetUserDetailsRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="userId" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GetUserDetailsResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="email" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
স্টেপ ৩: XML Schema থেকে ক্লাস জেনারেশন
Spring Boot XSD ফাইল থেকে জাভা ক্লাস তৈরি করতে JAXB ব্যবহার করে। এটি করতে, মেভেন প্লাগইন ব্যবহার করা যেতে পারে।
মেভেন প্লাগইন কনফিগারেশন:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<executions>
<execution>
<goals>
<goal>xjc</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaDirectory>${project.basedir}/src/main/resources</schemaDirectory>
<outputDirectory>${project.basedir}/src/main/java</outputDirectory>
</configuration>
</plugin>
স্টেপ ৪: SOAP Endpoint তৈরি করা
UserDetailsEndpoint ক্লাস:
@Endpoint
public class UserDetailsEndpoint {
private static final String NAMESPACE_URI = "http://example.com/users";
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "GetUserDetailsRequest")
@ResponsePayload
public GetUserDetailsResponse getUserDetails(@RequestPayload GetUserDetailsRequest request) {
GetUserDetailsResponse response = new GetUserDetailsResponse();
response.setName("John Doe");
response.setEmail("john.doe@example.com");
return response;
}
}
স্টেপ ৫: ওয়েব সার্ভিস কনফিগারেশন
SOAP সার্ভিসকে ওয়েব অ্যাপ্লিকেশনের অংশ হিসেবে তৈরি করতে WebServiceConfig কনফিগারেশন ক্লাস ব্যবহার করা হয়।
@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 = "users")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema usersSchema) {
DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition();
wsdl11Definition.setPortTypeName("UserDetailsPort");
wsdl11Definition.setLocationUri("/ws");
wsdl11Definition.setTargetNamespace("http://example.com/users");
wsdl11Definition.setSchema(usersSchema);
return wsdl11Definition;
}
@Bean
public XsdSchema usersSchema() {
return new SimpleXsdSchema(new ClassPathResource("user-details.xsd"));
}
}
স্টেপ ৬: অ্যাপ্লিকেশন চালানো
Spring Boot অ্যাপ্লিকেশন চালাতে নিচের main ক্লাস তৈরি করুন।
@SpringBootApplication
public class SpringWebServiceApplication {
public static void main(String[] args) {
SpringApplication.run(SpringWebServiceApplication.class, args);
}
}
সারাংশ
Spring Boot দিয়ে Spring Web Service তৈরি করা SOAP সার্ভিস ডেভেলপমেন্টের একটি আধুনিক ও কার্যকর উপায়। এর মাধ্যমে দ্রুত একটি কার্যকরী ও স্ট্যান্ডার্ড ওয়েব সার্ভিস তৈরি করা যায়, যা বিভিন্ন প্ল্যাটফর্ম ও প্রযুক্তির সাথে সহজেই ইন্টিগ্রেট হতে পারে।
Read more