<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    1+1=2,0+0=0

    日月累積
    posts - 7, comments - 50, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    SOA的組件實現---EJB+Spring+Hibernate

    Posted on 2007-01-30 23:29 江上一葉舟 閱讀(2146) 評論(1)  編輯  收藏 所屬分類: 軟件藝術

    ????? 最近項目很變態,硬是要把Domino的東西往J2EE上搬,說什么文檔型數據庫無法跨越系統,我覺得如果照目前電信的系統結構來說,就算把Domino上的所有東西,包括process都搬到J2EE上,也無法解決各個系統之間很好協作的問題,Portal和統一認證已經在某種程度上幫了大忙,如果實在很想各個應用系統之間進行數據交互,開發webservice接口就ok了,甚至在系統開始規劃的時候就不應該出現Domino這種東西,現在想起關系型數據庫的好來了,未免累死了開發人員,所以我還是秉持我自己的原則:我們無限制的追求軟件程序的完美,并不是為了那幫傻逼客戶,而是為了讓我們之后的程序員能夠以更少的精力來更輕松的拿這份工資!
    ????? 牢騷完畢來說說目前的J2EE做法。既然涉及到流程,那不免就那兩種,WFMC和BPEL,我們選擇BPEL,原因是IBM支持BPEL,不要問我兩種東西那種更優秀,我會告訴你:你搞清楚了也沒意義,用戶只相信IBM。
    ????? 既然用BPEL,IBM的Websphere Process Server首當其沖,項目組買了幾百萬的軟件和服務就開始開發了,說實話,WPS真的是一個很好的SOA解決方案,但我個人認為絕對不適合中國政府、國企的流程開發,因為他無法很好的解決人工節點的問題,哪怕是引入了human task,于是我們又自己封裝了一層小的流程引擎,當然我所要說的重點不是這個,而是我們在wps中所需要的JCA方式綁定的組件的實現方式:EJB+Spring+Hibernate,做好的EJB包可以以EJB Bind的Java component形式打入wps的assembly里,在bpel process中reference進來就可以了。下面我們主要說說EJB的實現。
    ????? 由于wps有個特點就是在流程實例結束后刪除其自帶數據庫中的所有實例數據,所以我們必須在流程的最后一部將數據記錄在我們自己的業務庫中來,我們開發的EJB就實現了這個功能。
    首先是業務邏輯,業務邏輯分成三個包,ejb、face、pojo,其中ejb是組件的本地接口,face是組件的功能性接口,pojo是具體實現類。
    ??????具體邏輯代碼不貼了,貼一個我寫的例子:
    ??????face中的功能接口:

    1 package ?com.ideal.core.biz.face;
    2
    3 import ?java.rmi.RemoteException;
    4
    5 public ? interface ?SimpleService?
    6 {
    7 ?? public ?String?sayHello(String?message)throws Exception;
    8 }

    9

    ???ejb中本地接口:
    ?1package?com.ideal.core.biz.ejb;
    ?2
    ?3import?javax.ejb.EJBLocalObject;
    ?4import?com.ideal.core.biz.face.SimpleService;
    ?5
    ?6public?interface?SimpleLocal
    ?7????extends?EJBLocalObject,?SimpleService
    ?8{
    ?9????public?String?sayHello(String?message) throws Exception;
    10}

    11
    ? ejb的home接口不貼了,直接貼bean類,我們這里用Stateless的
    ?1package?com.ideal.core.biz.ejb;
    ?2
    ?3import?javax.ejb.SessionBean;
    ?4import?javax.ejb.SessionContext;
    ?5import?javax.ejb.CreateException;
    ?6import?com.ideal.core.biz.face.SimpleService;
    ?7import?org.springframework.ejb.support.AbstractStatelessSessionBean;
    ?8import?java.rmi.RemoteException;
    ?9
    10public?class?SimpleBean
    11????extends?AbstractStatelessSessionBean
    12????implements?SimpleService
    13{
    14????SessionContext?sessionContext;
    15????private?SimpleService?m_simple_service;
    16
    17????public?void?onEjbCreate()?throws?CreateException
    18????{
    19????????m_simple_service?=?(SimpleService)?getBeanFactory().getBean("SimpleService");
    20????}

    21
    22????public?String?sayHello(String?message) throws Exception
    23????{
    ?????????????????String message = "";
    ?????????????????????? try {
    ????????????????message = m_simple_service.sayHello(message);

    ??????? }
    ??????? catch (Exception ex)
    ??????? {
    ??????????? this.sessionContext.setRollbackOnly();
    ??????????? throw new EJBException();
    ??????? }
    24????????return?message;
    25????}

    26}

    27
    pojo:
    ?1package?com.ideal.core.biz.pojo;
    ?2
    ?3import?com.ideal.core.biz.face.SimpleService;
    ?4
    ?5public?class?SimpleServiceImpl?implements?SimpleService
    ?6{
    ?7????IUserInfoDAO?user_dao;
    ?8????public?SimpleServiceImpl()
    ?9????{
    10????}

    11????public?String?sayHello(String?message)??throws?Exception
    12????{
    13????????????Userinfo?user?=?new?Userinfo();
    14????????????user.setName("2");
    15????????????user.setPassword("2");
    16????????????user.setUserid("2");
    17????????????user_dao.saveUser(user);
    18????????????user.setPassword("asddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd");
    19????????????user_dao.saveUser(user);
    20????????return?"hello,"?+?message?+?"!";
    21????}

    22}

    23
    經過測試,容器事務可以正常回滾,前提是spring與hibernate的配置文件配對。
    最終打包發布到Websphere上可以正常運行,做個web客戶端簡單測試一下就ok了。
    放入wps上也運行正常。
    最后說一句:不一定所有的國外產品都適用于我們的現狀。

    評論

    # re: SOA的組件實現---EJB+Spring+Hibernate  回復  更多評論   

    2007-07-03 17:39 by henry
    牛,正是我需要的。
    主站蜘蛛池模板: 国产免费黄色大片| 久久久久亚洲精品影视| 成年免费a级毛片| 亚洲桃色AV无码| 1000部禁片黄的免费看| 亚洲另类自拍丝袜第五页| 亚洲第一黄色网址| 无码国产精品一区二区免费vr| 亚洲av片不卡无码久久| 亚洲精品NV久久久久久久久久| 久久精品国产大片免费观看| 天堂亚洲国产中文在线| 国产AV无码专区亚洲AV漫画| 91在线手机精品免费观看| 国产偷国产偷亚洲清高APP| 亚洲区小说区图片区QVOD| 性做久久久久久久免费看| 一级毛片免费播放视频| 亚洲国产综合在线| 亚洲午夜无码AV毛片久久| 免费观看无遮挡www的小视频| 免费看又黄又爽又猛的视频软件 | 无码一区二区三区AV免费| 欧洲美女大片免费播放器视频| 亚洲精品一区二区三区四区乱码| 免费观看亚洲人成网站| 99久久99热精品免费观看国产| 美女被免费网站在线视频免费 | 亚洲av永久无码精品网站| 性做久久久久久久免费看| 91免费在线视频| 亚洲gay片在线gv网站| 无码欧精品亚洲日韩一区| 哒哒哒免费视频观看在线www | 久久笫一福利免费导航| jizz在线免费观看| 亚洲精品无码久久久久久 | 色噜噜的亚洲男人的天堂| 久久久婷婷五月亚洲97号色 | AV大片在线无码永久免费| 国产成人免费视频|