读书人

ejb开发范例

发布时间: 2012-10-08 19:54:56 作者: rapoo

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容器会根据这两个接口自动生成本地接口类和远程接口类。?? ??? 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();
??}
??
?

?? }
}

?

?

读书人网 >软件架构设计

热点推荐