1. 程式人生 > >帶你走進EJB--EJB例項

帶你走進EJB--EJB例項

    在<<帶你走進EJB>>系列博文中,前面系列的文章已經為EJB做了很多的鋪墊,我們的線路是逐漸的從巨集觀往細節入手.接下來將會從無狀態會話Bean作為一個例子,通過這個例子瞭解EJB的過程.

執行EJB的伺服器用的是Jboss.關於Jboss的相關內容讀者可以自行查閱,這裡不再贅述.

首先我們需要先建立一個EJB專案.

計算機生成了可選文字:畫NeW口}x)SglgctaWIZaFdCreateanEJBprojectWiZaFdS:…竺.匠卜EJB…。當。Bproject…賭EJBTimer份EJB3MessageDriven份EJB3SessionBean巨落Message一DrivenBean嘴SessionBean(EJB3.x)Bean(EJB3.x)②Next全CanCel

我們是要建立一個會話Bean,那麼需要要先定義一個包含他所有業務方法的一個介面,在這裡,這個介面跟我們普通的介面沒有什麼區別,也不需要任何的註釋.

介面程式碼如下:FirstEjb

		package com.tgb.ejb;
		/**
		 * 第一個EJB介面
		 * @author jnqqls
		 *
		 */
		public interface FirstEjb {
			public String SaySomething(String str);
		}


接下來需要做的是實現上面所提到的介面,並且添加註釋.在這裡註釋有兩個@Stateless,@Remote.

      @Stateless定義的是一個無狀態的會話Bean.

      @Remote定義的是這個無狀態會話BeanRemote介面.

下面是FirstEjb會話Bean的具體程式碼:

	package com.tgb.ejb;
	
	import javax.ejb.Remote;
	import javax.ejb.Stateless;
	
	@Stateless(name="FirstEjbBean")
	@Remote(FirstEjb.class)
	public class FirstEjbBean implements FirstEjb {
	
		/**
		 * 第一個Ejb例子
		 */
		public String SaySomething(String str) {
			
			return "你好"+str;
		}
	
	}


至此,只存在一個Remote介面的無狀態會話Bean我們已經開發完成,無狀態的會話Bean是一個簡單的POJO,EJB3.0容器能夠自動的例項化以及管理這個Bean.

開發完畢之後我們將此會話Bean釋出到Jboss.

計算機生成了可選文字:餾糕黑贏念夢Debug巴JUni,l_【Started,Synchronized」必句b一1ISynchronized]國XMLConfiguration凰Filesets

在啟動Jboss的過程中觀察一下輸出介面,如果沒有什麼異常的話,釋出成功.

計算機生成了可選文字:[SessionspecContainer]Startinqjboss.jZee:jar=profileservice一secured.jar,na!ne=SecureProfileservice,service=E正3[E正container]sTARTEDE正:orq.jboss.profileservice.ejb.secureProfileserviceBeanejbNaxne:SecureProfileservice[JndisessionReqistrarBase]BindinqthefollowinqEntriesinGlobalJNDI:ileservice/remote一EJB3.xDefaultRelnoteBusinessInterfaceileservice/remote一orq.jboss.profi1eservice.spi.Profileservice一E正3.xRemoteBusiness工nterface[TomcatDeployment]deploy,ctxPath=/admin一console[confiq]InitializinqMojarra(1.212一bol一FCS)forcontext'/adlnin一console'[TomcatDeployment]deploy,ctxPath=/[TomcatDeployment]deploy,ctxPath=/jmx一console[HttpllProtocol]StartinqCoyoteHTTP/1.1onhttp一127.0.0.1一8080[AjpProtocol]StartinqCoyoteAJP/1.3onajp一127.0.0.1一8009[Serverlmpl]JBoss(Microcontainer)[5.1.0.GA(build:SVNTaq=正055510GAdate=200905221634)]Startedin305:slZIns

至此我們的EJB已經發布成功,同時作為一個服務存在與Jboss容器中.接下來我們會介紹如何通過客戶端來訪問我們所釋出的EJB.

這裡需要進一步解釋一下,當我們把一個無狀態的會話Bean釋出到容器的時候,EJB容器會建立一個物件,並且把物件註冊到JNDI目錄裡.客戶端可以通過JNDI找到該物件

,通過此物件我們就可以呼叫具體的業務方法.

所以在客戶端我們需要提供JNDI的相關資訊,而這些資訊都放在了jndi.properties檔案中,此檔案放在客戶端的根目錄下.檔案內容如下.

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost


接下來建立客戶端:ejb_01_client

	package com.tgb.ejb;
	
	import javax.naming.InitialContext;
	
	public class FirstEjbClient {
	
		/**
		 * @param args
		 */
		public static void main(String[] args) throws Exception{
			InitialContext context = new InitialContext();
			FirstEjb ejb = (FirstEjb)context.lookup("FirstEjbBean/remote");
			String s = ejb.SaySomething("jnqqls");
			System.out.println(s);
		}
	
	}

執行客戶端便可以看到結果.讀者可以自己嘗試一下.

 以上的過程是EJB例項的一個簡單的實現.通過此例項我們能夠了解EJB具體程式碼上的實現.