日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

Spring Remoting: Remote Method Invocation (RMI)--转

發布時間:2025/4/5 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spring Remoting: Remote Method Invocation (RMI)--转 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://www.studytrails.com/frameworks/spring/spring-remoting-rmi.jsp

Concept Overview

Spring provides four ways to develop remote services. Remote services are services hosted on remote servers and accessed by clients over the network. For example, lets say you are developing a desktop application that needs to connect to a central server. The desktop application can be on various machines. you can use spring remoting to connect the clients on the desktop to the server. Web services developed using JAX-WS can also be developed and integrated using Spring. Here are the four remoting ways supported by spring-

  • RMI - Remote Method Invocation - Use RMI to invoke a remote method. The java objects are serialized
  • Hessian - Transfer binary data between the client and the server.
  • Burlap - Transfer XML data between the client and the server. It is the XML alternative to Hessian
  • JAX-WS - Java XML API for Web Services.
  • In this first tutorial we look at Spring remoting using RMI. This is how it works - Spring creates a proxy that represents the actual remote bean. The proxy is created using RmiProxyFactoryBean. The proxy can be used as a normal Spring bean and the client code does not need to know that it is actually calling a remote method. Lets look at the important classes :org.springframework.aop.framework.ProxyFactory.RmiProxyFactoryBean?- This class will be used by the client to create a proxy to connect to the remote service. This is a spring FactoryBean for creating RMI proxies. The proxied service is use a spring bean using the interface specified in the?ServiceInterface?property. The Remote service URL can be specified by the?serviceUrl?property.?org.springframework.remoting.rmi.RmiServiceExporter -?This class will be used by the server to create a remote service. The service can be accessed by plain RMI or spring proxy class created using RmiProxyFactoryBean as explain above. This class also supports exposing non-RMI services via RMI Invoker. Any Serializable java object can be transported between the client and the server.

    ?

    Sample Program Overview

    The sample program below develops a simple greeting service. The example demonstrates Spring remoting using RMI

    Required Libraries
    • aopalliance.jar
    • commons-logging.jar
    • log4j.jar
    • org.springframework.aop.jar
    • org.springframework.asm.jar
    • org.springframework.beans.jar
    • org.springframework.context.jar
    • org.springframework.context.support.jar
    • org.springframework.core.jar
    • org.springframework.expression.jar






    Interaction Flow


    • Client sends a message call
    • This message call is handled by an RMI Proxy created by RmiProxyFactoryBean
    • The RMI Proxy converts the call into a remote call over JRMP (Java Remote Method Protocol)
    • The RMI Service Adapter created by RmiServiceExporter intercepts the remote call over JRMP
    • It forwards the method call to Service




    RMI Server Code Package Structure




    RMI Server Source Code




    Create the GreetingService interface as shown below.?
    Create a method named getGreeting() that takes a name as a parameter and returns the greeting message (see line 5 below).

    GreetingService.java
    1 2 3 4 5 6 package com.studytrails.tutorials.springremotingrmiserver; public interface GreetingService { String getGreeting(String name); }




    Create a class GreetingServiceImpl as shown below.?
    It implements the GreetingService interface?(described earlier)?
    Implement the getGreeting() method by sending a greeting message (see lines 6-8 below).

    GreetingServiceImpl.java
    1 2 3 4 5 6 7 8 9 10 package com.studytrails.tutorials.springremotingrmiserver; public class GreetingServiceImpl?implements GreetingService{ @Override public String getGreeting(String name) { return "Hello " + name +?"!"; } }




    Create the StartRmiServer class as shown below.?
    It loads spring-config.xml?(described later)?(see line 10 below) .?
    Note that loading of spring-config.xml automatically starts the RMI server.

    StartRmiServer.java
    1 2 3 4 5 6 7 8 9 10 11 12 13 package com.studytrails.tutorials.springremotingrmiserver; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class StartRmiServer { public static void main(String[] args) { ApplicationContext context =?new ClassPathXmlApplicationContext("spring-config-server.xml"); System.out.println("Waiting for Request from Client ..."); } }




    Create the spring-config-server.xml file (see below).?

    Declare the 'greetingService' (see lines 13-14 below).?

    Export the 'greetingService' using Spring's?RmiServiceExporter?class (see lines 16-21 below).?
    Note the following properties of?RmiServiceExporter?class:

    • serviceName : refers the name of the server as used by the RMI Client?(described later)?(see line 17 below)
    • service: the service class bean which shall handle the RMI call (see line 18 below)
    • serviceInterface: The interface to be used by Spring to create proxies for RMI (see line 19 below)
    • registryPort: the default port on which the RMI service is exposed
    spring-config-server.xml
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="greetingService" class="com.studytrails.tutorials.springremotingrmiserver.GreetingServiceImpl" /> <bean class="org.springframework.remoting.rmi.RmiServiceExporter"> <property name="serviceName" value="greetingService" /> <property name="service" ref="greetingService" /> <property name="serviceInterface" value="com.studytrails.tutorials.springremotingrmiserver.GreetingService"/> <property name="registryPort" value="1099" /> </bean> </beans>





    RMI Client Code Package Structure







    RMI Client Source Code




    Create the GreetingService interface as shown below.?
    Copy the GreetingService interface created for RMI Server?(described above)?and paste it in RMI Client source code while retaining the java package structure.?

    Note: For reference, the source code is shown below.?

    GreetingService.java
    1 2 3 4 5 6 package com.studytrails.tutorials.springremotingrmiserver; public interface GreetingService { String getGreeting(String name); }






    Create a class TestSpringRemotingRmi shown below to test Spring RMI Remoting.?
    Load spring configuration file (see line 11 below)?
    Get a reference to GreetingService using the bean name 'greetingService' (see line 12 below)?
    Call the GreetingService.getGreting() method by passing the name 'Alpha' (see line 13 below)?
    Print the greeting message (see line 14 below).

    TestSpringRemotingRmi.java
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package com.studytrails.tutorials.springremotingrmiclient; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.studytrails.tutorials.springremotingrmiserver.GreetingService; public class TestSpringRemotingRmi { public static void main(String[] args) { ApplicationContext context =?new ClassPathXmlApplicationContext("spring-config-client.xml"); GreetingService greetingService = (GreetingService)context.getBean("greetingService"); String greetingMessage = greetingService.getGreeting("Alpha"); System.out.println("The greeting message is : " + greetingMessage); } }



    Create the spring-config-client.xml file (see below).?
    Declare the 'greetingService' using Spring's?RmiProxyFactoryBean?class (see lines 13-16 below).?
    Note the following properties of?RmiProxyFactoryBean?class:

    • serviceUrl : refers the URL of the remote service (see line 14 below).?
      Note URL part 'greetingService' corresponds to 'serviceName' property of RmiServiceExporter bean defined in spring-config-server.xml?(defined earlier)
    • serviceInterface: The interface to be used by Spring to create proxies for RMI (see line 15 below)

    ?

    spring-config-client.xml
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <bean id="greetingService" class="org.springframework.remoting.rmi.RmiProxyFactoryBean"> <property name="serviceUrl" value="rmi://localhost:1099/greetingService"/> <property name="serviceInterface" value="com.studytrails.tutorials.springremotingrmiserver.GreetingService"/> </bean> </beans>



    Running Sample Program





    RMI Server Sample Program

    This sample program has been packaged as a jar installer which will copy the source code (along with all necessary dependencies)on your machine and automatically run the program for you as shown in the steps below. To run the sampleprogram, you only need Java Runtime Environment (JRE) on your machine and nothing else.?

    Download And Automatically Run RMI Server Sample Program



    • Save the?springremotingrmiserver-installer.jar?on your machine
    • Execute/Run the jar using Java Runtime Environment


    (Alternatively you can go the folder containing the springremotingrmiserver-installer.jar and execute the jar using?java -jar springremotingrmiserver-installer.jar?command)?




    • You will see a wizard page as shown below



    • Enter the location of the directory where you want the program to install and run (say, C:\Temp)



    • The installer will copy the program on your machine and automatically execute it. The expected output indicating that the program has run successfully on your machine is shown in the image below.?
      This shows that the RMI Server program has run successfully on your machine








    RMI Client Sample Program

    This sample program has been packaged as a jar installer which will copy the source code (along with all necessary dependencies)on your machine and automatically run the program for you as shown in the steps below. To run the sampleprogram, you only need Java Runtime Environment (JRE) on your machine and nothing else.?

    Download And Automatically Run RMI Client Sample Program



    • Save the?springremotingrmiserver-installer.jar?on your machine
    • Execute/Run the jar using Java Runtime Environment


    (Alternatively you can go the folder containing the springremotingrmiserver-installer.jar and execute the jar using?java -jar springremotingrmiclient-installer.jar?command)?




    • You will see a wizard page as shown below



    • Enter the location of the directory where you want the program to install and run (say, C:\Temp)

    ?

    • The installer will copy the program on your machine and automatically execute it. The expected output indicating that the program has run successfully on your machine is shown in the image below.?
      This shows that the RMI Client program has run successfully on your machine






    Browsing the Program



    RMI Server Sample Code

    This source code for this program is downloaded in the folder specified by you (say, C:\Temp) as an eclipse project called?springremotingrmiserver?. All the required libraries have also been downloaded and placed in the same location. You can open this project from Eclipe IDE and directly browse the source code. See below for details of the project structure.

    RMI Client Sample Code

    This source code for this program is downloaded in the folder specified by you (say, C:\Temp) as an eclipse project called?springremotingrmiclient?. All the required libraries have also been downloaded and placed in the same location. You can open this project from Eclipe IDE and directly browse the source code. See below for details of the project structure.

    ?

    轉載于:https://www.cnblogs.com/davidwang456/p/5481497.html

    總結

    以上是生活随笔為你收集整理的Spring Remoting: Remote Method Invocation (RMI)--转的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。