XSD (XML Schema Definition) ফাইল XML ডেটার স্ট্রাকচার নির্ধারণ এবং বৈধতা যাচাই করার জন্য ব্যবহৃত হয়। স্প্রিং ওয়েব সার্ভিসে XSD ফাইল একটি SOAP ওয়েব সার্ভিসের চুক্তি (Contract) তৈরি করতে ব্যবহৃত হয়। এই ফাইলটি ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা এক্সচেঞ্জের নিয়ম নির্ধারণ করে।
XSD ফাইল কীভাবে কাজ করে?
- ডেটার স্ট্রাকচার নির্ধারণ: XSD ফাইল XML ডেটার উপাদানসমূহ (Elements), অ্যাট্রিবিউটস (Attributes) এবং তাদের টাইপ নির্ধারণ করে।
- SOAP মেসেজ যাচাই: সার্ভার SOAP অনুরোধ এবং প্রতিক্রিয়া যাচাই করার জন্য XSD ফাইল ব্যবহার করে।
- কন্ট্রাক্ট-ফার্স্ট পদ্ধতি: স্প্রিং ওয়েব সার্ভিসে প্রথমে XSD ফাইল তৈরি করা হয় এবং তারপর সেই অনুযায়ী SOAP ওয়েব সার্ভিসের লজিক তৈরি করা হয়।
XSD ফাইল তৈরি
নিচে একটি XSD ফাইলের উদাহরণ দেওয়া হলো, যেখানে একটি ক্যালকুলেটর পরিষেবার জন্য "AddRequest" এবং "AddResponse" ডেটা স্ট্রাকচার সংজ্ঞায়িত করা হয়েছে।
calculator.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://example.com/calculator"
xmlns="http://example.com/calculator" elementFormDefault="qualified">
<xs:element name="AddRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="number1" type="xs:int"/>
<xs:element name="number2" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="AddResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="result" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
এই XSD ফাইলটি দুটি উপাদান সংজ্ঞায়িত করে:
- AddRequest: দুটি সংখ্যা (
number1এবংnumber2) ধারণ করে। - AddResponse: একটি ফলাফল (
result) প্রদান করে।
স্প্রিং ওয়েব সার্ভিসে XSD ব্যবহার
১. Maven ডিপেনডেন্সি যোগ করা
আপনার প্রজেক্টে Spring WS ব্যবহার করতে নিচের Maven ডিপেনডেন্সি যোগ করুন:
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
<version>YOUR_VERSION</version>
</dependency>
২. XSD ফাইল রেজিস্টার করা
Spring Configuration ক্লাসে XSD ফাইলটি রেজিস্টার করতে হবে।
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
public XsdSchema calculatorSchema() {
return new SimpleXsdSchema(new ClassPathResource("calculator.xsd"));
}
}
৩. WSDL জেনারেট করা
WSDL ফাইল স্বয়ংক্রিয়ভাবে জেনারেট করতে একটি Bean সংজ্ঞায়িত করতে হবে।
CalculatorWsdlConfig.java
@Bean(name = "calculator")
public DefaultWsdl11Definition defaultWsdl11Definition(XsdSchema calculatorSchema) {
DefaultWsdl11Definition definition = new DefaultWsdl11Definition();
definition.setPortTypeName("CalculatorPort");
definition.setTargetNamespace("http://example.com/calculator");
definition.setLocationUri("/ws");
definition.setSchema(calculatorSchema);
return definition;
}
SOAP মেসেজের উদাহরণ
SOAP অনুরোধ (Request):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cal="http://example.com/calculator">
<soapenv:Header/>
<soapenv:Body>
<cal:AddRequest>
<cal:number1>5</cal:number1>
<cal:number2>10</cal:number2>
</cal:AddRequest>
</soapenv:Body>
</soapenv:Envelope>
SOAP প্রতিক্রিয়া (Response):
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:cal="http://example.com/calculator">
<soapenv:Header/>
<soapenv:Body>
<cal:AddResponse>
<cal:result>15</cal:result>
</cal:AddResponse>
</soapenv:Body>
</soapenv:Envelope>
সারাংশ
XSD ফাইল স্প্রিং ওয়েব সার্ভিসে ডেটার গঠন এবং SOAP মেসেজের ভ্যালিডেশন নিশ্চিত করে। এটি একটি কন্ট্রাক্ট-ফার্স্ট পদ্ধতির ভিত্তি হিসেবে কাজ করে, যা সার্ভার এবং ক্লায়েন্ট উভয়ের জন্য নির্ভরযোগ্য যোগাযোগ নিশ্চিত করে।
Read more