javaRMI使用入门程序及配置

程序

本例子包含了共5个文件,分别是HelloClient,Hello,HelloServer,Configur,config.properties

--------------------------------------------------------------------------------

/*Hello.java*/
/*
* Created on 2004-11-10
*
*/
package test.rmi;

import java.rmi.Remote;
import java.rmi.RemoteException;

/**
* @author dogcome
*
* <p>远程方法调用接口,定义远程调用方法</p>
*/
public interface Hello extends Remote {

String sayHello() throws RemoteException;

}

--------------------------------------------------------------------------------

/*HelloServer*/
/*
* Created on 2004-11-10
*
*/
package test.rmi;

import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import java.rmi.server.UnicastRemoteObject;

/**
* @author dogcome
*
*<p>服务器端,实现了Hello接口中的方法,用于实现远程调用方法的具体业务逻辑</p>
*/
public class HelloServer extends UnicastRemoteObject implements Hello {
String name;
public HelloServer(String s) throws RemoteException {
super();
name=s;
}

public String sayHello() throws RemoteException {
// TODO Auto-generated method stub
return "Hello world!";
}

public static void main(String[] args) {
/**下面这句话若要加上,则需要进行权限的认证,即增加.policy文件
* 并且在命令行中使用如下格式
* java -Djava.security.policy=java.policy test.rmi.HelloServer
*/
/*System.setSecurityManager(new RMISecurityManager());*/
Registry registry = null;
try {
/**启动注册服务器,使用了这个语句就不再需要在命令行环境中
*启动registry服务了
*/
registry = LocateRegistry.getRegistry();
/* 若没有获得连接,则此句会抛出异常,后面在捕获后进行相关处理 */
registry.list();
System.out.println("Register the exist server!"); //$NON-NLS-1$
} catch (RemoteException re) {
try {
int port = Integer.parseInt(Configur
.getString("HelloServer.RegistryServerPort")); //$NON-NLS-1$
registry = LocateRegistry.createRegistry(port);
System.out.println("Create Registry Server!"); //$NON-NLS-1$
} catch (Exception e) {
e.printStackTrace();
}
}
try {
HelloServer helloServer = new HelloServer("Hello");
registry
.rebind(
Configur.getString("HelloServer.HelloServerName"), helloServer); //$NON-NLS-1$
System.out.println("HelloServer server start!"); //$NON-NLS-1$
} catch (Exception e) {
e.printStackTrace();
}
}
}

--------------------------------------------------------------------------------

/*HelloClient*/
/*
* Created on 2004-11-10
*
*/
package test.rmi;

import java.rmi.*;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

/**
* @author dogcome
*
* <p>客户端,需要注册服务器并使用jndi</p>
*/
public class HelloClient {

public static void main(String[] args) {
/**下面这句话若要加上,则需要进行权限的认证,即增加.policy文件
* 并且在命令行中使用如下格式
* java -Djava.security.policy=java.policy test.rmi.HelloServer
*/
/*System.setSecurityManager(new RMISecurityManager());*/
try {
/*注册服务器*/
String hostName=Configur.getString("HelloServer.RegistryServerName");
int port=Integer.parseInt(Configur.getString("HelloServer.RegistryServerPort"));
Registry registry=LocateRegistry.getRegistry(hostName,port);

Hello hello=(Hello)registry.lookup(Configur.getString("HelloServer.HelloServerName"));
String message=hello.sayHello();
System.out.println(message);

}catch(Exception e) {
e.printStackTrace();
}
}
}

--------------------------------------------------------------------------------

/*
* Created on 2004-11-12
*
*/
package test.rmi;

import java.util.MissingResourceException;
import java.util.ResourceBundle;

/**
* @author dogcome
*
* <p>获取系统运行所需要的配置信息,对应的配置文件名称为config.properties</p>
*/
public class Configur {
private static final String BUNDLE_NAME = "test.rmi.config";

private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
.getBundle(BUNDLE_NAME);

private Configur() {
}

/**
* <p>通过key名称获得配置文件的相关信息</p>
* @param key key名称
* @return String 配置文件信息
*/
public static String getString(String key) {
try {
return RESOURCE_BUNDLE.getString(key);
} catch (MissingResourceException e) {
return '!' + key + '!';
}
}
}

--------------------------------------------------------------------------------
#config.properties
HelloServer.RegistryServerPort=1111
HelloServer.HelloServerName=HelloServer
HelloServer.RegistryServerName=127.0.0.1

--------------------------------------------------------------------------------

首先使用rmic test.rmi.HelloServer命令生成需要的stub及skel两个类文件
然后运行HelloServer服务器 java test.rmi.HelloServer
最后运行HelloClient客户端 java test.rmi.HelloClient
屏幕输出HelloWorld,这样,一个最简单的rmi远程调用成功了

