<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    ????? 最近項(xiàng)目很變態(tài),硬是要把Domino的東西往J2EE上搬,說什么文檔型數(shù)據(jù)庫無法跨越系統(tǒng),我覺得如果照目前電信的系統(tǒng)結(jié)構(gòu)來說,就算把Domino上的所有東西,包括process都搬到J2EE上,也無法解決各個(gè)系統(tǒng)之間很好協(xié)作的問題,Portal和統(tǒng)一認(rèn)證已經(jīng)在某種程度上幫了大忙,如果實(shí)在很想各個(gè)應(yīng)用系統(tǒng)之間進(jìn)行數(shù)據(jù)交互,開發(fā)webservice接口就ok了,甚至在系統(tǒng)開始規(guī)劃的時(shí)候就不應(yīng)該出現(xiàn)Domino這種東西,現(xiàn)在想起關(guān)系型數(shù)據(jù)庫的好來了,未免累死了開發(fā)人員,所以我還是秉持我自己的原則:我們無限制的追求軟件程序的完美,并不是為了那幫傻逼客戶,而是為了讓我們之后的程序員能夠以更少的精力來更輕松的拿這份工資!
    ????? 牢騷完畢來說說目前的J2EE做法。既然涉及到流程,那不免就那兩種,WFMC和BPEL,我們選擇BPEL,原因是IBM支持BPEL,不要問我兩種東西那種更優(yōu)秀,我會(huì)告訴你:你搞清楚了也沒意義,用戶只相信IBM。
    ????? 既然用BPEL,IBM的Websphere Process Server首當(dāng)其沖,項(xiàng)目組買了幾百萬的軟件和服務(wù)就開始開發(fā)了,說實(shí)話,WPS真的是一個(gè)很好的SOA解決方案,但我個(gè)人認(rèn)為絕對(duì)不適合中國政府、國企的流程開發(fā),因?yàn)樗麩o法很好的解決人工節(jié)點(diǎn)的問題,哪怕是引入了human task,于是我們又自己封裝了一層小的流程引擎,當(dāng)然我所要說的重點(diǎn)不是這個(gè),而是我們?cè)趙ps中所需要的JCA方式綁定的組件的實(shí)現(xiàn)方式:EJB+Spring+Hibernate,做好的EJB包可以以EJB Bind的Java component形式打入wps的assembly里,在bpel process中reference進(jìn)來就可以了。下面我們主要說說EJB的實(shí)現(xiàn)。
    ????? 由于wps有個(gè)特點(diǎn)就是在流程實(shí)例結(jié)束后刪除其自帶數(shù)據(jù)庫中的所有實(shí)例數(shù)據(jù),所以我們必須在流程的最后一部將數(shù)據(jù)記錄在我們自己的業(yè)務(wù)庫中來,我們開發(fā)的EJB就實(shí)現(xiàn)了這個(gè)功能。
    首先是業(yè)務(wù)邏輯,業(yè)務(wù)邏輯分成三個(gè)包,ejb、face、pojo,其中ejb是組件的本地接口,face是組件的功能性接口,pojo是具體實(shí)現(xiàn)類。
    ??????具體邏輯代碼不貼了,貼一個(gè)我寫的例子:
    ??????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
    經(jīng)過測試,容器事務(wù)可以正常回滾,前提是spring與hibernate的配置文件配對(duì)。
    最終打包發(fā)布到Websphere上可以正常運(yùn)行,做個(gè)web客戶端簡單測試一下就ok了。
    放入wps上也運(yùn)行正常。
    最后說一句:不一定所有的國外產(chǎn)品都適用于我們的現(xiàn)狀。

    評(píng)論

    # re: SOA的組件實(shí)現(xiàn)---EJB+Spring+Hibernate  回復(fù)  更多評(píng)論   

    2007-07-03 17:39 by henry
    牛,正是我需要的。
    主站蜘蛛池模板: 亚洲 小说区 图片区 都市| 久久久亚洲精品视频| 日本永久免费a∨在线视频| 国产国拍亚洲精品mv在线观看 | 日韩黄色免费观看| 鲁啊鲁在线视频免费播放| 亚洲人成人一区二区三区| 性生交片免费无码看人| 福利片免费一区二区三区| 亚洲综合视频在线| 亚洲综合伊人久久大杳蕉| 永久免费AV无码国产网站| 毛片免费在线观看| 四虎精品免费永久免费视频| 亚洲二区在线视频| 91久久亚洲国产成人精品性色| 亚洲女人被黑人巨大进入| 成人黄页网站免费观看大全| 在线a免费观看最新网站| a成人毛片免费观看| 一级毛片在线完整免费观看| 狠狠色香婷婷久久亚洲精品| 亚洲AV人无码综合在线观看| 伊人久久综在合线亚洲91| 国产yw855.c免费视频| 亚洲成aⅴ人片久青草影院| 亚洲AV无码AV男人的天堂| 亚洲一级片在线观看| 亚洲成AV人片高潮喷水| 亚洲日本成本人观看| 精品国产亚洲一区二区三区在线观看 | 亚洲 自拍 另类小说综合图区| 亚洲Aⅴ无码一区二区二三区软件| 亚洲国产精品第一区二区三区| 亚洲综合图色40p| 国产亚洲精品激情都市| 亚洲永久网址在线观看| 免费的黄色的网站| 无码精品A∨在线观看免费| 免费大香伊蕉在人线国产 | 无码专区—VA亚洲V天堂|