Spring Web Services ফ্রেমওয়ার্ক ব্যবহার করে SOAP এবং RESTful ওয়েব সার্ভিসের ক্লায়েন্ট তৈরি করা অত্যন্ত সহজ। ক্লায়েন্ট হল এমন একটি প্রোগ্রাম যা সার্ভিসে অনুরোধ (Request) পাঠায় এবং এর প্রতিক্রিয়া (Response) গ্রহণ করে। Spring RestTemplate এবং WebClient এর মতো টুল ব্যবহার করে RESTful ক্লায়েন্ট তৈরি করা হয়, এবং SOAP ক্লায়েন্ট তৈরি করতে Spring Web Services সরঞ্জামগুলি ব্যবহার করা হয়।
SOAP ওয়েব সার্ভিস ক্লায়েন্ট তৈরি
SOAP ক্লায়েন্ট তৈরি করতে Spring Web Services ফ্রেমওয়ার্ক একটি WebServiceTemplate সরবরাহ করে। এটি ইনকামিং এবং আউটগোইং SOAP বার্তার প্রক্রিয়াকরণকে সহজ করে।
SOAP ক্লায়েন্ট তৈরির ধাপ
ডিপেনডেন্সি যোগ করা
SOAP ক্লায়েন্ট তৈরির জন্য Maven বা Gradle-এ প্রয়োজনীয় ডিপেনডেন্সি যোগ করুন।
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>3.1.1</version>
</dependency>
কনফিগারেশন ক্লাস তৈরি করা
WebServiceTemplate কনফিগার করার জন্য একটি Bean তৈরি করুন।
@Configuration
public class SoapClientConfig {
@Bean
public WebServiceTemplate webServiceTemplate() {
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.setDefaultUri("http://example.com/ws");
return webServiceTemplate;
}
}
ক্লায়েন্ট ক্লাস তৈরি করা
SOAP সার্ভিসে অনুরোধ পাঠানোর জন্য একটি ক্লায়েন্ট ক্লাস তৈরি করুন।
@Component
public class SoapClient {
private final WebServiceTemplate webServiceTemplate;
public SoapClient(WebServiceTemplate webServiceTemplate) {
this.webServiceTemplate = webServiceTemplate;
}
public HelloResponse callSoapService(HelloRequest request) {
return (HelloResponse) webServiceTemplate.marshalSendAndReceive(request);
}
}
উদাহরণ SOAP রিকোয়েস্ট এবং রেসপন্স
HelloRequest:
<HelloRequest xmlns="http://example.com/hello">
<name>John</name>
</HelloRequest>
HelloResponse:
<HelloResponse xmlns="http://example.com/hello">
<message>Hello, John!</message>
</HelloResponse>
RESTful ওয়েব সার্ভিস ক্লায়েন্ট তৈরি
RESTful ওয়েব সার্ভিসের জন্য ক্লায়েন্ট তৈরি করতে Spring RestTemplate বা WebClient ব্যবহার করা যায়। RestTemplate ক্লাসটি Spring Framework-এ সরাসরি HTTP অনুরোধ পাঠানোর জন্য ব্যবহৃত হয়, এবং WebClient Spring WebFlux এর অংশ হিসেবে আরও আধুনিক বিকল্প।
RESTful ক্লায়েন্ট তৈরির ধাপ
ডিপেনডেন্সি যোগ করা
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
RestTemplate ব্যবহার করা
@Component
public class RestClient {
private final RestTemplate restTemplate;
public RestClient(RestTemplateBuilder builder) {
this.restTemplate = builder.build();
}
public String getDataFromRestService(String url) {
return restTemplate.getForObject(url, String.class);
}
public String postDataToRestService(String url, Object request) {
return restTemplate.postForObject(url, request, String.class);
}
}
WebClient ব্যবহার করা (Reactive Approach)
@Component
public class ReactiveRestClient {
private final WebClient webClient;
public ReactiveRestClient(WebClient.Builder builder) {
this.webClient = builder.baseUrl("http://example.com/api").build();
}
public Mono<String> getDataFromRestService(String endpoint) {
return webClient.get()
.uri(endpoint)
.retrieve()
.bodyToMono(String.class);
}
public Mono<String> postDataToRestService(String endpoint, Object request) {
return webClient.post()
.uri(endpoint)
.bodyValue(request)
.retrieve()
.bodyToMono(String.class);
}
}
উদাহরণ: RESTful রিকোয়েস্ট এবং রেসপন্স
GET রিকোয়েস্ট:
GET /api/users/1 HTTP/1.1
Host: example.com
GET রেসপন্স:
{
"id": 1,
"name": "John Doe",
"email": "john.doe@example.com"
}
POST রিকোয়েস্ট:
{
"name": "Jane Doe",
"email": "jane.doe@example.com"
}
POST রেসপন্স:
{
"id": 2,
"name": "Jane Doe",
"email": "jane.doe@example.com"
}
ক্লায়েন্ট তৈরি করার সুবিধা
- SOAP ও RESTful উভয়ের সমর্থন: Spring Web Services একটি ফ্রেমওয়ার্কে SOAP এবং RESTful উভয়ের ক্লায়েন্ট তৈরি করা সম্ভব।
- সহজ কনফিগারেশন: RestTemplate এবং WebServiceTemplate সহজ কনফিগারেশন সরবরাহ করে।
- স্কেলযোগ্যতা: বড় সিস্টেমের জন্য ক্লায়েন্ট দ্রুত এবং কার্যকর।
- Reactive Programming সমর্থন: WebClient এর মাধ্যমে উচ্চ কার্যক্ষমতা সম্পন্ন ক্লায়েন্ট তৈরি করা যায়।
স্প্রিং ওয়েব সার্ভিসেসে SOAP ওয়েব সার্ভিস ব্যবহারের জন্য একটি SOAP Client তৈরি করা প্রয়োজন। SOAP Client হলো একটি অ্যাপ্লিকেশন যা SOAP বার্তা তৈরি, পাঠানো, এবং সার্ভিস থেকে প্রাপ্ত বার্তা প্রক্রিয়া করতে সক্ষম। স্প্রিং ফ্রেমওয়ার্ক WebServiceTemplate ব্যবহার করে SOAP ক্লায়েন্ট তৈরি করা সহজ।
SOAP Client তৈরির ধাপ
WSDL ফাইল তৈরি করা বা সংগ্রহ করা
SOAP ওয়েব সার্ভিসের জন্য একটি WSDL (Web Service Description Language) ফাইল প্রয়োজন। WSDL ফাইল হলো একটি চুক্তি (Contract) যা সার্ভিসের এন্ডপয়েন্ট, অপারেশন এবং ডেটা টাইপ বর্ণনা করে।
JAXB ব্যবহার করে Java ক্লাস জেনারেট করা
SOAP মেসেজ তৈরি এবং প্রক্রিয়াকরণের জন্য WSDL ফাইল থেকে Java ক্লাস জেনারেট করতে JAXB বা wsimport টুল ব্যবহার করা হয়।
wsimport কমান্ডের উদাহরণ:
wsimport -keep -d src -p com.example.soapclient http://example.com/service.wsdl
উপরের কমান্ডটি WSDL ফাইল থেকে Java ক্লাস তৈরি করবে।
Spring SOAP Client এর জন্য প্রয়োজনীয় কনফিগারেশন
Maven নির্ভরতা যোগ করা
SOAP ক্লায়েন্ট তৈরি করতে spring-web-services এবং jaxb লাইব্রেরি যোগ করতে হবে।
<dependencies>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
</dependencies>
SOAP Client Config তৈরি করা
SOAP ক্লায়েন্টে WebServiceTemplate ব্যবহার করতে একটি কনফিগারেশন ক্লাস তৈরি করতে হবে।
@Configuration
public class SoapClientConfig {
@Bean
public WebServiceTemplate webServiceTemplate() {
WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
webServiceTemplate.setDefaultUri("http://example.com/service");
return webServiceTemplate;
}
}
SOAP Client ক্লাস তৈরি করা
SOAP ক্লায়েন্ট তৈরি করতে একটি ক্লাস তৈরি করুন, যেখানে WebServiceTemplate ব্যবহার করে SOAP বার্তা পাঠানো হবে।
@Component
public class SoapClient {
private final WebServiceTemplate webServiceTemplate;
@Autowired
public SoapClient(WebServiceTemplate webServiceTemplate) {
this.webServiceTemplate = webServiceTemplate;
}
public ResponseType callWebService(RequestType request) {
return (ResponseType) webServiceTemplate.marshalSendAndReceive(request);
}
}
উদাহরণের ব্যাখ্যা:
- marshalSendAndReceive: এটি SOAP বার্তা তৈরি, পাঠানো এবং উত্তর গ্রহণ করতে ব্যবহৃত হয়।
- RequestType এবং ResponseType: WSDL থেকে জেনারেট করা JAXB ক্লাস।
ক্লায়েন্ট কল করা
SOAP ক্লায়েন্ট ব্যবহার করে ওয়েব সার্ভিস কল করার জন্য নিচের কোড ব্যবহার করা যেতে পারে:
@SpringBootApplication
public class SoapClientApplication {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(SoapClientApplication.class, args);
SoapClient soapClient = context.getBean(SoapClient.class);
RequestType request = new RequestType();
request.setParameter("Sample Parameter");
ResponseType response = soapClient.callWebService(request);
System.out.println("Response: " + response.getMessage());
}
}
গুরুত্বপূর্ণ বিষয়সমূহ
- Endpoint URI নির্ধারণ করা
SOAP ক্লায়েন্টেরWebServiceTemplateএ সঠিক এন্ডপয়েন্ট URI প্রদান করতে হবে। - WSDL থেকে JAXB ক্লাস তৈরি
WSDL ফাইল থেকে সঠিক JAXB ক্লাস তৈরি নিশ্চিত করতে হবে। এতে কোনো ভুল থাকলে SOAP বার্তা পাঠানো বা গ্রহণে সমস্যা হতে পারে। - ব্যতিক্রম হ্যান্ডলিং
SOAP সার্ভিস কল করার সময় সম্ভাব্য ব্যতিক্রম (Exception) হ্যান্ডলিং করতে হবে। যেমনSOAPFaultException,IOExceptionইত্যাদি।
সারাংশ
SOAP ওয়েব সার্ভিসের জন্য Spring Framework ব্যবহার করে একটি শক্তিশালী এবং কার্যকর ক্লায়েন্ট তৈরি করা যায়। WebServiceTemplate এর সাহায্যে SOAP মেসেজ তৈরি, প্রেরণ এবং প্রাপ্তি সহজ এবং কার্যকর। এটি Spring-এর সিম্পল কনফিগারেশন সুবিধা ব্যবহার করে দ্রুত ডেভেলপমেন্ট নিশ্চিত করে।
WebServiceTemplate স্প্রিং ওয়েব সার্ভিসেসের একটি শক্তিশালী ক্লাস, যা SOAP ওয়েব সার্ভিসের ক্লায়েন্ট তৈরি করার জন্য ব্যবহৃত হয়। এটি সহজ এবং কার্যকর উপায়ে SOAP মেসেজ পাঠানো ও গ্রহণ করার সুবিধা প্রদান করে।
WebServiceTemplate এর বৈশিষ্ট্য
- SOAP মেসেজ পাঠানো ও গ্রহণ করা।
- Marshalling এবং Unmarshalling পরিচালনা করা (অর্থাৎ, অবজেক্টকে XML-এ রূপান্তর এবং XML-কে অবজেক্টে রূপান্তর)।
- Exception Handling সহজ এবং কার্যকর।
WebServiceTemplate সেটআপ
নির্ভরতা (Dependency) যোগ করা
SOAP ক্লায়েন্ট তৈরির জন্য স্প্রিং ওয়েব সার্ভিসের নির্ভরতা যোগ করুন:
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-oxm</artifactId>
<version>3.1.1</version>
</dependency>
WebServiceTemplate এর কনফিগারেশন
WebServiceTemplate Bean ডিফাইন করা
একটি কনফিগারেশন ক্লাসে WebServiceTemplate Bean ডিফাইন করুন।
@Configuration
public class WebServiceConfig {
@Bean
public WebServiceTemplate webServiceTemplate() {
WebServiceTemplate template = new WebServiceTemplate();
template.setDefaultUri("http://example.com/ws");
template.setMarshaller(marshaller());
template.setUnmarshaller(marshaller());
return template;
}
@Bean
public Jaxb2Marshaller marshaller() {
Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
marshaller.setContextPath("com.example.models");
return marshaller;
}
}
কোড ব্যাখ্যা:
- WebServiceTemplate: SOAP মেসেজ পাঠানোর জন্য সেটআপ করা হয়েছে।
- Default URI: SOAP সার্ভিসের ডিফল্ট URL নির্ধারণ করা হয়েছে।
- Marshaller এবং Unmarshaller: Jaxb2Marshaller ব্যবহার করে XML-অবজেক্ট রূপান্তর কনফিগার করা হয়েছে।
WebServiceTemplate ব্যবহার
SOAP রিকোয়েস্ট পাঠানো
নিচের উদাহরণে একটি SOAP রিকোয়েস্ট পাঠানোর প্রক্রিয়া দেখানো হয়েছে:
@Component
public class SoapClient {
private final WebServiceTemplate webServiceTemplate;
@Autowired
public SoapClient(WebServiceTemplate webServiceTemplate) {
this.webServiceTemplate = webServiceTemplate;
}
public GetUserResponse getUserDetails(String userId) {
GetUserRequest request = new GetUserRequest();
request.setUserId(userId);
GetUserResponse response = (GetUserResponse) webServiceTemplate.marshalSendAndReceive(request);
return response;
}
}
কোড ব্যাখ্যা:
- GetUserRequest: SOAP রিকোয়েস্ট অবজেক্ট তৈরি করা হয়েছে।
- marshalSendAndReceive: WebServiceTemplate ব্যবহার করে রিকোয়েস্ট পাঠানো ও রেসপন্স গ্রহণ করা হয়েছে।
- GetUserResponse: সার্ভার থেকে প্রাপ্ত রেসপন্স অবজেক্ট।
উদাহরণ SOAP রিকোয়েস্ট ও রেসপন্স
SOAP রিকোয়েস্ট
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<GetUserRequest xmlns="http://example.com/ws">
<UserId>12345</UserId>
</GetUserRequest>
</soap:Body>
</soap:Envelope>
SOAP রেসপন্স
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body>
<GetUserResponse xmlns="http://example.com/ws">
<UserId>12345</UserId>
<UserName>John Doe</UserName>
</GetUserResponse>
</soap:Body>
</soap:Envelope>
WebServiceTemplate এর সুবিধা
- সহজ API: SOAP মেসেজ পাঠানো এবং গ্রহণ করার জন্য সহজ পদ্ধতি।
- Marshaller এবং Unmarshaller ইন্টিগ্রেশন: XML এবং অবজেক্টের মধ্যে রূপান্তর সহজ।
- Error Handling: ত্রুটি শনাক্ত ও পরিচালনার জন্য বিল্ট-ইন সাপোর্ট।
সারাংশ
স্প্রিং ওয়েব সার্ভিসের WebServiceTemplate SOAP ক্লায়েন্ট তৈরি এবং মেসেজ প্রসেসিংকে সহজ করে তোলে। এটি ডিফল্ট URI, Marshaller এবং Unmarshaller ব্যবহার করে সহজ এবং কার্যকর উপায়ে SOAP মেসেজ পরিচালনা করার সুযোগ দেয়।
Spring Framework RESTful Web Service ব্যবহারের জন্য দুটি প্রধান ক্লায়েন্ট টুল সরবরাহ করে: RestTemplate এবং WebClient। এগুলো ক্লায়েন্ট সাইড থেকে HTTP রিকোয়েস্ট পাঠানো এবং রেসপন্স প্রক্রিয়াকরণে সহায়তা করে।
RestTemplate
RestTemplate হলো Spring Framework এর একটি সিনক্রোনাস HTTP ক্লায়েন্ট, যা সহজভাবে RESTful ওয়েব সার্ভিসে ইন্টারঅ্যাক্ট করার জন্য ব্যবহৃত হয়। এটি Spring 5 পর্যন্ত ব্যাপকভাবে ব্যবহৃত হয়, তবে Spring WebFlux চালু হওয়ার পর WebClient-কে RestTemplate-এর বিকল্প হিসেবে সুপারিশ করা হয়।
RestTemplate এর বৈশিষ্ট্য
- সাধারণ HTTP অপারেশন (GET, POST, PUT, DELETE)।
- JSON/XML রেসপন্স প্রসেসিং।
- সিনক্রোনাস ক্লায়েন্ট: রিকোয়েস্টের জন্য থ্রেড ব্লক করে।
RestTemplate ব্যবহার
Maven নির্ভরতা
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
RestTemplate এর উদাহরণ
import org.springframework.web.client.RestTemplate;
import org.springframework.http.ResponseEntity;
public class RestTemplateExample {
public static void main(String[] args) {
RestTemplate restTemplate = new RestTemplate();
String url = "https://jsonplaceholder.typicode.com/posts/1";
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
System.out.println("Response Status: " + response.getStatusCode());
System.out.println("Response Body: " + response.getBody());
}
}
HTTP POST রিকোয়েস্ট উদাহরণ
String url = "https://jsonplaceholder.typicode.com/posts";
Post post = new Post("Title", "Body", 1);
ResponseEntity<Post> response = restTemplate.postForEntity(url, post, Post.class);
System.out.println("Created Post: " + response.getBody());
WebClient
WebClient হলো Spring WebFlux এর একটি অংশ, যা অ্যাসিনক্রোনাস এবং নন-ব্লকিং HTTP ক্লায়েন্ট হিসেবে কাজ করে। এটি Spring 5 এ প্রবর্তিত হয়।
WebClient এর বৈশিষ্ট্য
- নন-ব্লকিং: অ্যাসিনক্রোনাস অপারেশন সম্পন্ন করে।
- স্ট্রিমিং সাপোর্ট: ডেটা স্ট্রিমিংয়ের জন্য উপযোগী।
- আধুনিক API ডিজাইন।
- RESTful এবং Reactive উভয় ওয়েব সার্ভিস সাপোর্ট।
WebClient ব্যবহার
Maven নির্ভরতা
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
WebClient এর উদাহরণ
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Mono;
public class WebClientExample {
public static void main(String[] args) {
WebClient webClient = WebClient.create();
String url = "https://jsonplaceholder.typicode.com/posts/1";
Mono<String> response = webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class);
response.subscribe(System.out::println);
}
}
HTTP POST রিকোয়েস্ট উদাহরণ
String url = "https://jsonplaceholder.typicode.com/posts";
Post post = new Post("Title", "Body", 1);
WebClient webClient = WebClient.create();
Mono<Post> response = webClient.post()
.uri(url)
.bodyValue(post)
.retrieve()
.bodyToMono(Post.class);
response.subscribe(System.out::println);
RestTemplate বনাম WebClient
| বৈশিষ্ট্য | RestTemplate | WebClient |
|---|---|---|
| প্রচলন | Spring 3.0 থেকে প্রবর্তিত। | Spring 5.0 থেকে প্রবর্তিত। |
| অপারেশন টাইপ | সিনক্রোনাস (ব্লকিং)। | অ্যাসিনক্রোনাস (নন-ব্লকিং)। |
| API ডিজাইন | তুলনামূলক সহজ। | আধুনিক এবং স্ট্রিমিং সাপোর্ট। |
| সাপোর্টেড আর্কিটেকচার | শুধুমাত্র Servlet-based। | Servlet-based এবং Reactive। |
| ভবিষ্যৎ পরিকল্পনা | Deprecated হওয়ার পথে। | Spring-এর ভবিষ্যৎকেন্দ্রিক ক্লায়েন্ট। |
কবে RestTemplate ব্যবহার করবেন?
- যদি আপনার অ্যাপ্লিকেশন শুধুমাত্র সিনক্রোনাস অপারেশন সমর্থন করে।
- যদি WebClient-এর অ্যাসিনক্রোনাস মডেলের প্রয়োজন না হয়।
কবে WebClient ব্যবহার করবেন?
- যদি আপনার অ্যাপ্লিকেশন নন-ব্লকিং এবং রিঅ্যাক্টিভ মডেল সমর্থন করে।
- যদি আপনি ডেটা স্ট্রিমিং ব্যবহার করতে চান।
- যদি ভবিষ্যৎ-প্রমাণ টেকনোলজি ব্যবহার করতে চান।
Spring Web Services-এ RESTful Web Service ব্যবহারের জন্য RestTemplate সহজ ও দ্রুত সমাধান প্রদান করে, তবে WebClient আধুনিক এবং দক্ষ সমাধান হিসেবে কার্যকর। প্রয়োজন ও আর্কিটেকচার অনুযায়ী সঠিক টুলটি নির্বাচন করুন।
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