和其他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