Spring Remoting by HTTP Invoker Example--reference
Spring provides its own implementation of remoting service known as HttpInvoker. It can be used for http request than RMI and works well across the firewall.
By the help of HttpInvokerServiceExporter and HttpInvokerProxyFactoryBean classes, we can implement the remoting service provided by Spring's Http Invokers.
Http Invoker and Other Remoting techniques
You can use many Remoting techniques, let's see which one can be best for you.
Http Invoker Vs RMI
RMI uses JRMP protocol whereas Http Invokes uses HTTP protocol. Since enterprise applications mostly use http protocol, it is the better to use HTTP Invoker. RMI also has some security issues than HTTP Invoker. HTTP Invoker works well across firewalls.
Http Invoker Vs Hessian and Burlap
HTTP Invoker is the part of Spring framework but Hessian and burlap are proprietary. All works well across firewall. Hessian and Burlap are portable to integrate with other languages such as .Net and PHP but HTTP Invoker cannot be.
Example of Spring HTTP Invoker
To create a simple spring's HTTP invoker application, you need to create following files.
- Calculation.java
- CalculationImpl.java
- web.xml
- httpInvoker-servlet.xml
- client-beans.xml
- Client.java
1) Calculation.java
It is the simple interface containing one method cube.
- package com.javatpoint;
- public interface Calculation {
- int cube(int number);
- }
2) CalculationImpl.java
This class provides the implementation of Calculation interface.
- package com.javatpoint;
- public class CalculationImpl implements Calculation{
- public int cube(int number) {
- return number*number*number;
- }
- }
3) web.xml
In this xml file, we are defining DispatcherServlet as the front controller. If any request is followed by .http extension, it will be forwarded to DispatcherServlet.
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.5"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <servlet>
- <servlet-name>httpInvoker</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>httpInvoker</servlet-name>
- <url-pattern>*.http</url-pattern>
- </servlet-mapping>
- </web-app>
4) httpInvoker-servlet.xml
It must be created inside the WEB-INF folder. Its name must be servletname-servlet.xml. It defines bean forCalculationImpl and HttpInvokerServiceExporter.
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <bean id="calculationBean" class="com.javatpoint.CalculationImpl"></bean>
- <bean name="/Calculation.http"
- class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
- <property name="service" ref="calculationBean"></property>
- <property name="serviceInterface" value="com.javatpoint.Calculation"></property>
- </bean>
- </beans>
5) client-beans.xml
In this xml file, we are defining bean for HttpInvokerProxyFactoryBean. You need to define two properties of this class.
- serviceUrl
- serviceInterface
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd">
- <bean id="calculationBean"
- class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean">
- <property name="serviceUrl"
- value="http://localhost:8888/httpinvoker/Calculation.http"></property>
- <property name="serviceInterface" value="com.javatpoint.Calculation"></property>
- </bean>
- </beans>
6) Client.java
This class gets the instance of Calculation and calls the method.
- package com.javatpoint;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class Client {
- public static void main(String[] args){
- ApplicationContext context = new ClassPathXmlApplicationContext("client-beans.xml");
- Calculation calculation = (Calculation)context.getBean("calculationBean");
- System.out.println(calculation.cube(5));
- }
- }
Output
- Output: 125
How to run this example
Start and deploy the project, here we are assuming that server is running on 8888 port number. If the port number is different, change the serviceURL in client-beans.xml.
Then, Compile and Run the Client.java file.
Web-based Client
In the example given above, we used console based client. We can also use web based client. You need to create 3 additional files. Here, we are using following files:
- ClientInvoker.java
- index.jsp
- process.jsp
ClientInvoker.java
It defines only one method getCube() that returns cube of the given number
- package com.javatpoint;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class ClientInvoker {
- public static int getCube(int number){
- ApplicationContext context = new ClassPathXmlApplicationContext("client-beans.xml");
- Calculation calculation = (Calculation)context.getBean("calculationBean");
- return calculation.cube(number);
- }
- }
index.jsp
It creates a form to get number.
- <form action="process.jsp">
- Enter Number:<input type="text" name="number"/>
- <input type="submit" value="cube" />
- </form>
process.jsp
It creates a form to get number.
- <jsp:include page="index.jsp"></jsp:include>
- <hr/>
- <%@page import="com.javatpoint.ClientInvoker"%>
- <%
- int number=Integer.parseInt(request.getParameter("number"));
- out.print("cube of "+number+" is: "+ClientInvoker.getCube(number));
- %>
Output


