您的位置:首页 > 编程语言 > Java开发

Spring框架中整合Hessian开发WebService

2013-10-30 19:02 330 查看
和其他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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息