Stone的专栏

个人主页:http://njchenyi.googlepages.com/

陈轶ID:njchenyi
218819次访问,排名291好友0人,关注者15
学习经历
学校 香港科技大学
描述 信息工程
日期 2006-8-19 -- 2007-8-17
学历 硕士

学校 荷兰Fontys应用科学大学
描述 信息工程
日期 2002-9-1 -- 2006-7-4
学历 本科

工作经历
南京烽火通讯发展有限公司
2007.8 – 至今 中国移动企业代理服务器
 主要职责:
MAS2.0系统JAVA版平台:平台为模块提供了通讯,告警,跟踪,定时器接口,为模块读取参数配置,并为模块提供了一个基类。
性能统计模块:根据数据库中的各模块不同采集项配置实时监测各个模块的各项统计值,并存入数据库。并能对比设定的门限阀值,在超出阀值的时候发出告警信息。
性能统计辅助模块:因为系统设计的问题,某些性能采集项无法从现有模块中获取,此模块作为修能统计的辅助模块针对无法获取的性能采集项做了特殊处理,供性能统计模块采集。
参与了性能统计相关数据库的设计,更改,维护
 主要应用技术:
1. Java—JDBC,JAVA多线程,Java中部分类库(如io、util,concurrent等)等技术
2. XML解析
3. 数据库—MySQL
njchenyi的文章
原创 196 篇
翻译 1 篇
转载 55 篇
评论 68 篇
njchenyi的公告
MSN:njchenyi@hotmail.com Gmail:njchenyi@gmail.com 我的QQ:24726542
最近评论
lliiqiang:javatalk.jar在什么地方
elong:国内最专业的生物实验定时器定点生产基地


生物实验计时器在生物实验室的教学、生产和实验项目中都有广泛应用,是科研实验工作者的好帮手!

