今天終于還是下定決心看看EJB,看著SPRING看了兩天,覺(jué)得一點(diǎn)頭緒都沒(méi)有,我不是一個(gè)講究速成的人,但是總是感覺(jué)和它們的理念不太一樣,唉,真可憐,都怪自己,初學(xué)JAVA的時(shí)候就把J2SE看得太重了.
在學(xué)習(xí)了J2SE一整年之后,發(fā)現(xiàn)JAVA的應(yīng)用還遠(yuǎn)遠(yuǎn)沒(méi)有掌握,我學(xué)習(xí)一年的結(jié)果就是剛剛對(duì)JAVA有所了解而已,回首這一年的路,挺艱難的,但是現(xiàn)在以一個(gè)過(guò)來(lái)人的姿態(tài)去看的時(shí)候,我又學(xué)得很慶幸.因?yàn)槲覜](méi)有放棄,在我學(xué)習(xí)條件最艱苦的時(shí)候,在我最無(wú)助的時(shí)候我都沒(méi)有放棄.曾經(jīng)記得為了想一個(gè)小小的程序,為了實(shí)現(xiàn)一個(gè)小小的功能,在那里苦思冥想,想得都想吐了,還記得半夜從夢(mèng)中醒來(lái)的時(shí)候,腦子里滿是程序代碼,甚至做夢(mèng)的時(shí)候也在編程序,想算法.就這樣,一年,我磕磕碰碰的走過(guò)來(lái)了.
一年后的今天,我將重新站在一個(gè)全新的起點(diǎn)上:J2EE,面全企業(yè)的應(yīng)用,希望以后心態(tài)能像一年前一樣.踏踏實(shí)實(shí)地走過(guò).一步一個(gè)腳印.記得一年前,我剛學(xué)JAVA時(shí),喜歡寫學(xué)習(xí)日記,喜歡把自己不懂的,以及當(dāng)天收獲的,還有對(duì)一些程序的理解和看法記下來(lái),并且過(guò)一段時(shí)間就去看以前寫的學(xué)習(xí)日記,那時(shí)候經(jīng)常會(huì)發(fā)現(xiàn)自己有所進(jìn)步.那種感覺(jué),真的很好.
今天算我第一天,我下面把我今天所看到的,寫下來(lái),以及自己不太了解的地方寫下來(lái),做為一個(gè)初學(xué)者最真實(shí)的心理反應(yīng)和想法,也為自己J2EE之路留下些紀(jì)念.
今天下載了黎活明的EJB3.0實(shí)例教程,學(xué)了如何裝JBoss4.0,第一次我下載的是免安裝版,直接解壓縮就可以用了,但是一直都配置不好那個(gè)EJB的應(yīng)用,后來(lái),刪掉重新按照書上的地址下載了一個(gè)安裝版的,并按照介始的順序和方法安裝了一遍,一布署,呵,真的可以了.看到網(wǎng)頁(yè)打開的一霎那,真的感覺(jué)很有成就感,雖然應(yīng)用都是別人寫的.
由于此書用的IDE是Eclipse,可是我用的IDE是NetBeans,所以有些地方就實(shí)踐不了了,但是能實(shí)踐的,我都盡量會(huì)去實(shí)踐一下,哪怕是抄代碼,我也會(huì)親手抄一遍.我覺(jué)得這對(duì)我們初學(xué)者來(lái)說(shuō)有很大的幫助.
今天學(xué)的是會(huì)話BEAN,有狀態(tài)會(huì)話BEAN和無(wú)狀態(tài)會(huì)話BEAN
聲明接口的代碼
* HelloWorld.java
*
* Created on 2006年12月7日, 下午9:26
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package lbf.demo;
/**
*
* @author lbf
*/
public interface HelloWorld {
/** Creates a new instance of HelloWorld */
public String sayHello(String who);
}
實(shí)現(xiàn)接口的代碼
* HelloWorldBean.java
*
* Created on 2006年12月7日, 下午9:27
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package lbf.demo.impl;
/**
*
* @author lbf
*/
import lbf.demo.*;
import javax.ejb.*;
@Stateless
@Remote({HelloWorld.class}) //表示是遠(yuǎn)程調(diào)用
public class HelloWorldBean implements HelloWorld {
/** Creates a new instance of HelloWorldBean */
public HelloWorldBean() {
}
public String sayHello(String who){
return who+"說(shuō):這是我的第一個(gè)EJB東東!!";
}
}
打包成JAR文件以后,放到JBOSS_HOME/server/all/deploy下面就可以了,JBOSS支持熱布置,這一點(diǎn)和TOMCAT一樣
只是兩者的目錄結(jié)構(gòu)有一點(diǎn)不一樣而已,并且它也支持WAR布署.同樣也是復(fù)制到JBOSS_HOME/server/all/deploy下面
用ctx.lookup("HelloWorldBean/remote"); 來(lái)查找綁定的BEAN,一般命名規(guī)則是
在這里我要重點(diǎn)說(shuō)明一下EJB JNDI名稱默認(rèn)的命名規(guī)則,命名規(guī)則如下:
1> 如果EJB應(yīng)用打包成后綴為*.ear 的發(fā)布文件,默認(rèn)的 JNDI 名稱是
訪問(wèn)本地接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/local
訪問(wèn)遠(yuǎn)程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
例:如果HelloWorld應(yīng)用打包成HelloWorld.ear 文件,訪問(wèn)她遠(yuǎn)程接口的 JNDI 名是:
HelloWorld/HelloWorldBean/remote
2> 如果EJB應(yīng)用打包成后綴為*.jar 的發(fā)布文件, 默認(rèn)的 JNDI 名稱是
訪問(wèn)本地接口:EJB-CLASS-NAME/local
訪問(wèn)遠(yuǎn)程接口:EJB-CLASS-NAME/remote
例: HelloWorld應(yīng)用打包成HelloWorld.jar 文件,訪問(wèn)她遠(yuǎn)程接口的 JNDI名稱是:HelloWorldBean/remote
另外有一點(diǎn)要注意:EJB-CLASS-NAME 是不帶包名的,如 com.foshanshop.ejb3.impl.HelloWorldBean只需取
HelloWorldBean。
目前網(wǎng)上很多教材獲取JNDI名的方式都過(guò)時(shí)了,如:
HelloWorld helloworld = (HelloWorld) ctx.lookup(HelloWorld.class.getName());
stateless每次查找都會(huì)返回同一個(gè)BEAN,而stateful每次查找都會(huì)產(chǎn)生一個(gè)新的BEAN,用來(lái)保存特定的客戶會(huì)話
那按照上面的命名規(guī)則,豈不是很容易生成相同的名字的BEAN?因?yàn)樗拿帜敲炊?如何避免這種情況呢.EJB應(yīng)該有解決的辦法吧.看以后吧
希望以后的日記中能搞清楚這個(gè)問(wèn)題
盡管千里冰封
依然擁有晴空
你我共同品味JAVA的濃香.