📜  HttpInvoker示例实现Spring Remoting教程

📅  最后修改于: 2020-12-04 08:50:58             🧑  作者: Mango

通过HTTP Invoker进行Spring Remoting示例

Spring提供了自己的远程服务实现HttpInvoker 。它可以用于HTTP请求而不是RMI,并且可以在整个防火墙中正常工作。

借助于HttpInvokerServiceExporterHttpInvokerProxyFactoryBean类,我们可以实现Spring的Http Invokers提供的远程服务。

Http调用程序和其他远程处理技术

您可以使用多种Remoting技术,让我们看看哪一种最适合您。

Http调用程序与RMI

RMI使用JRMP协议,而Http Invokes使用HTTP协议。由于企业应用程序大多使用http协议,因此最好使用HTTP Invoker。与HTTP Invoker相比,RMI还存在一些安全问题。 HTTP Invoker在防火墙之间可以很好地工作。

Http调用程序与黑森州和粗麻布

HTTP Invoker是Spring框架的一部分,但Hessian和麻布是专有的。一切都可以跨防火墙正常工作。 Hessian和Burlap可移植以与.Net和PHP等其他语言集成,但HTTP Invoker无法。

Spring HTTP调用程序示例

要创建一个简单的spring的HTTP调用程序应用程序,您需要创建以下文件。

  • Calculation.java
  • CalculationImpl.java
  • web.xml
  • httpInvoker-servlet.xml
  • client-beans.xml
  • 客户端.java

它是包含一个方法多维数据集的简单接口。

package com.javatpoint;
public interface Calculation {
int cube(int number);
}

此类提供了Calculation接口的实现。

package com.javatpoint;
public class CalculationImpl implements Calculation{
    public int cube(int number) {
        return number*number*number;
    }
}

在此xml文件中,我们将DispatcherServlet定义为前端控制器。如果任何请求后跟.http扩展名,它将被转发到DispatcherServlet。



  
    
    httpInvoker
    org.springframework.web.servlet.DispatcherServlet
    1



    httpInvoker
    *.http




它必须在WEB-INF文件夹中创建。它的名称必须是servletname-servlet.xml。它为CalculationImplHttpInvokerServiceExporter定义了bean。



    


    
    




在此xml文件中,我们为HttpInvokerProxyFactoryBean定义bean。您需要定义此类的两个属性。

  • serviceUrl
  • serviceInterface


    

    
    



此类获取Calculation的实例并调用该方法。

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));
 }
}

输出量

  1. Output: 125  

如何运行这个例子

启动并部署项目,这里我们假设服务器在8888端口号上运行。如果端口号不同,请更改client-beans.xml中的serviceURL。

然后,编译并运行Client.java文件。

基于Web的客户端

在上面给出的示例中,我们使用了基于控制台的客户端。我们也可以使用基于Web的客户端。您需要创建3个其他文件。在这里,我们使用以下文件:

  • ClientInvoker.java
  • index.jsp
  • process.jsp

它仅定义一种方法getCube(),该方法返回给定数字的多维数据集

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);
    }
}

它创建一个表格来获取数字。

Enter Number:

它创建一个表格来获取数字。



<%@page import="com.javatpoint.ClientInvoker"%> <% int number=Integer.parseInt(request.getParameter("number")); out.print("cube of "+number+" is: "+ClientInvoker.getCube(number)); %>

输出量