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

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

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

          效果先上 (你的組員,不需要數據庫,不需要hbm,不需要配置文件)
          客戶端:在服務器開啟,并client端內classpath 包含有 *_Stub.class 和 hbmBean等類(底下有ant簡化部署) 在內網中隨便那臺電腦都可以中運行,那臺開發電腦可以沒有hbm,可以沒有數據庫
          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實現
          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實現類(*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();
          ????????????}
          ????}

          }





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


          網站導航:
           
          主站蜘蛛池模板: 武隆县| 桂平市| 大冶市| 栾城县| 玉山县| 民勤县| 光泽县| 肃南| 鄂伦春自治旗| 高州市| 增城市| 海林市| 莱州市| 赣榆县| 乌恰县| 屯昌县| 长葛市| 紫云| 安乡县| 军事| 上蔡县| 中超| 沐川县| 自贡市| 鄂托克前旗| 嘉黎县| 沙河市| 龙岩市| 海阳市| 龙陵县| 亚东县| 通辽市| 延寿县| 独山县| 华坪县| 鄄城县| 汶上县| 临猗县| 肃宁县| 罗城| 益阳市|