Spring对远程服务的支持

  Java程序有以下的远程调用技术选择:

远程过程调用(RPC)是同步的,客户端在服务器端返回结果之前将一直被阻塞。

各种技术适用的场景如下:

  典型的RMI开发的过程如下:

  1. 定义一个接口,用于客户端和服务器端的交互,接口要继承Remote接口,所有方法都要抛出RemoteException。
  2. 编写服务器端的实现,实现第一步所编写的接口。
  3. 编写一个注册类,基于某个某个IP和端口(默认是1099)注册服务器端类的实现。
  4. 编写客户端的调用,基于IP,端口和注册的名称查找服务器端对应的类。
  5. RMI支持传递对象,要求对象实现Serializable接口。

  下面是Spring对RMI的支持,配置也很简单:

  一:服务器端

1. 要暴露的服务的接口:

package com.excellence.webservice;

import java.util.List;

public interface AccountService {
    public void insertAccount(Account account);
    public List getAccounts(String name);
}

  

  2. 实现了该接口的类:

package com.excellence.webservice;

import java.util.List;

public class AccountServiceImpl implements AccountService {

    public void insertAccount(Account account) {
        System.out.println("inser!");
    }

    public List getAccounts(String name) {
        System.out.println("get");
        return null;
    }
}

  

  3. 在配置文件中公布改接口为RMI

<bean id="accountService" class="com.excellence.webservice.AccountServiceImpl" />
<bean name="service" class="org.springframework.remoting.rmi.RmiServiceExporter">
    <property name="serviceName" value="AccountService" ></property>
    <property name="service" ref="accountService"></property>
    <property name="serviceInterface"          value="com.excellence.webservice.AccountService"></property>
    <property name="registryPort" value="1199"></property>
</bean>

  4. 运行该RMI:

public class Demo {

public static void main(String[] args) {
    ApplicationContext ctx = new FileSystemXmlApplicationContext ("classpath:applicationContext.xml");
    RmiServiceExporter obj = (RmiServiceExporter)ctx.getBean("service");
    }
}

  二、客户端

  1.在配置文件中进行配置:

<bean id="accClient" class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
    <property name="serviceUrl" value="rmi://localhost:1199/AccountService"></property>
    <property name="serviceInterface"     value="com.excellence.webservice.AccountService"></property>
</bean>

  2.调用RMI的方法:

public static void main(String[] args) {
    ApplicationContext ctx = new FileSystemXmlApplicationContext    ("classpath:applicationContext.xml");
    AccountService service = (AccountService)ctx.getBean("accClient");
    service.insertAccount(new Account());
    service.getAccounts("dd");
}
时间: 2024-12-20 01:41:26

Spring对远程服务的支持的相关文章

Spring AOP和AspectJ支持

学了Spring之后发现我都不知道java为何物-- 在这一章中有好几节,讲的切面编程 第一节:在项目中启用Spring的AspectJ注解支持 第二节:用AspectJ注解声明aspect 第三节:访问连接点信息 第四节:指定aspect的优先级 第五节:重用切入点定义 第六节:编写AspectJ切入点表达式 第七节:在Bean中引入行为 第八节:为Bean引入状态 第九节:用基于XML的配置声明aspect 如果JVM版本低于1.4时后者不想依赖于AspectJ,就不应该使用AspectJ来

java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板

java 利用spring JavaMailSenderImpl发送邮件,支持普通文本.附件.html.velocity模板 博客分类: Java Spring 本文主要介绍利用JavaMailSenderImpl发送邮件.首先介绍了发送一般邮件,然后介绍了发送富文本(html)邮件及以velocity为模板发送邮件. 邮件发送分为为三步:创建邮件发送器.编写邮件.发送邮件. Spring的JavaMailSenderImpl提供了强大的邮件发送功能,可发送普通文本邮件.带附件邮件.html格式

Spring 对 AOP 的支持

1.AOP概念 首先,AOP是对OOP的一个补充.它考虑的是"横切性"问题.横切性问题即可以理解为我们同一层类的问题(例如:Service层). 它的理念是,把遍历在系统各个角落具有横切性的独立的服务,抽出来放到一个地方,然后等到运行时,再放进去,考虑的是"横向"的东西.将横切性关注的东西给抽出来,会使代码大大减少,更加简洁,更加有复用性. 下图展示AOP中的基本概念: 基础概念不多说,从上图可以看出SpringAOP的实现的过程: ?  找到横切性性关注点(发现横

Spring框架学习六:Spring对JDBC的支持

JdbcTemplate简介 为了使JDBC更加易于使用,Spring 在 JDBC API 上定义了一个抽象层,以此建立一个 JDBC 存取框架 作为 Spring JDBC 框架的核心,JDBC 模板的设计目的是为不同类型的 JDBC 操作提供模板方法.每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务.通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取工作量降到最低. #添加c3p0数据库连接池 jdbc.user=root jdbc.password=000 jdbc.jd

Spring使用远程服务之Hessian

Hessian像RMI一样,使用二进制消息进行客户端和服务端的交互,它的二进制消息可以移植到其他非Java的语言中包括PHP.Python.C++和C#.因为Hessian是基于HTTP的,所以HessianSeriviceExporter实现为一个Spring MVC控制器. HessianSeriviceExporter是一个SpringMVC控制器,它可以接收Hessian请求,并将这些请求翻译成对POJO的调用来,从而将POJO导出为一个Hessian服务 为了使用导出Hessian服务

Spring对ORM的支持之集成Hibernate3

1  集成Hibernate3 Hibernate是全自动的ORM框架,能自动为对象生成相应SQL并透明的持久化对象到数据库. Spring2.5+ 版本支持Hibernate 3.1+ 版本,不支持低版本,Spring 3.0.5 版本提供对Hibernate 3.6.0 Final版本支持. 1.1.  如何集成 Spring通过使用如下Bean进行集成Hibernate: LocalSessionFactoryBean :用于支持XML映射定义读取: configLocation和conf

Spring Boot 添加JSP支持【转】

Spring Boot 添加JSP支持 大体步骤: (1)            创建Maven web project: (2)            在pom.xml文件添加依赖: (3)            配置application.properties支持jsp (4)            编写测试Controller (5)          编写JSP页面 (6)          编写启动类App.Java 1,FreeMarker2,Groovy3,Thymeleaf (s

8 -- 深入使用Spring -- 8...1 Spring提供的DAO支持

8.8.1 Spring提供的DAO支持. DAO模式是一种标准的Java EE设计模式,DAO模式的核心思想是,所有的数据库访问都通过DAO组件完成,DAO组件封装了数据库的增.删.查.改等原子操作.业务逻辑组件依赖于DAO组件提供的数据库原子操作,完成系统业务逻辑的实现. 对于Java EE应用的架构,有非常多的选择,但不管细节如何变换,Java EE应用都大致可分为如下三层. ⊙ 表现层. ⊙ 业务逻辑层. ⊙ 数据持久层. 轻量级Java EE架构以Spring IoC容器为核心,承上启

由openSession、getCurrentSession和HibernateDaoSupport浅谈Spring对事物的支持

由openSession.getCurrentSession和HibernateDaoSupport浅谈Spring对事物的支持 Spring和Hibernate的集成的一个要点就是对事务的支持,openSession.getCurrentSession都是编程式事务(手动设置事务的提交.回滚)中重要的对象,HibernateDaoSupport则提供了更方便的声明式事务支持. Hibernate中最重要的就是Session对象的引入,它是对jdbc的深度封装,包括对事务的处理,Session对