时间: 2025-01-02 08:32:21

javaRMI使用入门程序及配置的相关文章

【SpringMVC框架】springmvc入门程序-环境搭建

入门程序 1.需求 以案例作为驱动. springmvc和mybaits使用一个案例(商品订单管理). 回顾一下表单各项关联关系 见图数据模型 功能需求:商品列表查询 2.环境准备 数据库环境:mysql5.1 见图数据库环境   java环境: jdk1.7.0_72 eclipse indigo springmvc版本:spring3.2 需要spring3.2所有jar(一定包括spring-webmvc-3.2.0.RELEASE.jar) 见图spring3.2所有jar 3.配置前端

【mybatis深度历险系列】mybatis的框架原理+入门程序解析

在前面的博文中,小编介绍了springmvc的相关知识点,在今天这篇博文中,小编将介绍一下mybatis的框架原理,以及mybatis的入门程序,实现用户的增删改查,她有什么优缺点以及mybatis和hibernate之间存在着怎么样的关系,接下来小编一一进行讲解,希望对小伙伴们有帮助,不足之处,还请多多指教. 什么是mybatis? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google co

Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)_php实例

本文实例讲述了Zend Framework入门之环境配置及第一个Hello World程序.分享给大家供大家参考,具体如下: 第一步:确认你的PHP环境: 1.请PHPer确认你的PHP版本是否在5.2.0以上..如果不是的话..请更新到5.2.0,否则.Zend Framework 好像用不了..我自己有试过. 遇到过这样的问题..所以请你们自己测试一下..PHP源码最新版下载地址为:http://www.php.net/downloads.php. 2.你的PHP环境配置好了之后,请打开ph

MyBatis入门程序_java

什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索.MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. (一).程序环境 1.jar包 2.classpath目录下建立SqlMapConfig.xml. mybatis的配置文件.全部设置有如下 同时,数据库的

Win7应用程序并行配置不正确怎么办?

  有时候我们在安装一款软件的时候,发现软件怎么安装都安装不了,并且提示"程序并行配置不正确".Win7系统的用户也遇到这个问题,都不知道怎么解决?下面就由小编给大家说一下Win7系统应用程序并行配置不正确怎么办. 操作步骤: 方案一: 安装VC++2005 方案二: 从QQ官网下载Vcredist_x86.exe 注:如果安装Vcredist_x86.exe报错,请在vcredist_x86.exe上点右键解压(不能解压请把扩展名改为".RAR"),打开解压好的文

XP系统提示“程序并行配置不正确”如何解决

  XP系统提示"程序并行配置不正确"怎么办?这个问题是我们在安装软件过程中经常会遇到的.一些xp系统用户发现软件老是安装失败,且提示"程序并行配置不正确".针对此问题,下面小编就给大家介绍XP系统提示"程序并行配置不正确"的解决方法. 解决方法一: 1.系统的安装模块服务被禁止了,就会造成程序无法安装,会提示"应用程序无法启动,因为应用程序的并行配置不正确.",出现这样的问题的解决方法是启用模块安装服务.先在开始菜单中,打开

java入门程序 char初始值 和例题答案不一样

问题描述 java入门程序 char初始值 和例题答案不一样 public class Ex1 { int a; char b; public Ex1(){ System.out.println(a); System.out.print("["+b+"]"); System.out.print("www"); } public static void main(String[] args){ new Ex1(); /*我只是想把初始值试出来嘛,为

云存储 iscsi-某公司计划为其财务应用程序重新配置存储以获得高可用性

问题描述 某公司计划为其财务应用程序重新配置存储以获得高可用性 (1)某公司计划为其财务应用程序重新配置存储以获得高可用性 当前配置和挑战:: 应用程序执行 15% 随机写入和 85% 随机读取 当前与包含五个磁盘的 RAID 0 配置一起部署 每个磁盘的已公布格式化容量为 200 GB 财务应用程序数据的总大小为 730 GB,并且可能在未来 6 个月内不会发生更改 财务年度已接近尾声,即使购买一个磁盘也是不可能的 任务: 为该公司推荐一个可用于重新构造其环境以满足其需要的 RAID 级别 根

dec c++-如何使用dev c++编写c程序,配置选项需要做什么改变

问题描述 如何使用dev c++编写c程序,配置选项需要做什么改变 #include int main() { printf("Hello!"); return 0; } 我是第一次使用Dev c++,,创建了c工程后,编写这么一段简单的c程序,编译后下面提示框有build error,然后点运行显示工程未编译..我实在不知道怎么用Devc++编写C程序啊啊啊,请明白者不吝赐教.如果有详细说明,不胜感激.