zxbyhcsdn

           

          myeclipse搭建SSH2環(huán)境的項(xiàng)目引用

          >問(wèn)題提出:

            比如說(shuō)你要電子商務(wù)系統(tǒng)類(lèi)似淘寶的那玩意兒,
            這個(gè)系統(tǒng)應(yīng)該有一個(gè)管理系統(tǒng)門(mén)戶,還有一系列接口(提供給taobao旺旺客戶端調(diào)用的接口,還有淘寶開(kāi)放平臺(tái)的那些api),然后就是一個(gè)網(wǎng)站門(mén)戶這個(gè)是顯然不可少的.

            也就是說(shuō),大多數(shù)系統(tǒng)都不可能只有一個(gè)門(mén)戶,并且從部署和安全的角度來(lái)說(shuō),管理門(mén)戶都會(huì)單獨(dú)部署,并且限制能夠訪問(wèn)的ip.

            從邏輯架構(gòu)來(lái)劃分也應(yīng)該是 業(yè)務(wù)邏輯層(或者稱(chēng)為服務(wù)層),然后是多個(gè)web門(mén)戶.或者接口服務(wù)門(mén)戶
            如果是采用ms的doNET的話,可以建一個(gè)解決方案,然后再建多個(gè)項(xiàng)目,由于doNET的編譯后一個(gè)項(xiàng)目是一個(gè)dll存在,故doNET來(lái)說(shuō)應(yīng)該根據(jù)分層建立多個(gè)項(xiàng)目.doNET
            也推薦采用這樣的方式.

            下面說(shuō)一下采用j2ee處理這樣的情況的做法.這兒以myeclipse為例來(lái)說(shuō).

            根據(jù)上述情況,顯然我們應(yīng)該把業(yè)務(wù)邏輯放到一個(gè)項(xiàng)目,其他的門(mén)戶根據(jù)每一個(gè)門(mén)戶單獨(dú)建立一個(gè)項(xiàng)目,以后系統(tǒng)部署的時(shí)候,也就將不同的門(mén)戶部署到不同的服務(wù)器上去.

            其實(shí)就是各門(mén)戶的項(xiàng)目引用業(yè)務(wù)邏輯項(xiàng)目就可以了,將公用的東東都抽象出來(lái)放到一起(比如說(shuō) 商品相關(guān)的邏輯 在網(wǎng)站門(mén)戶,管理后臺(tái),接口都會(huì)共用的)

            下面用一個(gè)簡(jiǎn)單的例子,說(shuō)明一下實(shí)現(xiàn)步驟. 最后再介紹ssh2項(xiàng)目怎樣實(shí)現(xiàn).

          步驟如下:

          新建一個(gè)java project   [注意:]這兒一定要是一個(gè)java project ,我試過(guò)如果建成一個(gè)web projcet的話,可以編譯通過(guò),但是發(fā)布的時(shí)候,引用的class不會(huì)自己動(dòng)拷貝過(guò)去,除非手動(dòng)拷貝.
          起名字為servicecore,名字無(wú)所謂的.
          然后在src,再建一個(gè)folder叫service

          隨便寫(xiě)個(gè)類(lèi):

          package service;
          public class OneSrv
          {
           public String test()
           {
            return "this is test info";
           }
          }

          然后再建一個(gè)java web project
          起名字叫serviceweb,名字無(wú)所謂的
          然后,選中這個(gè)項(xiàng)目,屬性,java build path 里面選projects
          然后添加servicecore這個(gè)項(xiàng)目,
          在native library location那兒,選workspace,就指到 servicecore 的src目錄就是了 [這兒就表示發(fā)布的時(shí)候,會(huì)應(yīng)用的項(xiàng)目的src目錄下的東東全部發(fā)布到目標(biāo)項(xiàng)目]


          然后在serviceweb項(xiàng)目的src下面,再建一個(gè)folder叫srvproxy
          再寫(xiě)一個(gè)類(lèi),來(lái)調(diào)用servicecore項(xiàng)目的的類(lèi)的方法
          package srvproxy;
          import service.*;
          public class OneSrvProxy
          {
           public String test()
           {
            OneSrv oneSrv = new OneSrv();
            return oneSrv.test();
           }
          }

          再在jsp頁(yè)面上調(diào)用這個(gè)

          <%
                srvproxy.OneSrvProxy oneSrvProxy = new srvproxy.OneSrvProxy();
                out.println(oneSrvProxy.test());
              %>

          然后發(fā)布這個(gè)serviceweb項(xiàng)目到tomcate或者其他的容器,
          可以看到在發(fā)布的目錄下的serviceweb\WEB-INF\classes\service
          下面,也有那個(gè)OneSrv.class了

          呵呵..,如果沒(méi)有問(wèn)題的話,訪問(wèn)那個(gè)jsp頁(yè)面,就能看到調(diào)用的情況啦.

          也可以在jsp頁(yè)面上直接調(diào)用,OneSrv.class,
          對(duì)于web project 來(lái)說(shuō)的話,只要是在\WEB-INF\classes\下面的class都可以調(diào)用的.

          這樣就把業(yè)務(wù)邏輯和表示分離了.

          但是上述的例子只是一個(gè)非常簡(jiǎn)單的,實(shí)際的系統(tǒng)開(kāi)發(fā)有數(shù)據(jù)訪問(wèn)等. 下面就介紹對(duì)于一個(gè)SSH2 項(xiàng)目如何實(shí)現(xiàn)

          這兒以一個(gè)已經(jīng)存在的ssh2 的web project 項(xiàng)目為利,講解怎樣吧業(yè)務(wù)邏輯抽象到一個(gè)java project 中.

          步驟如下:
          一,新建一個(gè)java project ,在servicecore里面隨便建一個(gè)lib,

          這兒分兩種情況,
          如果是已經(jīng)有一個(gè)現(xiàn)成的ssh2 的 web project
          就想現(xiàn)成的 web projcect 的webroot的web-info下的lib文件甲的那些jar包全部拷貝到 servicecore 這個(gè)java project 的lib里面

          如果是沒(méi)有現(xiàn)成的ssh2 的web project 的話.
          可以通過(guò)myeclipse添加hibernate和spring的capability指定myeclipse的那些jar包到那個(gè)lib下,
          完成后,把那個(gè)lib下的jar包,拷貝到serviceweb的webroot的web-info下的lib文件甲

          這兒保證ssh2的相關(guān)的jar包都放到lib下面了.
          然后選中servicecore 屬性,java build path -> libraries 選擇Add External JARs,然后指向剛才的那個(gè)lib文件夾
          這樣項(xiàng)目就能使用那些jar包了. 同時(shí)把web project 的 build path 也 添加這些JAR包.

          [注意:]我遇到這樣一個(gè)問(wèn)題,就是servicecore這個(gè)項(xiàng)目找不到數(shù)據(jù)庫(kù) 的jdbc驅(qū)動(dòng),明明我吧ojdbc14.jar加到那個(gè)buildpath里面了的.
                 解決辦法是在myeclipse的java類(lèi)編輯器,報(bào)錯(cuò)的那個(gè)不能識(shí)別的包名下劃線那兒雙擊,會(huì)彈出來(lái)一個(gè)窗口,里面有一個(gè)oracle jdbc的驅(qū)動(dòng)
                 其實(shí)這個(gè)是另外的webprojcect里面的jdbc驅(qū)動(dòng).使用這個(gè)也沒(méi)關(guān)系,只要編譯通過(guò)就可以了.反正最總發(fā)布的時(shí)候,是使用web poject的的webroot的web-info下的lib文件甲里面的jar包.


          再將web project 的引用指向servicecore 這個(gè)java project ,步驟如前面所說(shuō).

          二, 相關(guān)的文件的處理

          1.spring 配置文件的處理.

          由于ssh2項(xiàng)目的話,spring配置文件里面會(huì)包含 dao,Bo,action等各層的class 故,需要對(duì)配置文件進(jìn)行分割.

          這兒將所有的配置文件都放到/WEB-INF/classes/spr-conf/文件夾下面,
          [注意:]這個(gè)是發(fā)布后的位置,解決方案中的classes 就對(duì)應(yīng)src 目錄.
          在web.xml里面的spring配置文件路徑就寫(xiě)成如下
          <context-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>/WEB-INF/classes/spr-conf/*.xml</param-value>
          </context-param>

          然后在servicecore 的 src 目錄下新建spr-conf目錄,在所有的web project的src目錄下也建spr-conf目錄.
          將dao,bo等業(yè)務(wù)邏輯類(lèi)的配置放到servicecore的 spring配置文件中,
          將action等類(lèi)配置放到web projcect 的srping配置文件中,

          這樣struts的配置文件放到web project 中, hibernate的配置文件放到servicecore中.spring配置文件(action的在web projcect,其他的都放到servicecore).

          三 總述
            經(jīng)過(guò)這樣的處理,項(xiàng)目就分離了,對(duì)于較大的項(xiàng)目,開(kāi)發(fā)人員可以分工,一些人專(zhuān)門(mén)做業(yè)務(wù)邏輯,一些人專(zhuān)門(mén)做前端頁(yè)面,同時(shí)也達(dá)到了復(fù)用的效果.


           

          posted on 2010-02-20 12:06 zxbyh 閱讀(4094) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): J2se


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


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類(lèi)

          隨筆檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 桐梓县| 长泰县| 阿鲁科尔沁旗| 奈曼旗| 洛扎县| 渭南市| 甘孜| 阳江市| 宜都市| 禄劝| 赣榆县| 平顺县| 遂川县| 大足县| 邵阳市| 张家界市| 阳高县| 沧源| 文安县| 太仆寺旗| 三明市| 呼和浩特市| 莒南县| 常熟市| 鹤岗市| 濉溪县| 常山县| 辛集市| 陇南市| 淅川县| 遂昌县| 天津市| 东源县| 古交市| 安丘市| 葵青区| 洮南市| 确山县| 旬邑县| 吉林市| 泰宁县|