EJB (Enterprise JavaBeans) একটি শক্তিশালী Java EE (Enterprise Edition) প্রযুক্তি যা সার্ভার-সাইড অ্যাপ্লিকেশন ডেভেলপমেন্টে ব্যবহৃত হয়। EJB ব্যবহার করে আপনি SOAP এবং RESTful Web Services তৈরি করতে পারেন, যা আপনি remote communication এবং service-oriented architectures (SOA) এ ব্যবহার করতে পারবেন।
এখানে SOAP এবং RESTful Web Services এর জন্য EJB ব্যবহারের ধারণা, এর কনফিগারেশন এবং উদাহরণ নিয়ে আলোচনা করা হবে।
১. SOAP Web Services এবং EJB
SOAP (Simple Object Access Protocol) হল একটি প্রোটোকল যা XML-ভিত্তিক বার্তা আদান-প্রদান করে। এটি সাধারণত Web Services এর জন্য ব্যবহৃত হয়, যেখানে সার্ভার এবং ক্লায়েন্টের মধ্যে এক্সচেঞ্জ করা ডেটা XML ফরম্যাটে থাকে। EJB এর মাধ্যমে SOAP Web Services তৈরি করা যায়, যা JAX-WS (Java API for XML Web Services) ব্যবহার করে কার্যকরী হয়।
১.১ EJB ব্যবহার করে SOAP Web Service তৈরি
EJB ব্যবহার করে SOAP Web Service তৈরি করতে, আপনাকে JAX-WS API ব্যবহার করতে হবে, যা EJB কম্পোনেন্টকে SOAP Web Services হিসেবে এক্সপোজ করতে সক্ষম করে।
১.১.১ SOAP Web Service EJB ক্লাস তৈরি করা
import javax.ejb.Stateless;
import javax.jws.WebService;
@WebService
@Stateless
public class CalculatorService {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
}
এখানে, @WebService অ্যানোটেশনটি CalculatorService ক্লাসটিকে SOAP Web Service হিসেবে চিহ্নিত করছে। এটি Stateless EJB হিসেবে ডিফাইন করা হয়েছে, যার মানে এই Bean এর কোনও স্টেট নেই এবং এটি একাধিক ক্লায়েন্ট দ্বারা শেয়ার করা হবে।
১.১.২ Deployment Descriptor (web.xml এবং ejb-jar.xml)
web.xml এবং ejb-jar.xml ফাইলগুলোর মাধ্যমে SOAP Web Service এর ডিপ্লয়মেন্ট এবং কনফিগারেশন করা হয়।
ejb-jar.xml:
<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee ejb-jar_3_0.xsd" version="3.0">
<enterprise-beans>
<session>
<ejb-name>CalculatorService</ejb-name>
<ejb-class>com.example.CalculatorService</ejb-class>
<session-type>Stateless</session-type>
</session>
</enterprise-beans>
</ejb-jar>
web.xml:
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>CalculatorService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CalculatorService</servlet-name>
<url-pattern>/CalculatorService</url-pattern>
</servlet-mapping>
</web-app>
১.১.৩ SOAP Web Service Client Example
import javax.xml.namespace.QName;
import javax.xml.ws.Service;
import java.net.URL;
public class SOAPClient {
public static void main(String[] args) throws Exception {
URL url = new URL("http://localhost:8080/your-webapp/CalculatorService?wsdl");
QName qname = new QName("http://example.com/", "CalculatorService");
Service service = Service.create(url, qname);
CalculatorService calculator = service.getPort(CalculatorService.class);
System.out.println("Add result: " + calculator.add(10, 20));
System.out.println("Subtract result: " + calculator.subtract(30, 10));
}
}
এখানে, SOAPClient ক্লাসে CalculatorService Web Service এর WSDL ফাইলের মাধ্যমে SOAP মেসেজ পাঠানো এবং প্রাপ্ত করা হচ্ছে।
২. RESTful Web Services এবং EJB
RESTful Web Services হল HTTP প্রোটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা বিনিময়ের একটি পদ্ধতি। এটি JSON বা XML ফরম্যাটে ডেটা পাঠানো এবং গ্রহণ করা হয়। EJB ব্যবহার করে RESTful Web Services তৈরি করা যায়, যেখানে JAX-RS (Java API for RESTful Web Services) ব্যবহার করা হয়।
২.১ EJB ব্যবহার করে RESTful Web Service তৈরি
JAX-RS API ব্যবহার করে EJB ক্লাসকে RESTful Web Service হিসেবে এক্সপোজ করা যায়। এটি সাধারণত @Path অ্যানোটেশন ব্যবহার করে কনফিগার করা হয়।
২.১.১ RESTful Web Service EJB ক্লাস
import javax.ejb.Stateless;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
@Path("/calculator")
@Stateless
public class CalculatorService {
@GET
@Path("/add")
public int add(@QueryParam("a") int a, @QueryParam("b") int b) {
return a + b;
}
@GET
@Path("/subtract")
public int subtract(@QueryParam("a") int a, @QueryParam("b") int b) {
return a - b;
}
}
এখানে, @Path অ্যানোটেশন ব্যবহার করে CalculatorService ক্লাসটিকে একটি RESTful Web Service হিসেবে ডিফাইন করা হয়েছে। @QueryParam ব্যবহার করা হয়েছে HTTP GET পদ্ধতির মাধ্যমে URL থেকে প্যারামিটার গ্রহণ করতে।
২.১.২ Deployment Descriptor (web.xml)
web.xml এ RESTful Web Service ম্যাপিং করা হয়। এখানে JAX-RS Servlet কনফিগার করা হয় যাতে HTTP রিকোয়েস্টের ভিত্তিতে সঠিক RESTful মেথড কল করা হয়।
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<servlet>
<servlet-name>RestfulService</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>com.example</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>RestfulService</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
</web-app>
২.১.৩ RESTful Web Service Client Example
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.core.Response;
public class RESTClient {
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
Response response = client.target("http://localhost:8080/your-webapp/api/calculator/add")
.queryParam("a", 10)
.queryParam("b", 20)
.request()
.get();
System.out.println("Response: " + response.getEntity(String.class));
}
}
এখানে, RESTClient ক্লাসে CalculatorService RESTful Web Service এর /add এন্ডপয়েন্ট কল করা হয়েছে এবং ফলাফল পাওয়া গেছে।
৩. Eclipse তে SOAP এবং RESTful Web Services এর জন্য EJB কনফিগারেশন
Eclipse তে SOAP এবং RESTful Web Services ডেভেলপ করতে আপনাকে নিচের স্টেপগুলো অনুসরণ করতে হবে:
- EJB প্রকল্প তৈরি করা:
- File -> New -> Dynamic Web Project নির্বাচন করুন এবং EJB Module যোগ করুন।
- JAX-WS এবং JAX-RS প্লাগইন ইনস্টল করা:
- SOAP Web Services এর জন্য JAX-WS এবং RESTful Web Services এর জন্য JAX-RS প্লাগইন ইনস্টল করুন (Eclipse এর মাধ্যমে)। এটি সাধারণত Eclipse EE IDE তে ডিফল্টভাবে থাকে, তবে আপনি চাইলে প্লাগইন হিসেবে ইনস্টল করতে পারেন।
- EJB সার্ভার কনফিগারেশন:
- Eclipse এ EJB সার্ভারের জন্য Apache Tomcat, GlassFish, WildFly ইত্যাদি সার্ভার কনফিগার করুন এবং ডিপ্লয়মেন্টের জন্য প্রোজেক্টটি সার্ভারে রান করুন।
সারাংশ
Eclipse এ SOAP এবং RESTful Web Services তৈরি করতে EJB একটি শক্তিশালী সমাধান প্রদান করে। SOAP ওয়েব সার্ভিসের জন্য JAX-WS এবং RESTful Web Services এর জন্য JAX-RS ব্যবহৃত হয়। EJB কম্পোনেন্ট ব্যবহার করে আপনি সহজেই SOAP এবং RESTful Web Services তৈরি এবং ডিপ্লয় করতে পারেন। JAX-WS এবং JAX-RS এর মাধ্যমে SOAP এবং RESTful সার্ভিসে HTTP প্রোটোকলের মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা আদান-প্রদান সম্ভব হয়।
Read more