`

spring httpinvoke使用

 
阅读更多

 

1 实体,必须序列化

public class UcServiceEntity implements Serializable{   
    /**
	 *  @Fields serialVersionUID : TODO
	 */
	private static final long serialVersionUID = 1L;
	private String name; 
    private String age ;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAge() {
		return age;
	}
	public void setAge(String age) {
		this.age = age;
	} 
} 

 2 服务端与客户端的接口

  

package com.mainbo.u3.service;

import java.util.Map;

public interface UcService {   
    public String getUserInfobyName(String userName);   
    public int recordLog(String username, String point, String operate, String desc);   
    public Map getUserInfobyName(Map userMap);   
    public UcServiceEntity   getUserInfobyName(UcServiceEntity entity);   
}  

 3 服务端接口实现 

  

@Service("ucService")
public class UCServiceImpl implements UcService {   
	  
    private static Logger pointrecordlog = Logger.getLogger("pointrecordlog");   
  
    private static Logger logger = Logger.getLogger(UCServiceImpl.class);   
  
 
  
    public String getUserInfobyName(String userName) {   
        return userName+"12" ;   
    }   
  
    public int recordLog(String username, String point, String operate, String desc) {   
  
        int result = 0;   
        try {   
            pointrecordlog.info(username + " - " + point + " - " + operate + " - " + desc);   
        } catch (Throwable t) {   
            result = -1;   
            logger.error(t);   
        }   
        return result;   
  
    }

	@Override
	public Map getUserInfobyName(Map userMap) {
		System.out.println( userMap);
		Map map  = new HashMap();
		map.put("userName", "王战涛");
		return map;
	}

	
	@Override
	public UcServiceEntity getUserInfobyName(UcServiceEntity entity) {
		 System.out.println( entity.getName());
		 entity.setName("getUserInfobyName");
		return entity;
	}   
  
}  

 4 映射mapping ,在springmvc 的配置文件中*-servlet.xml中

 

	<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
	<bean  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
         <property name="mappings">  
            <props>  
                  <prop key="/httpService">httpService</prop>  
            </props>  
        </property>  
    </bean>  

 5 ApplicationContext.xml中配置HttpInvoker 

  

<bean id="httpService"  
        class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">  
        <property name="service">  
            <ref bean="ucService" />  
        </property>  
        <property name="serviceInterface"  
            value=" com.mainbo.u3.service.UcService">  
        </property>  
    </bean>  

 6 web.xml中暴漏接口 

 

    <servlet>
        <servlet-name>u3</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>3</load-on-startup>
    </servlet>
	
<servlet-mapping>  
        <servlet-name>u3</servlet-name>  
        <url-pattern>/service/*</url-pattern>  
</servlet-mapping>  

 7 客户端配置ApplicationContext.xml ,暴漏访问url

  

	<bean id="httpService" 
	    class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> 
	    <property name="serviceUrl" value="http://localhost:80/service/httpService" /> 
	    <property name="serviceInterface" value=" com.mainbo.u3.service.UcService" /> 
	</bean>

 

8 主函数进行测试

 

	public static void main(String[] args) {
		
 
		
        ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
                new String[] {"u3-core.xml" });
    
        UcService us = (UcService)ctx.getBean("httpService");
         String userName = us.getUserInfobyName("111111");
         System.out.println( userName );
         
 	Map map  = new HashMap();
 	map.put("userName", "王涛1");
        Map mapUser =  us.getUserInfobyName(map );
        System.out.println(mapUser.get("userName") );
        
        UcServiceEntity entity = new UcServiceEntity(); 
        entity.setName("传递实体");
        UcServiceEntity entity2 = us.getUserInfobyName(entity);
        System.out.println(entity2 );
        
		
	}

 

 

分享到:
评论

相关推荐

    Spring HttpInvoke实现,以及效率提升!

    1. **数据序列化与反序列化**:默认情况下,Spring HttpInvoke 使用 Java 对象序列化进行数据交换,这可能会成为性能瓶颈。为了提升效率,可以考虑使用更高效的序列化框架,如 Protobuf 或 JSON 格式(如 Jackson 或...

    Spring 实现远程访问详解——httpinvoker

    上文我们利用Spring rmi实现了Spring的远程访问(Spring 实现远程访问详解——rmi),本文主要讲解利用HttpInvoke实现远程访问。 Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和...

    springmvc+httpInvoke远程调用例子(1)

    采用了httpInvoke远程调用技术,为了简单只用了jsp-&gt;controller-&gt;dao分层。。其中的jsp controller 放在_web工程中,业务逻辑放在_svc中,分开下载,如果觉得没有,就可以不用下载另外一个工程了,持久层用mybatis,...

    SpringMvc简单入门

    上述配置中,`httpInvoke-dispatcher` 表示 Servlet 的名称,`org.springframework.web.servlet.DispatcherServlet` 是 `DispatcherServlet` 的全限定类名,`*.service` 表示任何以 `.service` 结尾的 URL 都将由 `...

    httpinvoker的使用实例

    这个实例中的`httpinvoke`目录可能包含服务端和客户端的源代码、配置文件以及运行脚本。通过分析和运行这些代码,你可以更深入地理解HTTPInvoker的工作原理和使用方式。同时,学习这个实例也能帮助你掌握Spring框架...

    Dubbo面试及答案(上).pdf

    4. **http协议**:基于Http表单提交,使用Spring的HttpInvoke实现,适用于提供者数量多于消费者的场景,适合应用程序和浏览器JS调用。 5. **hessian协议**:集成了Hessian服务,基于HTTP通讯,使用Servlet暴露服务...

    Dubbo 19道面试题及答案.docx

    - **HTTP协议**:使用Spring的Httpinvoke实现,适合JS调用或给Web应用使用。 - **Hessian协议**:基于HTTP通讯,提供与Hessian服务的互操作,适合中等大小的数据传输。 - **Memcache和Redis协议**:基于这两个数据库...

    Dubbo服务框架面试题及答案.pdf

    - 使用Spring的HttpInvoke实现,适合提供者数量多于消费者的场景,尤其是需要为应用程序和浏览器JS调用的情况。基于HTTP的短连接传输。 5. **Hessian协议**: - 基于HTTP通讯,使用Servlet暴露服务,Dubbo内嵌...

    Java Dubbo面试及答案

    4. HTTP 协议:基于 Http 表单提交的远程调用协议,使用 Spring 的 HttpInvoke 实现。多个短连接,传输协议 HTTP,传入参数大小混合,提供者个数多于消费者,需要给应用程序和浏览器 JS 调用。 5. Hessian 协议:...

    JAVA面试_Dubbo常问面试题30个.pdf

    - 基于Http表单提交,使用Spring的HttpInvoke实现。 - 多个短连接,通过HTTP传输,适用于提供者多于消费者的场景,如Web应用和JavaScript调用。 5. **hessian协议**: - 集成了Hessian服务,基于HTTP通讯,使用...

    Dubbo面试.pdf

    4. http协议:使用基于Http表单提交的远程调用协议,通过Spring的HttpInvoke实现。它支持HTTP协议,适用于提供者数量多于消费者,需要支持应用程序和浏览器JS调用的场景。 5. hessian协议:基于Hessian服务,采用...

    2021Java字节跳动面试题——面向字节_Dubbo(上).pdf

    - **特点**:基于Http表单提交的远程调用协议,使用Spring的HttpInvoke实现。 - **传输协议**:HTTP - **应用场景**:适用于需要给应用程序和浏览器JS调用的场景。 - **优点**:易于理解和使用。 - **缺点**:性能...

    java8集合源码分析-common-mistakes:常见错误

    使用了并发工具类库,线程安全就高枕无忧了吗?:concurrenttool 代码加锁:不要让“锁”事成为烦心事:lock 线程池:业务代码最常用也最容易犯错的组件:threadpool HTTP调用:你考虑到超时、重试、并发了吗?:...

    Dubbo面试题集合.pdf

    - **特点**:基于HTTP表单提交的远程调用协议,使用Spring的HttpInvoke实现。 - **应用场景**:适用于需要给应用程序和浏览器JS调用的场景。 - **优点**:简单易用,易于调试。 - **缺点**:性能不是最优,安全性...

Global site tag (gtag.js) - Google Analytics