• SpringHttpInvoker解析1-使用示例


    HTTP invoker是一个新的远程调用模型,作为Spring框架的一部分,来执行基于HTTP的远程调用(让防火墙可以接受),并使用Java的序列化机制。

    服务端

    定义服务接口UserService

    import java.util.List;  
    import com.gosun.jws.daomain.Users;  
    public interface UserService {  
        public List<Users> geAlltUsers();  
        public Users getUser(String id);   
        public void save(Users user);   
        public void saves(List<Users> users);   
    }  

    服务接口实现类

    import java.util.List;  
    import com.gosun.jws.daomain.Users;  
    import com.gosun.jws.daomain.UsersFactory;   
    public class UserServiceImpl implements UserService {  
        @Override  
        public List<Users> geAlltUsers() {  
            return UsersFactory.getUsers();  
        }  
        @Override  
        public Users getUser(String id) {  
            System.out.println(id);  
            return UsersFactory.getUser();  
        }  
        @Override  
        public void save(Users user) {  
            System.out.println(user.toJson());  
        }  
        @Override  
        public void saves(List<Users> users) {  
            for (Users u : users) {  
                System.out.println(u.toJson());  
            }  
        }  
    }  

    配置Spring的HttpInvokerServiceExporter和SimpleUrlHandlerMapping

    <!-- 在Spring的httpInvoker服务 -->  
    <bean id="httpInvokerUserService"  
        class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">  
        <!--需要发布的实现类 -->  
        <property name="service" ref="userServiceHttpInvoker" />  
        <property name="serviceInterface" value="com.gosun.jws.httpinvoker.UserService" />  
    </bean>  
    <!-- 将特定的请求映射到具体的hessianservice -->  
    <bean id="urlMapping1"  
        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
        <property name="mappings">  
            <props>  
                <prop key="/httpInvokerUserService.service">httpInvokerUserService</prop>  
            </props>  
        </property>  
    </bean>  
    <bean id="userServiceHttpInvoker" class="com.gosun.jws.httpinvoker.UserServiceImpl" />  

    配置DispatcherServlet控制器

    <servlet>  
      <servlet-name>dispatcherServlet</servlet-name>  
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
      <init-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath:applicationContext-httpinvoker.xml</param-value>  
      </init-param>  
    </servlet>  
    <servlet-mapping>  
      <servlet-name>dispatcherServlet</servlet-name>  
      <url-pattern>*.service</url-pattern>  
    </servlet-mapping>  

    客户端

    配置Spring的HttpInvokerProxyFactoryBean

    <bean id="httpInvokerUserService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">  
      <property name="serviceUrl" value="http://localhost:8080/jws/httpInvokerUserService.service"/>  
      <property name="serviceInterface" value="com.gosun.jws.httpinvoker.UserService" />  
    </bean> 

    测试代码

    import java.util.List;  
    import org.springframework.context.ApplicationContext;  
    import org.springframework.context.support.ClassPathXmlApplicationContext;  
    import com.gosun.jws.daomain.Users;  
      
    public class ClientDemo {  
        public static void main(String[] args) {  
            ApplicationContext ac = new ClassPathXmlApplicationContext("client-application/applicationContext-httpInvoker.xml");  
            UserService us = (UserService) ac.getBean("httpInvokerUserService");  
            Users user = us.getUser("a001");  
            System.out.println(user.toJson());  
            System.out.println("----------------------------------------");  
            List<Users> users = us.geAlltUsers();  
            for (Users u : users) {  
                System.out.println(u.toJson());  
            }  
            System.out.println("----------------------------------------");  
            us.save(user);  
            System.out.println("----------------------------------------");  
            us.saves(users);  
        }  
  • 相关阅读:
    varnish缓存清理
    How to change default root@ email address linux / postfix / centos?
    crontab每小时运行一次
    awk 统计文件中按照某列统计某列的和(sum)
    Linux下查看压缩文件内容的 10 种方法
    python 脚本定时删除 elk索引
    python 如何让字符串的不具有转义的反斜杠具有转义功能
    Linux安装redis和部署
    redis requires Ruby version >= 2.2.2问题
    Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案
  • 原文地址:https://www.cnblogs.com/wade-luffy/p/6088505.html
Copyright © 2020-2023  润新知