reference from:http://www.javatpoint.com/spring-remoting-by-http-invoker-example
Spring Remoting by HTTP Invoker Example--reference的更多相关文章
- Spring Remoting: Remote Method Invocation (RMI)--转
原文地址:http://www.studytrails.com/frameworks/spring/spring-remoting-rmi.jsp Concept Overview Spring pr ...
- Spring Remoting: HTTP Invoker--转
原文地址:http://www.studytrails.com/frameworks/spring/spring-remoting-http-invoker.jsp Concept Overview ...
- Lingo (Spring Remoting) : Passing client credentials to the server
http://www.jroller.com/sjivan/entry/lingo_spring_remoting_passing_client Lingo (Spring Remoting) : P ...
- Spring Remoting: Burlap--转
原文地址:http://www.studytrails.com/frameworks/spring/spring-remoting-burlap.jsp Concept Overview In the ...
- Spring Remoting: Hessian--转
原文地址:http://www.studytrails.com/frameworks/spring/spring-remoting-hessian.jsp Concept Overview The p ...
- Asynchronous calls and remote callbacks using Lingo Spring Remoting
http://www.jroller.com/sjivan/entry/asynchronous_calls_and_callbacks_using Asynchronous calls and re ...
- Spring Framework 4.3.22.RELEASE Reference文档目录
<Spring Framework Reference Documentation 4.3.22.RELEASE> https://docs.spring.io/spring/docs/4 ...
- spring remoting源码分析--Hessian分析
1. Caucho 1.1 概况 spring-remoting代码的情况如下: 本节近分析caucho模块. 1.2 分类 其中以hession为例,Hessian远程服务调用过程: Hessian ...
- Spring Remoting: Hessian
随机推荐
- python文件处理
python中对文件处理需要涉及到os模块和shutil模块得到当前工作目录路径:os.getcwd()获取指定目录下的所有文件和目录名:os.listdir(dir)删除文件:os.remove(f ...
- MLlib 编程指导-spark-1.2.0
本文来自 http://spark.apache.org/docs/latest/mllib-guide.html 官方文档翻译 个人翻译 MLlib包括的算法和工具主要有:分类,回归,聚类,协同过滤 ...
- Swift互用性:采用Cocoa设计模式(Swift 2.0版)-b
本页包含内容: 委托(Delegation) 错误处理(Error Handling) 键值观察(Key-Value Observing) Target-Action模式(Target-Action) ...
- iOS的REST服务-备
REST式的服务最重要的三个特征就是**无状态性**(statelessness).**统一资源定位**(uniform resource identification)和**可缓存性**(cache ...
- cypress的EZ-USB对于USB的介绍
Host is MasterThis is a fundamental USB concept. There is exactly onemaster in a USB system: the hos ...
- IT的发展路径
1.掌握更多的技能 2.掌握某一门深入的技能 3.掌握更多的工具 4.掌握业务
- Period
uvalive3026:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&pag ...
- Xamarin.Forms WebView
目前本地或网络的网页内容和文件加载 WebView是在您的应用程序显示Web和HTML内容的视图.不像OpenUri,这需要用户在Web浏览器的设备上,WebView中显示您的应用程序内的HTML内容 ...
- BZOJ3709: [PA2014]Bohater
3709: [PA2014]Bohater Time Limit: 5 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 339 Solved: ...
- delphi 托盘程序 转
Delphi的托盘编程 .现在很多程序都用这个,比如傲游,迅雷等,主要代码如下: uses Windows, Messages, SysUtils, Variants, Classes, Grap ...