日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ejb开发实例

發布時間:2024/8/1 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ejb开发实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?剛開始學習ejb,依據基本原理編寫一個ejb小例子,有想學習ejb的歡迎大家一塊學習指導!

my QQ

243067750

?


1 新建ejb項目
?? 1、Remote(或Local)接口

package com.terry.ejbsample;

import java.rmi.RemoteException;

import javax.ejb.EJBObject;

public interface Hello extends EJBObject {
?
?public String getHello(String s) throws RemoteException;//遠程調用的接口方法


}


?? 2、Home(或LocalHome)接口

package com.terry.ejbsample;

import java.rmi.RemoteException;

import javax.ejb.CreateException;
import javax.ejb.EJBHome;

public interface HelloHome extends EJBHome {

?

?Hello create() throws RemoteException, CreateException;

?

}


?? 3、企業Bean ,具體的業務實現類

package com.terry.ejbsample;

import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;

public class HelloBean implements SessionBean {


?public String getHello(String s) {???? //具體的業務實現方法
??return s;
??
?}

?public void ejbCreate() throws CreateException {
??System.out.println("Bean created");
?}

?public void ejbRemove() {
?}

?public void ejbActivate() {
?}

?public void ejbPassivate() {
?}

?public void setSessionContext(SessionContext ctx) {
?}
}


編寫配置文件(放在ejb項目的meta-inf文件夾下面)
ejb-jar.xml
<?xml version="1.0"?>

<ejb-jar xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
??????????????? http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"
?version="2.1">
?<enterprise-beans>
??<session>
???<ejb-name>HelloName</ejb-name>??????????????????????????????? ?//ejb名稱
???<home>com.terry.ejbsample.HelloHome</home>????????? ?//ejb本地接口類
???<remote>com.terry.ejbsample.Hello</remote>?????????????? //ejb遠程接口類
???<ejb-class>com.terry.ejbsample.HelloBean</ejb-class>?? //ejb具體業務實現類

???<session-type>Stateful</session-type>
???<transaction-type>Container</transaction-type>
??</session>
?</enterprise-beans>
</ejb-jar>

配置文件jboss.xml
?
<?xml version="1.0"?>

<jboss>
? <enterprise-beans>
??? <session>
??????? <ejb-name>HelloName</ejb-name>????????????//ejb名稱

??????? <jndi-name>HelloHome</jndi-name>??????????//JNDI名稱

??? </session>
? </enterprise-beans>
</jboss>


打包ejb項目,使用myeclipse打包。生成ejb.jar


編寫測試項目:


? 新建web項目testEJB

?? 測試項目中加入jar。
???? 1 首先把ejb包加入。
原因是:

???
???
? 在生成ejb后應該已經建立了本地接口和遠程接口,在部署ejb時websphere或

其他ejb容器會根據這兩個接口自動生成本地接口類和遠程接口類。??
???
? 所以你不用實現這兩個接口類,但必須在開發客戶端的時候將這兩個接口的類

文件放到你的客戶端工程中。??
???
? 客戶端申請本地接口時,web容器根據自己生成的本地接口類返回一個類實例

,本地接口類實現了本地接口。通過本地接口,你可以建立遠程接口的實例,通

過本地接口的create方法,此時web容器會根據自己生成的遠程接口類返回一個

類實例,遠程接口類實現了遠程接口。??
???
? 而本地接口類和遠程接口類的實例其實是存在于服務器中,你的客戶端只是遠

程調用這些類的商業方法


?? 2 把jboss下面的client里面的jar包全部引用到測試項目的lib下面。

?

?

?

?編寫測試類

package com.lovo.servlet;
import java.rmi.RemoteException;

import javax.ejb.CreateException;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;

import com.terry.ejbsample.Hello;
import com.terry.ejbsample.HelloHome;

public class HelloClient {
?
?public static void main(String[] args)
?? {

?
??????? try {
???java.util.Properties p = new

java.util.Properties();
???p.put(Context.INITIAL_CONTEXT_FACTORY,
??????

"org.jnp.interfaces.NamingContextFactory");
???p.put(Context.URL_PKG_PREFIXES,

"jboss.naming:org.jnp.interfaces");
???p.put(Context.PROVIDER_URL, "localhost:1099");
???
???Context jndiContext = new InitialContext(p);
???Object ref = jndiContext.lookup("HelloHome");
???HelloHome home = (HelloHome)

PortableRemoteObject.narrow(ref, HelloHome.class);


???Hello?hh = home.create();
???
???String? s = hh .getHello("springking你真棒");
???? System.out.println("ejb " + s);
???
??} catch (ClassCastException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??} catch (RemoteException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??} catch (NamingException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??} catch (CreateException e) {
???// TODO Auto-generated catch block
???e.printStackTrace();
??}
??
?

?? }
}

?

總結

以上是生活随笔為你收集整理的ejb开发实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。