posts - 165, comments - 198, trackbacks - 0, articles - 1
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          跟我一起--分離持久層(rmic)

          Posted on 2007-12-18 17:47 G_G 閱讀(1111) 評論(0)  編輯  收藏 所屬分類: EJB
          學習了Rmic后 ,聯(lián)系自己hbm的一些想法。并在實際開發(fā)中做到分離持久層.
          在次,特留記錄。使用不當望大家踴躍拍磚!EJB原理學習_RMIC

          效果先上 (你的組員,不需要數(shù)據(jù)庫,不需要hbm,不需要配置文件)
          客戶端:在服務器開啟,并client端內(nèi)classpath 包含有 *_Stub.class 和 hbmBean等類(底下有ant簡化部署) 在內(nèi)網(wǎng)中隨便那臺電腦都可以中運行,那臺開發(fā)電腦可以沒有hbm,可以沒有數(shù)據(jù)庫
          package?Client;

          import?java.rmi.Naming;

          import?dao.ILiuDao;
          import?dao.LiuDaoRemote;
          import?dao.imp.DaoFactory;

          public?class?Client?{
          ????
          public?static?void?main(String[]?args)?{
          ????????
          try?{
          ????????????ILiuDao?hello?
          =?(ILiuDao)Naming.lookup("rmi://192.168.1.109:1099/RMI/LiuDaoRemote");
          ????????????System.out.println(hello.getLiu(
          "1").getName());
          ??????}?
          catch(Exception?e)?{
          ????????????e.printStackTrace();
          ????????}
          ????}
          }

          服務器端:
          dao需求接口? 其他隊員提供給管理持久層的隊員
          package?dao;

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

          import?hibernate.Customer;
          import?hibernate.Liu;

          public?interface?ILiuDao?extends?Remote{
          ????
          public?abstract?Liu?getLiu(String?id)?throws?RemoteException;
          }

          dao實現(xiàn)
          package?dao;

          import?java.rmi.Naming;
          import?java.rmi.RemoteException;
          import?java.rmi.server.UnicastRemoteObject;

          import?org.hibernate.Query;
          import?org.hibernate.Session;

          import?hbmConfig.HibernateSessionFactory;
          import?hibernate.Customer;
          import?hibernate.Liu;

          public?class?LiuDaoRemote?extends?UnicastRemoteObject?implements?ILiuDao?{
          ????
          public?LiuDaoRemote()?throws?RemoteException?{
          ????????
          super();
          ????}

          ????
          public?Liu?getLiu(String?id)throws?RemoteException{
          ????????Liu?ll?
          =??null?;
          ????????Session?session?
          =?HibernateSessionFactory.currentSession();
          ????????Query?qu?
          =?session.createQuery("from?Liu?lt?where?lt.id=:id");
          ????????ll?
          =?(Liu)qu.setString("id",id).uniqueResult();
          ????????HibernateSessionFactory.closeSession();
          ????????
          return?ll?;
          ????}
          }

          使用ant給客戶端提供 jar

          ????<target?name?=?"rmic">
          ????????
          <rmic?base="${class}"?includes="${rmic.package}/**/*Remote.class"/>
          ??? ??? <!-- 兩個jar 包 ,給客戶端提供的
          ???? ??? ??? 1. rmic帶有約定的 到入 *_Stub.class并除dao實現(xiàn)類(*Remote.class
          )打包
          ??? ?? ?? ?? 2. hbmBean 道入 hbmjava
          ? ? ? ?? -->
          ????????
          <jar?destfile="${rh.dir}/rmic.jar">
          ????????????
          <fileset?dir="${class}">
          ??????????????
          <include?name="${rmic.package}/**/*.class"?/>
          ??????????????
          <exclude?name="${rmic.package}/**/*Remote.class"/>
          ????????????
          </fileset>
          ????????
          </jar>
          ????????
          <jar?destfile="${rh.dir}/hbmBean.jar"?>
          ????????????
          <fileset?dir="${class}">
          ??????????????
          <include?name="${hbm.bean.package}/**/*.class"?/>
          ????????????
          </fileset>
          ????????
          </jar>????
          ????
          </target>


          開啟服務器:
          package?test;

          import?java.rmi.Naming;
          import?java.rmi.RMISecurityManager;
          import?java.rmi.RemoteException;
          import?java.rmi.registry.LocateRegistry;

          import?sun.awt.AppContext;

          import?dao.DaoFactoryRemote;
          import?dao.ILiuDao;
          import?dao.LiuDaoRemote;

          import?hibernate.Liu;

          public?class?StartMain?{
          ????
          ????
          public?static?void?main(String[]?args)?throws?Exception?{
          ???????????
          try?{?
          ????????????????System.setProperty(
          "java.security.policy",?"rmi.policy");??
          ????????????????LocateRegistry.createRegistry(
          1099);??
          ????????????????Naming.rebind(
          "RMI/LiuDaoRemote",?new?LiuDaoRemote());?
          ????????????}?
          catch(Exception?e)?{
          ????????????????e.printStackTrace();
          ????????????}
          ????}

          }





          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 南宫市| 皋兰县| 荔浦县| 邵阳县| 云霄县| 大荔县| 石景山区| 池州市| 上林县| 象州县| 淳化县| 邯郸市| 怀化市| 新化县| 临邑县| 乳山市| 上高县| 铜陵市| 临安市| 镇原县| 南江县| 濮阳市| 香港| 通州区| 林周县| 阿拉善右旗| 财经| 巩义市| 乌苏市| 天全县| 天津市| 鄄城县| 凤冈县| 大化| 抚州市| 沙洋县| 会同县| 吴川市| 大姚县| 红河县| 新津县|