HttpInvoker远程服务调用DEMO

本文详细介绍了如何使用Spring的HttpInvoker实现远程服务调用。首先展示了服务端的配置,包括需要的jar包、服务类和XML配置。接着,介绍了客户端的配置,包括同样需要的jar包、客户端接口、测试类以及XML配置。通过实例演示了服务端和客户端的运行流程,并提供了源码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、服务端

需要的jar包:

spring.jar、spring-webmvc.jar、commons-logging-1.1.1.jar

新建java web工程  包结构如图1-1-2

Person类

public class Person implements Serializable{
    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;
    }
}
FirstDemoService类

public interface FirstDemoService {
    public String getString(String msg);
 
    public Person getInfo();
}

FirstDemoServerImpl类
public class FirstDemoServerImpl implements FirstDemoService {
 
    public String getString(String msg) {
         String str = "正在请求调用...远程服务调用成功! " + msg;
         return str;    
    }
 
    public Person getInfo()
    {
        Person stu=new Person();
        stu.setAge("23");
        stu.setName("Tom");
        return stu;
    }
 
}
remote-servlet.xml 在WEB-INF下创建名称为remote-servlet的xml文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <!-- 通过Spring HttpInvoker机制暴露远程访问服务 -->
    <bean id="rmiService" class="com.leonard.httpinvoker.FirstDemoServerImpl" />
    <bean name="/remoteService"
        class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
        <property name="service" ref="rmiService" />
        <property name="serviceInterface" value="com.leonard.httpinvoker.FirstDemoService" />
    </bean>
</beans>

在web.xml里配置spring httpinvoker
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/FirstDemo-server.xml</param-value>
    </context-param>
    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>remote</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置该Servlet随应用启动时候启动 -->
        <load-on-startup>1</load-on-startup>
    </servlet>
 
    <!-- 配置DispatcherServlet映射的url -->
    <servlet-mapping>
        <servlet-name>remote</servlet-name>
        <url-pattern>/remoting/*</url-pattern>
    </servlet-mapping>


二、客户端

需要的jar包:

spring.jar、commons-logging-1.1.1.jar

Person类

新建java工程

public class Person implements Serializable{
    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;
    }
}

FirstDemoService类
public interface FirstDemoService {
    public String getString(String msg);
 
    public Person getInfo();
}

TestFirstDemo客户端测试类
public class TestFirstDemo {
   public static void main(String[] args) {
       ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
                "firstdemo.xml");
 
       FirstDemoService service = (FirstDemoService) applicationContext.getBean("remoteService");
        System.out.println("---------------返回字符串-----------------");
        System.out.println(service.getString("Httpinvoker,start.....!"));
        System.out.println("\n---------------返回自定义对象-----------------");
        Person stu=service.getInfo();
        System.out.println("姓名:"+stu.getName()+";年龄:"+stu.getAge());
}
}
在客户端工程中创建firstdemo.xml(名字可以自定义)

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
    "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
    <bean id="httpInvokerRequestExecutor" class="org.springframework.remoting.httpinvoker.SimpleHttpInvokerRequestExecutor" />
    <bean id="remoteService"
        class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
        <property name="serviceUrl" value="http://localhost:8080/HttpInVokerServer/remoting/remoteService" />
        <property name="serviceInterface"     value="com.leonard.httpinvoker.FirstDemoService" />
        <property name="httpInvokerRequestExecutor" ref="httpInvokerRequestExecutor" />
    </bean>
</beans>
 
 
 


先运行服务端然后运行客户端中TestFirstDemo类

结果:

  

 

      源码下载:https://github.com/zhaoyuan1209/HttpInvokerDEMO.git

jar都在HTTPInvokerServer中,两个项目都用这些jar包即可

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值