從制造到創(chuàng)造
軟件工程師成長(zhǎng)之路 |
當(dāng)前配置XP SP1,eclipse3.0.1
現(xiàn)在假設(shè)我的eclipse安裝目錄是D:\eclipse,待安裝插件目錄是D:\plug-in ,我將要安裝LanguagePackFeature(語(yǔ)言包)、emf-sdo-xsd-SDK、GEF-SDK、Lomboz這四個(gè)插件。
先把這四個(gè)插件程序全部放在D:\plug-in目錄里,分別解壓。如Lomboz3.0.1.zip解壓成Lomboz3.0.1目錄,這個(gè)目錄包含一個(gè)plugins目錄,要先在Lomboz3.0.1目錄中新建一個(gè)子目錄eclipse,然后把plugins目錄移動(dòng)到剛建立的eclipse目錄中,即目錄結(jié)構(gòu)要是這樣的:D:\plug-in\Lomboz3.0.1\eclipse\plugins
Eclipse 將會(huì)到指定的目錄下去查找 eclipse\features 目錄和eclipse\plugins 目錄,看是否有合法的功能部件和(或)插件。也就是說(shuō),目標(biāo)目錄必須包含一個(gè) \eclipse 目錄。如果找到,附加的功能部件和插件在運(yùn)行期配置是將是可用的,如果鏈接文件是在工作區(qū)創(chuàng)建之后添加的,附加的功能部件和插件會(huì)作為新的配置變更來(lái)處理。
其它壓縮文件解壓后若已經(jīng)包含eclipse\plugins目錄,則不需要建立eclipse目錄。
然后在 eclipse安裝目錄D:\eclipse目錄中建立一個(gè)子目錄links,在links目錄中建立一個(gè)link文件,比如 LanguagePackFeature.link,改文件內(nèi)容為 path=D:/plug-in/LanguagePackFeature 即這個(gè)link文件要對(duì)應(yīng)一個(gè)剛解壓后的插件目錄。
說(shuō)明:
1. 插件可以分別安裝在多個(gè)自定義的目錄中。
2. 一個(gè)自定義目錄可以安裝多個(gè)插件。
3. link文件的文件名及擴(kuò)展名可以取任意名稱(chēng),比如ddd.txt,myplugin都可以。
4. link文件中path=插件目錄的path路徑分隔要用\\或是/
5. 在links目錄也可以有多個(gè)link文件,每個(gè)link文件中的path參數(shù)都將生效。
6. 插件目錄可以使用相對(duì)路徑。
7. 可以在links目錄中建立一個(gè)子目錄,轉(zhuǎn)移暫時(shí)不用的插件到此子目錄中,加快eclipse啟動(dòng)。
8. 如果安裝后看不到插件,把eclipse 目錄下的configuration目錄刪除,重啟即可。
注意:關(guān)于用links方式安裝Lomboz插件,在編輯EJB時(shí)可能會(huì)產(chǎn)生問(wèn)題,這個(gè)將會(huì)在有關(guān)Lomboz插件的文章中探討。
1、Anatomy of an Android Application(中文翻譯)1、安裝Weblogic:
使用的EJB服務(wù)是BEA的weblogic8.1,下載BEA的weblogic8.1,然后安裝。安裝步驟省略。
2、定義EJB遠(yuǎn)程接口(Remote Interface):
任何一個(gè)EJB都是通過(guò)Remote Interface被調(diào)用,EJB開(kāi)發(fā)者首先要在Remote Interface中定義這個(gè)EJB可以被外界調(diào)用的所有方法。執(zhí)行Remote Interface的類(lèi)由EJB生成工具生成。
以下是HelloBean的Remote Inteface程序:
package com.leo;
import java.rmi.RemoteException;
import java.rmi.Remote;
import javax.ejb.*;
public interface Hello extends EJBObject, Remote {
//this method just get "Hello EJB" from HelloEJB.
public String getHello() throws RemoteException;
}
3、定義Home Interface
EJB容器通過(guò)EJB的Home Interface來(lái)創(chuàng)建EJB實(shí)例,和Remote Interface一樣,執(zhí)行Home Interface的類(lèi)由EJB生成工具生成。以下是HelloEJB 的Home Interface程序:
package com.leo;
import javax.ejb.*;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.*;
/**
* This interface is extremely simple it declares only
* one create method.
*/
public interface HelloHome extends EJBHome {
public Hello create() throws CreateException,
RemoteException;
}
4、寫(xiě)EJB類(lèi)
在EJB類(lèi)中,編程者必須給出在Remote Interface中定義的遠(yuǎn)程方法的具體實(shí)現(xiàn)。EJB類(lèi)中還包括一些 EJB規(guī)范中定義的必須實(shí)現(xiàn)的方法,這些方法都有比較統(tǒng)一的實(shí)現(xiàn)模版,編程者只需花費(fèi)精力在具體業(yè)務(wù)方法的實(shí)現(xiàn)上。
以下是HelloEJB的代碼:
package com.leo;
import javax.ejb.*;
public class HelloEJB implements SessionBean{
public void ejbCreate(){}
public void ejbRemove(){}
public void ejbActivate(){}
public void ejbPassivate(){}
public void setSessionContext(SessionContext ctx){}
public String getHello() {
return new String("Hello,EJB");
}
}
5、創(chuàng)建ejb-jar.xml文件
ejb-jar.xml文件是EJB的部署描述文件,包含EJB的各種配置信息,如是有狀態(tài)Bean(Stateful Bean) 還是無(wú)狀態(tài)Bean(Stateless Bean),交易類(lèi)型等。ejb-jar.xml文件的詳細(xì)信息請(qǐng)參閱EJB規(guī)范。以下是HelloBean的配置文件:
<?xml version="1.0"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems Inc.//DTD Enterprise JavaBeans 1.2//EN" "http://java.sun.com/j2ee/dtds/ejb-jar_1_2.dtd">
<ejb-jar>
<enterprise-beans>
<session>
<ejb-name>Hello</ejb-name>
<home>com.leo.HelloHome</home>
<remote>com.leo.Hello</remote>
<ejb-class>com.leo.HelloEJB</ejb-class>
<session-type>Stateless</session-type>
<transaction-type>Container</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
6、創(chuàng)建weblogic-ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC "-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN" "http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd">
<weblogic-ejb-jar>
<description><![CDATA[Generated by XDoclet]]></description>
<weblogic-enterprise-bean>
<ejb-name>Hello</ejb-name>
<stateless-session-descriptor>
</stateless-session-descriptor>
<reference-descriptor>
</reference-descriptor>
<jndi-name>Hello</jndi-name>
<local-jndi-name>HelloLocal</local-jndi-name>
</weblogic-enterprise-bean>
</weblogic-ejb-jar>
7、部署和編譯
EJB的jar包是由class文件和描述文件組成,對(duì)于weblogic服務(wù)器來(lái)說(shuō)還要增加weblogic-ejb-jar.xml描述文件。編譯Java源文并將編譯后class和ejb-jar.xml、weblogic-ejb-jar.xml打包到Hello.jar
7.1:創(chuàng)建目錄build。
7.2:在build下新建目錄META-INF,把文件ejb-jar.xml、weblogic-ejb-jar.xml拷到META-INF下。
7.3:把編譯好的class文件拷到build目錄下(此時(shí)為com/leo/Hello.class,HelloEJB.class,HelloHome.class)。
7.4:打包成jar文件: jar -cvf hello.jar *.* 。
7.5:再將hello.jar文件部署到weblogic服務(wù)器中。
8、寫(xiě)客戶端調(diào)用程序
您可以從Java Client,JSP,Servlet或別的EJB調(diào)用HelloBean。
調(diào)用EJB有以下幾個(gè)步驟:
通過(guò)JNDI(Java Naming Directory Interface)得到EJB Home Interface
通過(guò)EJB Home Interface 創(chuàng)建EJB對(duì)象,并得到其Remote Interface
通過(guò)Remote Interface調(diào)用EJB方法
以下是一個(gè)從Java Client中調(diào)用HelloBean的例子:
package ejb.hello;
import javax.naming.Context;
import javax.naming.InitialContext;
import java.util.Hashtable;
import javax.ejb.*;
import java.rmi.RmoteException;
/**
* @author Copyright (c) 2000 by Apusic, Inc. All Rights Reserved.
*/
public class HelloClient {
public static void main(String args[]){
String url = "rmi://localhost:7100";
Context initCtx = null;
HelloHome hellohome = null;
try {
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.apusic.jndi.InitialContextFactory");
env.put(Context.PROVIDER_URL, url);
initCtx = new InitialContext(env);
} catch(Exception e){
System.out.println("Cannot get initial context: " + e.getMessage());
System.exit(1);
}
try {
Object obj=ctx.lookup("Hello");
HelloHome home=(HelloHome)PortableRemoteObject.narrow(obj,HelloHome.class);
Hello hello = hellohome.create();
String s = hello.getHello();
System.out.println(s);
}catch(Exception e){
System.out.println(e.getMessage());
System.exit(1);
}
}
}
運(yùn)行HelloClient,可得到以下輸出:
Hello EJB
大多數(shù)人學(xué)英語(yǔ)只知整天死背詞匯表,或昏昏欲睡地聽(tīng)老師絮叨語(yǔ)法。盡管老師常會(huì)夸張運(yùn)用臉部肌肉演示發(fā)音,然而僅僅一天之后,所學(xué)一切就開(kāi)始在你腦海中逐漸褪色。這便導(dǎo)致了一個(gè)無(wú)奈的結(jié)果:就算你會(huì)讀會(huì)寫(xiě),可當(dāng)你真正面對(duì)一個(gè)外國(guó)人進(jìn)行電話會(huì)議或演講陳述的實(shí)戰(zhàn)練習(xí)時(shí),你還是傻眼了。
現(xiàn)在EF中國(guó)區(qū)總裁Peter Winn告訴你:只需掌握了五個(gè)基本秘訣,即可輕松掌握單詞、詞組,真正實(shí)現(xiàn)“無(wú)痛”學(xué)英語(yǔ)。
1.確定目標(biāo),適時(shí)褒獎(jiǎng)。大多數(shù)人把學(xué)英語(yǔ)的目的簡(jiǎn)單地定義為“對(duì)未來(lái)有益”,其實(shí)精準(zhǔn)的目標(biāo)設(shè)定更有助于集中精力達(dá)成最終結(jié)果,其關(guān)鍵在于確定成績(jī)測(cè)試方式及時(shí)間范圍。你需要對(duì)自身英語(yǔ)水平做出客觀評(píng)估,并制定漸進(jìn)提高的詳細(xì)步驟。須謹(jǐn)記:衡量學(xué)習(xí)成果,定要始終使用同一衡量標(biāo)準(zhǔn),這樣才能清楚看見(jiàn)進(jìn)步空間。另外,設(shè)立長(zhǎng)遠(yuǎn)目標(biāo)倒也無(wú)妨,如同“說(shuō)一口流利的、不帶絲毫口音的英語(yǔ)”等等,就是不少人正在使用著的目標(biāo)。不過(guò),以階段性目標(biāo)作為發(fā)端容易敲開(kāi)成功之門(mén),“我希望能與同事進(jìn)行基本商務(wù)對(duì)話”,就是一個(gè)不錯(cuò)的例子。最后,千萬(wàn)不要忘記,哪怕你獲得最微小的進(jìn)步,也應(yīng)適時(shí)獎(jiǎng)勵(lì)自己,如此可以保證長(zhǎng)期的學(xué)習(xí)激情。
2.快樂(lè)學(xué)習(xí),輕松記憶。學(xué)習(xí)英語(yǔ),可以脫離教室。研究表明,當(dāng)人們處于快樂(lè)的心境下,記憶力更突出、自信心更富裕。把英語(yǔ)學(xué)習(xí)同興趣愛(ài)好結(jié)合起來(lái)。喜歡打網(wǎng)球,就參加英語(yǔ)交流的網(wǎng)球俱樂(lè)部;喜歡烹飪,就報(bào)名采用英語(yǔ)教學(xué)的烹飪培訓(xùn)班;喜歡唱歌,不妨試試在卡拉OK演唱英語(yǔ)歌曲……用眼睛盯著屏幕,用耳朵捕捉一遍遍重復(fù)的歌詞,輔以熟悉流暢的旋律,這一切讓單詞記憶變得越發(fā)簡(jiǎn)單。可能最初有點(diǎn)難,但是這會(huì)強(qiáng)迫你使用英語(yǔ)。尤其是你正做著自己熱愛(ài)的事情,學(xué)習(xí)英語(yǔ)的痛苦也就一掃而光了。
3. 融入環(huán)境,異化自己。建立英語(yǔ)學(xué)習(xí)自信心的關(guān)鍵無(wú)非:實(shí)踐實(shí)踐再實(shí)踐!缺少實(shí)踐機(jī)會(huì)和語(yǔ)言環(huán)境是目前中國(guó)學(xué)生面臨的最大挑戰(zhàn)。當(dāng)年我學(xué)習(xí)中文的時(shí)候,我和身邊朋友定下默契,盡量強(qiáng)迫自己用中文互相交流,即便中文不是我們其中任何一個(gè)人的母語(yǔ)。我們大家約定不到萬(wàn)不得已之時(shí),必須一直說(shuō)英語(yǔ),甚至對(duì)違反默認(rèn)規(guī)則的人實(shí)行懲罰措施!雖然剛開(kāi)始可能會(huì)犯很多錯(cuò)誤,但隨著對(duì)英語(yǔ)對(duì)話模式的逐漸熟悉,所犯錯(cuò)誤也將越來(lái)越少。令自己處于一個(gè)天然外語(yǔ)環(huán)境同樣重要,這個(gè)環(huán)境可以是辦公室、俱樂(lè)部、健身館、酒吧、餐廳,諸如此類(lèi)的場(chǎng)所越多越好。盡量挑選“主動(dòng)”語(yǔ)言環(huán)境,比如俱樂(lè)部或派對(duì),在那里你會(huì)更有說(shuō)話的欲望。而像電影院之類(lèi)的“被動(dòng)”語(yǔ)言環(huán)境,收效往往并不出色。不要害怕犯錯(cuò)——走出門(mén)去,找外國(guó)人交流。
4. 尋求幫助,制訂規(guī)劃。學(xué)習(xí)英語(yǔ)的一個(gè)關(guān)鍵步驟,是接受高質(zhì)量學(xué)習(xí)指導(dǎo)或參加高端語(yǔ)言培訓(xùn)項(xiàng)目。據(jù)我了解,很多學(xué)生寧愿選擇自學(xué),以及與外國(guó)友人實(shí)戰(zhàn)練習(xí)。最終,這些學(xué)生的確能夠建立充分信心,敢于流利表達(dá)自己,但詞匯量卻相當(dāng)有限。這就等于缺少了最基本的磚塊,無(wú)法建起堅(jiān)實(shí)的語(yǔ)言基礎(chǔ)。我認(rèn)識(shí)一個(gè)女孩,她說(shuō)話速度很快,卻從不注意用詞,因此總是表達(dá)不夠清晰。另外一個(gè)學(xué)生經(jīng)常和外國(guó)友人一起泡吧,于是連他自己都沒(méi)有意識(shí)到,他的口頭英語(yǔ)里夾雜許多酒吧用語(yǔ),甚至包括hey dude、yeah man 、that rocks!這些粗俗的臟話,就好像他長(zhǎng)年在酒吧工作一樣。扮演不同的社會(huì)角色,必然有完全迥異的英語(yǔ)表達(dá)方式,你能想象與國(guó)外客戶高層管理人員開(kāi)電話會(huì)議時(shí)突然冒出hey dude、that rocks這些詞句嗎?而這些區(qū)別只能由一個(gè)專(zhuān)業(yè)老師指導(dǎo)。一個(gè)稱(chēng)職老師會(huì)詳細(xì)分析學(xué)生的優(yōu)勢(shì)和不足,找到需要輔導(dǎo)的不足所在,強(qiáng)化本身具備的優(yōu)勢(shì),由此制定一個(gè)切實(shí)可行的學(xué)習(xí)規(guī)劃。 學(xué)習(xí)語(yǔ)言不僅需要流利,更加需要得體!
5. 承諾自己,態(tài)度積極。從來(lái)沒(méi)有確切證據(jù)表明,某種特質(zhì)的某些人更易于或更難于熟練掌握一門(mén)語(yǔ)言。相信我,任何人無(wú)論年齡、基礎(chǔ),只要具備正確學(xué)習(xí)態(tài)度,都足以學(xué)好英語(yǔ)。那些失敗過(guò)的學(xué)生,并不是因?yàn)樗麄儾粔蚵斆鳎且驗(yàn)樗麄儧](méi)有把學(xué)英語(yǔ)當(dāng)作一種對(duì)自己的承諾。你越早制定明確目標(biāo)和學(xué)習(xí)計(jì)劃,就能越快克服重重障礙。當(dāng)然,最初要讓舌頭適應(yīng)陌生的聲音和句式,確實(shí)有些困難。這并不該讓你退卻。失敗原因永遠(yuǎn)只有一個(gè),那就是你自己向這些困難投降了。
遵循這5個(gè)簡(jiǎn)單步驟,你很快會(huì)發(fā)現(xiàn)詞匯量和造句能力迅速提高,而對(duì)英語(yǔ)學(xué)習(xí)信心逐漸增強(qiáng),與老外對(duì)話時(shí)逐漸懂得鎮(zhèn)定心思。曾經(jīng)有位老師教育我要“操控”語(yǔ)言,而不是讓語(yǔ)言“操控”你。 不知不覺(jué),你會(huì)愛(ài)上英語(yǔ),學(xué)習(xí)也不再感覺(jué)痛苦。
| |||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
29 | 30 | 1 | 2 | 3 | 4 | 5 | |||
6 | 7 | 8 | 9 | 10 | 11 | 12 | |||
13 | 14 | 15 | 16 | 17 | 18 | 19 | |||
20 | 21 | 22 | 23 | 24 | 25 | 26 | |||
27 | 28 | 29 | 30 | 31 | 1 | 2 | |||
3 | 4 | 5 | 6 | 7 | 8 | 9 |