实验室中苛刻的工作环境和生物实验精确严谨的工作特性,对生物计时器产品有高精确性,高稳定性,高易用性和高耐用性等方面的要求。品质优良的实验计时仪器能够帮助科研工作者提高工作效率,在应付复杂频密的实验应用工……
LEON:谢谢,我也遇到了只有程序运行时才能储存的问题,按照楼主说的,果然好用了,太感谢了~~~
无聊:这个你也放上来啊?弄点有水平的
Jason:感谢。
不知道为什么,我只有启动900端口的时候才能成功,我用1234和9999运行server端的时候就报不能连到900端口的错误,请指点。
不知道是不是和我的JDK有关系
文章分类
收藏
    相册
    定息贷款
    多边形裁剪
    图片
    个人链接
    MSN Space
    个人主页
    个人相册
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 Java Corba实例 (原作者:紫溪)收藏

    新一篇: CORBA中传递对象 java语言 | 旧一篇: Java IDL: The "Hello World" Example Using the POA, a persistent server, and a persistent naming service

    这篇文章和SUN公司提供的教程类似,中间多了一个HelloImpl的java文件,编译时的命令也就有所不同了

    原来的命令为:Server  javac HelloServer.java HelloApp/*.java

                                Client  javac HelloClient.java HelloApp/*.java


    现在的命令可以看下文

    下载并设置java platform这里就不详细讲了。

    这里以一个java的corba实例说明corba这种c-s结构的程序的实现。

    NB:这篇文章虽然是用java语言写的,但是由于corba的多语言特性,idl文件即可以用java编译器编译,也可以使用其他支持corba的语言编译例如c#.  把以下的java 格式改成c#风格照样可以使用。而且c-s没什么联系,你也可以用c#写server,用java写client,这就是corba强悍的地方!

    1)首先要熟悉idlj 语言,这个是专门进行接口设计的语言,它与java没关系,有自己的语法,具体的规则需要大家自己再网上研究,这里不多说了(或者访问如下网站详细察看http://www.iona.com/support/docs/manuals/orbix/33/html/orbix33cxx_pguide/IDL.html)。

    module HelloApp
    {
      
     interface Hello
        {
            string sayHello();
            oneway void shutdown();
         };
    };

    这里定义了一个简单的interface, 将其保存为hello.idl, 然后再dos命令框里面输入 idlj.exe -fall hello.idl 编译。之后会出现一个叫做HelloApp的目录,corba就是通过这个目录里面的类来进行c-s之间的数据沟通。

    2)下一步,就是我们的server端:

    // A server for the Hello object

    import HelloApp.*;
    import org.omg.CosNaming.*;
    import org.omg.CosNaming.NamingContextPackage.*;
    import org.omg.CORBA.*;
    import org.omg.PortableServer.*;
    import org.omg.PortableServer.POA;
    import java.util.Properties;

    public class HelloServer {

      public static void main(String args[]) {
        try{
          // create and initialize the ORB
          ORB orb = ORB.init(args, null);

          // get reference to rootpoa & activate the POAManager
          POA rootpoa =
            (POA)orb.resolve_initial_references("RootPOA");
          rootpoa.the_POAManager().activate();

          // create servant and register it with the ORB
          HelloImpl helloImpl = new HelloImpl();
          helloImpl.setORB(orb);

          // get object reference from the servant
          org.omg.CORBA.Object ref =
            rootpoa.servant_to_reference(helloImpl);


          // and cast the reference to a CORBA reference
          Hello href = HelloHelper.narrow(ref);
      
          // get the root naming context
          // NameService invokes the transient name service
          org.omg.CORBA.Object objRef =
              orb.resolve_initial_references("NameService");
          // Use NamingContextExt, which is part of the
          // Interoperable Naming Service (INS) specification.
          NamingContextExt ncRef =
            NamingContextExtHelper.narrow(objRef);

          // bind the Object Reference in Naming
          String name = "Hello1";
          NameComponent path[] = ncRef.to_name( name );
          ncRef.rebind(path, href);

          System.out.println
            ("HelloServer ready and waiting ...");

          // wait for invocations from clients
          orb.run();
        }
     
          catch (Exception e) {
            System.err.println("ERROR: " + e);
            e.printStackTrace(System.out);
          }
      
          System.out.println("HelloServer Exiting ...");
     
      } //end main
    } // end class

    将其保存为HelloServer.java.放在刚才的hello.idl的目录。编译这个文件就不多说了。

    3)还记得在hello中定义的interface吗?我们需要对自己定义的接口中的方法进行实现,因此HelloImp.java

    // The servant -- object implementation -- for the Hello
    // example.  Note that this is a subclass of HelloPOA, whose
    // source file is generated from the compilation of
    // Hello.idl using j2idl.

    import HelloApp.*;
    import org.omg.CosNaming.*;
    import org.omg.CosNaming.NamingContextPackage.*;
    import org.omg.CORBA.*;
    import org.omg.PortableServer.*;
    import org.omg.PortableServer.POA;

    import java.util.Properties;

    class HelloImpl extends HelloPOA //必须继承这个类,在helloApp目录中已自动生成

     {
      private ORB orb;

      public void setORB(ORB orb_val) {
        orb = orb_val;
      }
       
      // implement sayHello() method
        public String sayHello()
        {
     return "\nHello world !!\n";
        }
       
      // implement shutdown() method
      public void shutdown() {
        orb.shutdown(false);
      }
    } //end class
    同样放在server所在目录中。

    4)接下来是客户端(HelloClient.java):

    // A sample Java IDL object client application.
    import HelloApp.*;
    import org.omg.CosNaming.*;
    import org.omg.CosNaming.NamingContextPackage.*;
    import org.omg.CORBA.*;

    public class HelloClient
    {
      static Hello helloImpl;
      String [] x=new String[6];
      public static void main(String args[]){
         try{
            // create and initialize the ORB
          ORB orb = ORB.init(args, null);

            System.out.println("ORB initialised\n");

            // get the root naming context
            org.omg.CORBA.Object objRef =
          orb.resolve_initial_references("NameService");

            // Use NamingContextExt instead of NamingContext,
            // part of the Interoperable naming Service. 
            NamingContextExt ncRef =
              NamingContextExtHelper.narrow(objRef);
     
            // resolve the Object Reference in Naming
            String name = "Hello1";
            helloImpl =
              HelloHelper.narrow(ncRef.resolve_str(name));

            System.out.println
              ("Obtained a handle on server object: "
                + helloImpl);
            System.out.println(helloImpl.sayHello());
            helloImpl.shutdown();

       }
         catch (Exception e) {
            System.out.println("ERROR : " + e) ;
          e.printStackTrace(System.out);
       }
      } //end main

    } // end class


    这个文件最好放在一个新建的目录,已表示和server有区别,放在一起也没有关系。如果分开的话,记着把HelloApp这个目录复制到client的目录来。

    5)好啦!已经可以开始爽了,我们编译所有的java文件

    6)再dos窗口输入orbd.exe –ORBInitialPort 1234(端口号可以自定义,但是记得s-c要保持一致),启动corba服务。

    7)启动服务器:java HelloServer –ORBInitialPort 1234 –ORBInitialHost localhost

    8)启动客户端:java HelloClient –ORBInitialPort 1234 –ORBInitialHost localhost

    9)严格执行上述过程是应该直接成功的。 已经经过测试。

    10)然后再仔细研究这段代码,你就会发现corba的奥秘了。 

    发表于 @ 2007年09月12日 15:18:00|评论(loading...)|编辑

    新一篇: CORBA中传递对象 java语言 | 旧一篇: Java IDL: The "Hello World" Example Using the POA, a persistent server, and a persistent naming service

    评论

    #hwrose 发表于2007-09-28 01:10:20  IP: 58.38.159.*
    很不错哦! 这几天正在找 POA(非老式BOA)的CORBA的例子,谢谢了!
    #hwrose 发表于2007-09-28 01:12:07  IP: 58.38.159.*
    很好谢谢了! 现在网上的CORBA的例子都是BOA的终于找到了POA的了。。。。
    #Jason 发表于2008-07-20 14:41:42  IP: 222.190.126.*
    感谢。
    不知道为什么,我只有启动900端口的时候才能成功,我用1234和9999运行server端的时候就报不能连到900端口的错误,请指点。
    不知道是不是和我的JDK有关系
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © njchenyi