- 浏览: 799855 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
中国电信网上营业厅项目是使用ejb2.0开发的,在项目中已有的框架中修修补补,也没写过一个HelloWorld的例子,今天朝花夕拾,写一个例子
步骤:
1.在eclipse下新建一个java项目.命名叫 ejb2test
2.在项目的根目录下建立 META-INF 文件夹,主要是为了存放ejb-jar.xml, jboss.xml
3.在src文件夹下建立 两个包 cn.com.xinli.ejb ,cn.com.xinli.test
4.到入需要的jar包到classpath中, jboss-j2ee.jar,这个jar包可以在 %jbossHome%\server\default\lib中找到
5.下面开始写代码,一个ejb需要写两个接口和一个实现类.
在cn.com.xinli.ejb
先写本地接口 HelloWorldHome.java
package cn.com.xinli.ejb; import java.rmi.RemoteException; import javax.ejb.CreateException; import javax.ejb.EJBHome; public interface HelloWorldHome extends EJBHome { HelloWorldRemote create() throws RemoteException, CreateException; }
远程接口: HelloWorldRemote.java
package cn.com.xinli.ejb; import java.rmi.RemoteException; import javax.ejb.EJBObject; public interface HelloWorldRemote extends EJBObject { String sayHello() throws RemoteException; }
实现Bean类:HelloWorldBean.java (必须有会话bean的5个状态,可以为空实现,和远程接口中要实现的方法,网厅项目中是又把实现方法写在一个类里,每次 new一个类的对象,返回一个实现方法给Bean)
package cn.com.xinli.ejb; import java.rmi.RemoteException; import javax.ejb.EJBException; import javax.ejb.SessionBean; import javax.ejb.SessionContext; public class HelloWorldBean implements SessionBean { public void setSessionContext(SessionContext arg0) throws EJBException, RemoteException { System.out.println("set session context"); } public void ejbCreate() throws EJBException { System.out.println("ejb create"); } public void ejbRemove() throws EJBException, RemoteException { System.out.println("ejb remove"); } public void ejbActivate() throws EJBException, RemoteException { System.out.println("ejb activate"); } public void ejbPassivate() throws EJBException, RemoteException { System.out.println("ejb passivate"); } public String sayHello() throws RemoteException { return "Welecome to ejb2.0,HXL"; } }
6.写配置文件在META-INF 目录下,这个目录的名字不能改变(这里我们是一个有状态的回话bean)
ejb-jar.xml
<?xml version="1.0" encoding="gb2312"?> <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd"> <ejb-jar> <description>ejb</description> <display-name>myEJBTest</display-name> <enterprise-beans> <session> <display-name>helloEJB</display-name> <ejb-name>helloEJB</ejb-name> <home>cn.com.xinli.ejb.HelloWorldHome</home> <remote> cn.com.xinli.ejb.HelloWorldRemote </remote> <ejb-class> cn.com.xinli.ejb.HelloWorldBean </ejb-class> <session-type>Stateful</session-type> <transaction-type>Bean</transaction-type> </session> </enterprise-beans> </ejb-jar>
jboss.xml (其中)<jndi-name>元素的值必须在容器中唯一
<?xml version="1.0" encoding="gb2312"?> <jboss> <enterprise-beans> <session> <ejb-name>helloEJB</ejb-name> <jndi-name>ejb/helloEJB</jndi-name> </session> </enterprise-beans> </jboss>
7.把项目打成jar包发布在ejb容器中,我使用的是Jboss,大包后放在 %JbossHome%\server\default\deploy下
打包我们可以用eclipse ,在项目上点右键->Export->Jar File-> 记得要选择generate 就可以了,也可以使用 jar cvf 命令来打jar包
8.启动Jboss,我们会看到我们发布的ejb,如果没有错误的话
9.下面我们写一个测试,首先我们要导入 jboss-client.jar 到classpath 下,这个jar包在 %JbossHome%\client下
Test.java
package cn.com.xinli.ejb.test; import java.util.Properties; import javax.naming.InitialContext; import javax.rmi.PortableRemoteObject; import org.apache.log4j.Logger; import cn.com.xinli.ejb.HelloWorldHome; import cn.com.xinli.ejb.HelloWorldRemote; public class Test { static Logger log=Logger.getLogger(Test.class); /** * @param args */ public static void main(String[] args) { System.out.println("==========================================================="); Properties props = new Properties(); props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); props.setProperty("java.naming.provider.url", "localhost:1099"); props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming"); try { InitialContext ctx = new InitialContext(props); Object objRef = ctx.lookup("ejb/helloEJB"); HelloWorldHome home = (HelloWorldHome) PortableRemoteObject.narrow(objRef, HelloWorldHome.class); HelloWorldRemote remote = home.create(); log.info(remote.sayHello()); } catch (Exception ex) { ex.printStackTrace(); } } }
10.结果:
===========================================================
0 [main] INFO cn.com.xinli.ejb.test.Test(38) - Welecome to ejb2.0,HXL
到此,我们就完成了一个ejb2.0 HelloWorld 的开发
在ejb-jar.xml 中,我们将<session-type> </session-type> 元素的值修改为Stateless,就是一个无状态的回话bean了,无状态的会话bean也是使用的最多的bean了.
发表评论
-
本地客户端调用 websphere6.1 ejb资源 解决方案
2011-01-21 12:25 1779开发环境: 中我们都是在jboss4.0上部署ejb2. ... -
ejb2.0用本地引用提高EJB访问效率
2009-12-24 15:21 3001用本地引用提高EJB访问效率 EJB 1 ... -
ejb3.0 跨平台,跨JVM调用出现的问题及解决方案
2009-11-09 21:58 2326首先 ... -
ejb3 定时器开发
2009-10-28 08:35 3740定时服务用作在一段特定的时间后执行某段程序 ... -
ejb2.0消息驱动bean的开发(JBOSS4.0.4.GA 环境)
2009-10-23 11:12 2303消息驱动bean主要使用在异步的业务 ... -
ejb3 第12讲 --开发EJB容器模型的WEB服务
2009-08-05 08:04 3860JAX-WS JAX-WS规范是一组XML web ... -
ejb3 第10讲 --开发单表映射的实体bean
2009-08-02 23:29 1489目的:使用ejb3 ... -
ejb3 第9讲 --配置jboss数据源
2009-08-02 20:19 1095这个比较简单: 去$JBOSS_HOME\ ... -
ejb3 第8讲 --通过注解方式注入并使用其他EJB或者服务
2009-07-08 08:02 3246情景:有两个bean,一个是HelloWorldBean ... -
ejb3 第7讲 --开发有状态bean
2009-07-05 21:21 1396用 @Stateful 注解的方式表明 bean是有状态 ... -
ejb3 第6讲--开发具有本地接口的无状态bean
2009-07-03 07:01 2822理解: 1.当ejb的服务器端和客户端 ... -
ejb3 第5讲--通过ANT提高EJB应用的开发效率
2009-07-02 22:10 1430<?xml version="1.0" ... -
ejb3 第4讲--把jboss集成进eclipse
2009-06-29 22:45 1256这个比较简单,就不多说了 -
ejb3.0 第2,3讲-开发第一个无状态会话bean和客户端
2009-06-29 22:11 1659ejb中的3种bean: 什么是会话bea ... -
ejb3.0第11讲 --开发消息驱动bean
2009-06-24 08:23 2597概念: 1.java ... -
ejb3.0 --第1讲下载安装运行JBOSS
2009-06-24 07:08 15811.下载地址:jboss4.2.3http://www. ...
相关推荐
ejb2.0 ejb3.0的区别,比较详细讲解两者的区别
精通EJB2.0 书籍源码
ejb2.0的新特性介绍
EJB2.0经典视频,深入浅出讲解了EJB2.0规范,及语法.并配备有经典的实例进行解析讲解,适合初学者研读。
Ejb2.0经典教程,有需要的朋友看看吧,不错的哦!
使用ejb2.0 ql教程代码
EJB2.0一个完整的Helloworld
图解eclipse+myelcipse开发EJB2.0 一个最令初学者理解的开发 代码+文字+图片
ejb2.0 教程,ejb2.0 教程,ejb2.0 教程
ejb2.0开发
ejb的使用指南,我见过的最好的EJB书籍之一,希望能得到大家的喜爱
关于EJB2.0的相关资料,具体的有新的CMP组件模型,新的支持JMS的bean类型
从最基础开始介绍jsf,逐步深入,让读者容易接受.
EJB2.0.pdf
全面系统讲解了分布式组件EJB的开发 虽然为EJB2.0但对于学习EJB原理,值得推荐.
里面清楚的讲解各个部分, ,资料仅作参考, 有兴趣兄弟赶紧去学学啊。希望有所帮助
EJB学习有很好的文档
EJB3.0与EJB2.0的区别 本文从实战角度比较EJB2和EJB3的异同,通过深入剖析揭示EJB3.0的真相,EJB3.0真是带来简化?还是一种表象上的简化?EJB3.0真的变得轻量了,还是披着羊皮的狼?
ejb 2.0 websphere ibm