English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

معالجة Spring عن بُعد (مثال باستخدام Hessian)

بفضل HessianServiceExporter و HessianProxyFactoryBean باستخدام الفئة، يمكننا تحقيق خدمة عن بُعد تقدمها Hessian.

مزايا Hessian

يعمل Hessian بشكل جيد عبر جدار الحماية بأكمله. لديه قابلية التنقل، ويمكن دمجه مع لغات أخرى مثل PHP و .Net.

مثال على معالجة Hessian عن بُعد

يجب عليك إنشاء الملفات التالية لإنشاء تطبيق Hessian بسيط:

Calculation.java CalculationImpl.java web.xml hessian-servlet.xml client-beans.xml Client.java

1،Calculation.java

هذا هو interface بسيط يحتوي على طريقة multidimensional dataset.

package com.w3codebox;
public interface Calculation {
int cube(int number);
}

2،CalculationImpl.java

يقدم هذا الكائن Implementation لـ Calculation Interface.

package com.w3codebox;
public class CalculationImpl implements Calculation{
    public int cube(int number) {
        return number*number*number;
    }
}

3،web.xml

في هذا ملف xml، سنقوم بتعريف DispatcherServlet كمعالج واجهة المستخدم الأمامية. إذا كانت أي طلب تتبعه امتداد .http، سيتم توجيهها إلى DispatcherServlet.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    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_2_5.xsd">
  
    <servlet>
    <servlet-name>hessian</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>hessian</servlet-name>
    <url-pattern>*.http</url-pattern>
</servlet-mapping>
</web-app>

4،hessian-servlet.xml

يجب إنشاءها في مجلد WEB-INF. يجب أن تكون اسمها servletname-servlet.xml. إنها تقدم CalculationImpl و HessianServiceExporter تعريف

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd">
    
<bean id="calculationBean" class="com.w3codebox.CalculationImpl"></bean>
<bean name="/Calculation.http"}} 
class="org.springframework.remoting.caucho.HessianServiceExporter">
    <property name="service" ref="calculationBean"></property>
    <property name="serviceInterface" value="com.w3codebox.Calculation"></property>
</bean>
</beans>

5،client-beans.xml

في هذا ملف xml، نحن نعرف HessianProxyFactoryBean تم تعريف bean. تحتاج إلى تعريف خصائص هذا النوع.

serviceUrl serviceInterface

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans.xsd">
    
<bean id="calculationBean" 
class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
    <property name="serviceUrl" 
         value="http://localhost:8888/hessian/Calculation.http"></property>
    <property name="serviceInterface" value="com.w3codebox.Calculation"></property>
</bean>
</beans>

في هذا المثال، اسم مشروعنا هو hessian، وهو يستخدم كجذر سياق في serviceURL.


6،Client.java

يحصل هذا النوع على مثيل Calculation ويقوم بتمثيل طرق جداول البيانات المتعددة.

package com.w3codebox;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class Client {
 public static void main(String[] args){
  ApplicationContext context = new ClassPathXmlApplicationContext("client-beans.xml");
  Calculation calculation = (Calculation)context.getBean("calculationBean");
  System.out.println(calculation.cube(5));
 }
}

كيفية تشغيل هذا المثال

البدء في تشغيل وتوزيع المشروع، هنا نعتقد أن الخادم يعمل على ميناء 8888. إذا كان الميناء مختلفًا، قم بتغيير serviceURL في client-beans.xml.

ثم، قم بتجميع وتشغيل ملف Client.java.