Spring Web Services দিয়ে SOAP Web Service Client তৈরি করা সহজ এবং কার্যকর। ক্লায়েন্ট সার্ভার থেকে ডেটা রিকোয়েস্ট করে এবং সার্ভার থেকে SOAP রেসপন্স গ্রহণ করে। এখানে উদাহরণসহ Spring Web Services ব্যবহার করে একটি SOAP ক্লায়েন্ট তৈরি করার প্রক্রিয়া বর্ণনা করা হলো।
প্রাথমিক ধারণা
SOAP ক্লায়েন্ট তৈরি করতে প্রধানত নিচের ধাপগুলো অনুসরণ করা হয়:
- WSDL (Web Service Description Language) ফাইল ব্যবহার করে জাভা কোড জেনারেশন।
- SOAP ক্লায়েন্ট তৈরি করা।
- রিকোয়েস্ট পাঠানো এবং রেসপন্স গ্রহণ করা।
Maven ডিপেন্ডেন্সি
SOAP ক্লায়েন্ট তৈরি করতে প্রয়োজনীয় ডিপেন্ডেন্সি pom.xml ফাইলে যুক্ত করুন:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-spring-boot-starter-jaxws</artifactId>
<version>3.4.5</version>
</dependency>
JAXB কোড জেনারেশন
SOAP ক্লায়েন্ট WSDL ফাইল থেকে JAXB কোড জেনারেট করে। JAXB কোড জেনারেশনের জন্য maven-jaxb2-plugin ব্যবহার করুন।
pom.xml-এ JAXB প্লাগইন যুক্ত করুন:
<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>
<schemaLanguage>WSDL</schemaLanguage>
<generatePackage>com.example.client.generated</generatePackage>
<schemas>
<schema>
<url>src/main/resources/wsdl/greetings.wsdl</url>
</schema>
</schemas>
</configuration>
</plugin>
WSDL ফাইলটি src/main/resources/wsdl ফোল্ডারে রাখুন এবং Maven Build চালান। এটি জেনারেট করা JAXB ক্লাসগুলো com.example.client.generated প্যাকেজে তৈরি করবে।
SOAP ক্লায়েন্ট তৈরি
SOAP ক্লায়েন্ট তৈরি করার জন্য WebServiceTemplate ব্যবহার করুন। এটি Spring WS-এ সরাসরি SOAP মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
GreetingClient.java
@Component
public class GreetingClient {
private final WebServiceTemplate webServiceTemplate;
public GreetingClient(WebServiceTemplate webServiceTemplate) {
this.webServiceTemplate = webServiceTemplate;
}
public GetGreetingResponse getGreeting(String name) {
GetGreetingRequest request = new GetGreetingRequest();
request.setName(name);
GetGreetingResponse response = (GetGreetingResponse) webServiceTemplate
.marshalSendAndReceive("http://localhost:8080/ws", request);
return response;
}
}
উপরের কোডে:
WebServiceTemplate: SOAP মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।marshalSendAndReceive: SOAP রিকোয়েস্ট পাঠায় এবং রেসপন্স গ্রহণ করে।
কনফিগারেশন
SOAP ক্লায়েন্টের জন্য Spring Configuration ক্লাস তৈরি করুন।
ClientConfig.java
@Configuration
public class ClientConfig {
@Bean
public WebServiceTemplate webServiceTemplate(Jaxb2Marshaller marshaller) {
WebServiceTemplate template = new WebServiceTemplate();
template.setDefaultUri("http://localhost:8080/ws");
template.setMarshaller(marshaller);
template.setUnmarshaller(marshaller);
return template;
}
@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("com.example.client.generated");
return marshaller;
}
}
উপরের কনফিগারেশনে:
Jaxb2Marshaller: SOAP মেসেজ সিরিয়ালাইজ (Marshaller) এবং ডিসিরিয়ালাইজ (Unmarshaller) করার জন্য ব্যবহৃত হয়।WebServiceTemplate: মেসেজ পাঠানোর জন্য প্রয়োজনীয় টেমপ্লেট সরবরাহ করে।
SOAP ক্লায়েন্ট ব্যবহার
SOAP ক্লায়েন্ট ব্যবহার করার জন্য Spring Boot অ্যাপ্লিকেশন তৈরি করুন।
GreetingClientApp.java
@SpringBootApplication
public class GreetingClientApp implements CommandLineRunner {
private final GreetingClient greetingClient;
public GreetingClientApp(GreetingClient greetingClient) {
this.greetingClient = greetingClient;
}
public static void main(String[] args) {
SpringApplication.run(GreetingClientApp.class, args);
}
@Override
public void run(String... args) {
GetGreetingResponse response = greetingClient.getGreeting("John");
System.out.println("Response: " + response.getMessage());
}
}
SOAP রিকোয়েস্ট এবং রেসপন্স
SOAP রিকোয়েস্ট:
<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 রেসপন্স:
<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>
সারাংশ
Spring Web Services ব্যবহার করে SOAP ক্লায়েন্ট তৈরি করা সহজ এবং স্ট্রাকচারড। WebServiceTemplate এবং JAXB এর সাহায্যে SOAP রিকোয়েস্ট পাঠানো ও রেসপন্স গ্রহণ করা যায়। এটি এন্টারপ্রাইজ-গ্রেড ওয়েব সার্ভিস ইন্টিগ্রেশনের জন্য কার্যকর এবং নিরাপদ পদ্ধতি।
Read more