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