有几个主要步骤:
接口类与实现类省略:
接口:com.base.HttpinvokeInterface.java 接口方法:test()
实现类:com.impl.HttpinvokeService
1.Server端web.xml配置信息:
a:一种DispatcherServlet方式,需要在servlet-name配置的spring.xml文件名必须和该名称一致
<servlet>
<servlet-name>httpinvoke(名称必须与配置横杠前面文件名一样如:httpinvoke-servlet.xml,配置与web.xml在同一个目录)</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>httpinvoke</servlet-name>
<url-pattern>/ httpinvoke/*(调用定义接口地址入口)</url-pattern>
</servlet-mapping>
b:另外一种HttpRequestHandlerServlet方式,无需保持spring配置文件名和当前参数一致。确保servlet-name中和spring的bean name一致
<servlet>
<servlet-name>serviceBeanName</servlet-name>
<servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>serviceBeanName</servlet-name>
<url-pattern>/ httpinvoke/serviceBeanName</url-pattern>
</servlet-mapping>
2.Server端Spring配置 httpinvoke-servlet.xml(1.a的配置对应的文件名,1.b 文件名无限制):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean name="/httpinvokeService" //1.a方式配置
<bean name="serviceBeanName" //1.b方式配置
class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service">
<ref bean=" httpinvokeService"/>
</property>
<property name="serviceInterface">
<value>com.base.HttpinvokeInterface</value>
</property>
</bean>
<baan id="httpinvokeService" class="com.impl.HttpinvokeService">
</beans>
3.Client端Spring配置:
<?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="httpinvokeService"
class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
<property name="serviceUrl" value="http://localhost:9111/CMS/ httpinvoke/ httpinvokeServiceService" />
<!-- 服务器IP地址:端口号/项目名称/(Server端web.xml中配置的<url-pattern>入口)/(服务器端配置的bean的name属性<bean name="/httpinvokeService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">......</bean>)-->
<property name="serviceInterface" value="com.base. HttpinvokeInterface"/>
</bean>
</beans>
4.Client端测试:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.base.HttpinvokeInterface
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring远程调用客户端配置.xml"); //读取配置文件
HttpinvokeInterface service = (HttpinvokeInterface)applicationContext.getBean("httpinvokeService"); //通过接口得到服务器信息
service.test(); //调用服务器端的方法
System.out.println("远程调用,测试成功!");
}
}
相关推荐
Spring HttpInvoke 是一个基于 Spring 框架的远程方法调用(RPC)解决方案,它允许你在分布式系统中透明地调用服务。这篇博客主要探讨了如何实现 Spring HttpInvoke 并提出了提高其效率的方法。 首先,我们需要理解...
上文我们利用Spring rmi实现了Spring的远程访问(Spring 实现远程访问详解——rmi),本文主要讲解利用HttpInvoke实现远程访问。 Spring httpInvoker使用标准java序列化机制,通过Http暴露业务服务。如果你的参数和...
然后,实现这个接口,并通过`@Service`注解标记为Spring Bean: ```java @Service public class HelloServiceImpl implements HelloService { @Override public String sayHello(String name) { return "Hello, ...
上述配置中,`httpInvoke-dispatcher` 表示 Servlet 的名称,`org.springframework.web.servlet.DispatcherServlet` 是 `DispatcherServlet` 的全限定类名,`*.service` 表示任何以 `.service` 结尾的 URL 都将由 `...
4. HTTP 协议:基于 Http 表单提交的远程调用协议,使用 Spring 的 HttpInvoke 实现。多个短连接,传输协议 HTTP,传入参数大小混合,提供者个数多于消费者,需要给应用程序和浏览器 JS 调用。 5. Hessian 协议:...
4. **http协议**:基于Http表单提交,使用Spring的HttpInvoke实现,适用于提供者数量多于消费者的场景,适合应用程序和浏览器JS调用。 5. **hessian协议**:集成了Hessian服务,基于HTTP通讯,使用Servlet暴露服务...
- 使用Spring的HttpInvoke实现,适合提供者数量多于消费者的场景,尤其是需要为应用程序和浏览器JS调用的情况。基于HTTP的短连接传输。 5. **Hessian协议**: - 基于HTTP通讯,使用Servlet暴露服务,Dubbo内嵌...
4. http协议:使用基于Http表单提交的远程调用协议,通过Spring的HttpInvoke实现。它支持HTTP协议,适用于提供者数量多于消费者,需要支持应用程序和浏览器JS调用的场景。 5. hessian协议:基于Hessian服务,采用...
- 基于Http表单提交,使用Spring的HttpInvoke实现。 - 多个短连接,通过HTTP传输,适用于提供者多于消费者的场景,如Web应用和JavaScript调用。 5. **hessian协议**: - 集成了Hessian服务,基于HTTP通讯,使用...
- **特点**:基于HTTP表单提交的远程调用协议,使用Spring的HttpInvoke实现。 - **应用场景**:适用于需要给应用程序和浏览器JS调用的场景。 - **优点**:简单易用,易于调试。 - **缺点**:性能不是最优,安全性...
- **特点**:基于Http表单提交的远程调用协议,使用Spring的HttpInvoke实现。 - **传输协议**:HTTP - **应用场景**:适用于需要给应用程序和浏览器JS调用的场景。 - **优点**:易于理解和使用。 - **缺点**:性能...