posts - 165, comments - 198, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

EJB原理学习_RMIC

Posted on 2007-12-05 15:39 G_G 阅读(1366) 评论(1)  编辑  收藏 所属分类: EJB
EJB原理,有幸在 Q群上‘☆蓝蓝心情★’ 得以一教;
特在次郑重的道一声 谢谢了.大哥

在次我就分享给大家,本人语言组织能力有限,
说的不好可别怪我大哥啊。(呵呵)

EJB技术对
传输上进行封装,使程序员不需要关心太多网络问题。服务器都基于统一javabean操作的
在这就是基于 rmic 命令,和 rmiregistry 端口 来实现的。
rmic 和 rmiregistry 这些都在%JAVA_HOME%/bin下可以找到。
下面我就用大哥给写的一段 没用EJB容器 的代码来和大家分享EJB原理:


1.rmic命令介绍:
引用:  http://www.iplab.cs.tsukuba.ac.jp/liuxj/jdk1.2/zh/docs/tooldocs/solaris/rmic.html
rmic 编译器根据编译后的 Java 类(含有远程对象实现)名,为远程对象生成 stub 和 skeleton(远程对象是指实现 java.rmi.Remote 接口的对象)。
rmic 命令中所给的类必须是经 javac 命令成功编译且是完全包限定的类。例如,按如下所示对类文件名 HelloImpl 运行 rmic


2.EJB组建(服务器端

接口:
package org.rmi.test;

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

public interface IHello extends Remote {
    
public String sayHello(String name) throws RemoteException;
}

实现类:
package org.rmi.test;

import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
//取消显示指定的编译器警告!
//参考 : http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/SuppressWarnings.html

@SuppressWarnings(
"serial")
public class Hello extends UnicastRemoteObject implements IHello {
    
public Hello() throws RemoteException {
        
super();
    }
    
    
public void rebind(String name) { 
        
try {
            Naming.rebind(name,
this);
            System.out.println(
"Server is running");
        } 
catch(Exception e) {
            e.printStackTrace();
        }
    }
    
public String sayHello(String name) throws RemoteException {
        return "Hello "+name+" This is processed by RMI";
    }

}

上面的继承
java.rmi.Remote 和可序列化的感觉是一样的;在网络中转成流格式后,便与传输。

3. jdk1.5编译和
rmic 编译
 1)javac .....
 2)rmic  rmic org.rmi.test.Hello(后得到 Hello_Stub.class)

4.服务器开启:
在项目根目录下加 rmi.policy
grant {
  Permission java.security.AllPermission 
"","connect,listen,accept";
};

后运行:
package org.rmi.test;

import java.rmi.RMISecurityManager;

public class Start {

    
public static void main(String[] args) {
        try {
            System.setSecurityManager(
new RMISecurityManager());
            //这里还不太明白
            
new Hello().rebind("RMI/Mclaren");
        } 
catch(Exception e) {
            e.printStackTrace();
        }
    }

}

5.开端口:

rmiregistry 1099  (开 端口)


客户端:(另台电脑也可以了)
import java.rmi.Naming;
import org.rmi.test.IHello;

public final class Client {
    
public static void main(String[] args) {
        try {
            IHello hello 
= (IHello)Naming.lookup("rmi://localhost:1099/RMI/Mclaren");
            System.out.println(hello.sayHello(
"Mclaren"));
        } 
catch(Exception e) {
            e.printStackTrace();
        }
    }

}


结果是:
Hello Mclaren This is processed by RMI


评论

# re: EJB原理学习_RMIC  回复  更多评论   

2007-12-05 15:41 by G_G
在次感谢 ‘☆蓝蓝心情★’ 细心的帮助

只有注册用户登录后才能发表评论。


网站导航: