快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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远程调用成功了







返回类别: 教程
上一教程: java实现的18位身份证格式验证算法
下一教程: [Eclipse笔记]Just for fun ? 在Eclipse下编译和运行C#的代码

您可以阅读与"javaRMI使用入门程序及配置"相关的教程:
· Ant入门-配置和使用
· JSP入门初级教程之PLUGIN的使用
· 在JSP程序中使用COM组件
· JAVA工具包的安装,配置和使用
· JSP入门初级教程之SESSION的使用
    微笑服务 优质保证 索取样品