和其他Web服務的實現框架不同的是,Hessian是一個使用二進制Web服務協議的框架,它的好處在於免除了一大堆附加的API包,例如XML的處理之類的jar包,這也就是爲什麼說它是一個輕量級的Web服務實現框架的原因,這個原因還在於手機上的應用程序可以通過Hessian提供的API很方便的訪問Hessian的Web服務。
服務端
首先看web.xml中的配置(前提已導入Springmvc jar包)另外還需要一個(Hessian)jar包--hessian-4.0.37.jar(官網有下載)
<servlet>
<servlet-name>hessianServer</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/classes/WebSerivce-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>hessianServer</servlet-name>
<url-pattern>/api/service/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>hessianServer</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
創建接口類:
package hessian.inter;
public interface Service{
public String getname(String name);
}
服務接口實現:
package hessian.imp;
import hessian.inter.Serviceinter;
public class Myservice implements Service{
@Override
public String getname(String name) {
// TODO Auto-generated method stub
System.out.println("你調用了service端程序!");
return name;
}
}
在mvc配置文件中發佈service
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean id="myservice" class="hessian.imp.Myservice" />
<bean name="/mytestservice" class="org.springframework.remoting.caucho.HessianServiceExporter">
<property name="service" ref="myservice"/>
<property name="serviceInterface" value="hessian.inter.Service" />
</bean>
這樣服務就發佈成功 訪問服務的路徑是(http//:8080/項目名/imp/service/mytestservice)
客戶端調用
創建一個與對應服務相同方法的接口類(注意方法名要相同)
package hessian.client;
public interface Clientservice{
public String getname(String name);
}
在spring核心配置文件中配置bean
<bean id="Clientservice" class="org.springframework.remoting.caucho.HessianProxyFactoryBean">
<property name="serviceUrl" value="http://localhost:1527/HessianWebservice/api/service/mytestservice"/>
<property name="serviceInterface" value="hessian.client.service"/>
<property name="overloadEnabled" value="true" /> <!-- 支持方法重載 -->
</bean>
新建測試類
package hessian.client;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class testclient {
public static void main(String[] args) {
// TODO Auto-generated method stub
ApplicationContext context=new ClassPathXmlApplicationContext("SpringITschool-*.xml");
Clientservice service1=(Clientservice)context.getBean("Clientservice");
System.out.print(service1.getname("XXX"));
}
}
測試結果-------輸出 XXX