EJB作为J2EE标准的一部分,与Spring struts2等轻量级框架不同,EJB天生就是为了分布式而设计的重量级企业框架,说到EJB,自然会想到的是:分布式!如果如果一个应用要进行分布式部署,需要分布式事务的支持,需要支持不同的客户端,那么EJB是一个不错的选择.
EJB根据bean的类型,将它们分为有一种类型,关于下面三种类型,在以后的章节中将会一一讲到.
- 会话bean
- 消息驱动bean(MDB)
- 实体
接下来简单认识一下如何搭建一个EJB环境.
首先我使用的的jboss-as-7.1.1.Final ,这里在可以在jboss那里下载,开发环境使用EJB3.1,基于MyEclipse 10
第一步:下载 jboss服务器
第二步
创建一个EJB项目:指定项目名称EJBTest , 选择使用EJB3.1 , 选择不使用JPA,点击完成
新建一个接口:
package gd.hz.ejb; public interface HelloEJB { public String say(String name) ; }
实现HelloEJB这个接口
package gd.hz.ejb.bean; import javax.ejb.Remote; import javax.ejb.Stateless; import gd.hz.ejb.HelloEJB; @Stateless @Remote public class HelloEjbBean implements HelloEJB { @Override public String say(String name) { return "你好啊" + name ; } }
关于@Stateless 和@Remote在以后的章节会介绍到,将EJB项目部署到JBOSS中,可以看到其部署时的类名称为HelloEjbBean(一般为类的名称).这样我们在其它客户端可以通过这个名称查找.
将接口HelloEJB打包为jar文件,注意只要导出接口就可以了
选择导出jar文件:
选择需要导出的接口和存放的位置,点击完成:
第三步:新建一个普通java客户端:
引入之前导出的HelloEJB接口:
新建一个EJBTestClient普通java类,生成main方法:
package gd.hz.ejb.client; import java.util.Hashtable; import gd.hz.ejb.HelloEJB; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; public class EJBTestClient { /** * @param args */ public static void main(String[] args) { Hashtable<String , String> jndiProperties = new Hashtable<String, String>(); //让JNDI API知道是由谁来管理我们用来查找JNDI 名字的命名空间的。 jndiProperties.put(Context.URL_PKG_PREFIXES , "org.jboss.ejb.client.naming"); try { /* JNDI: ejb:appName/moduleName/distinctName/beanName!viewClassName appName:这里是.EAR包的名称,如果你打包成JAR发布的话,这里则留空 moduleName:表示模块名,也就是ejb包名,但不包括后缀.jar,如admin_ejb.jar。moduleName为admin_ejb distinctName:如果没有定义其更详细的名称,则这里留空 beanName:这里为实现类的名称 viewClassName:为接口全路径名称 */ Context context = new InitialContext(jndiProperties); HelloEJB hello = (HelloEJB)context.lookup("ejb:/EJBTest//HelloEjbBean!gd.hz.ejb.HelloEJB"); System.out.println(hello.say("lfd")); } catch (NamingException e) { e.printStackTrace(); } } }
引入%JBOSS_HOME%\bin\client/jboss-client.jar到classpath路径下.
在classPath下增加“jboss-ejb-client.properties”文件 ,用于jndi查找.
endpoint.name=client-endpoint remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false remote.connections=default remote.connection.default.host=127.0.0.1 remote.connection.default.port=4447 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
运行客户端,输出:你好啊lfd
下面是整个例子,这里我没有引入J2EE的jar包.是由MyEclipse帮我引入的,所以要注意.
相关推荐
ejb3.0配置使用jboss7.1.1的数据源
这是ejb3.1用jboss7.1.1开发的HelloWorld文档,网上有一个和这个差不多,但是有些错误,这个是修正版的
EJB3入门例子,jboss5+EJB3+myEclipse
jboss7.1.1+ejb3.0+MySQL数据源配置,包含项目源码,可直接导入MyEclipse
EJB3一对多和多对一关系映射实例
《EJB3.0入门经典》是关于EJB 3.0的专业技术教程,从实用的角度出发,理论联系实际,用9章的篇幅详细讲解了EJB 3.0开发的方法和技巧。《EJB3.0入门经典》内容丰富,讲解由浅入深,全面系统,在讲解EJB 3.0最新开发...
EJB3.0规范和EJB3.0经典入门(含源码) 本材料适合Java程序员、项目经理和系统架构师。学习本材料,您不需要EJB2.x知识,如果具备一些Web和jdbc知识,学习效率会更快些。学习本材料,初级Java程序员应在1个月左右,...
EJB3 入门经典 源码 .
这是大学选修课javaEE的一个基于EJB的作业,可以作为EJB的入门参考资料
经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...
《经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发》介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun公司提供的JSF RI;EJB 3部分则包含Session Bean、Message Driven Bean的...
Jboss7.1.1+eclipse-kepler开发ejb3 使用eclipse4.3即kepler版本来集成jboss tools工具并使用jboss7.1.1来开发ejb3.1
ejb入门手册ejb入门手册ejb入门手册ejb入门手册ejb入门手册ejb入门手册ejb入门手册ejb入门手册ejb入门手册ejb入门手册ejb入门手册ejb入门手册
struts2-ejb3配置,可以在EJB上面使用struts2 和JBOSS一起使用。
经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part3
EJB3的三本好书第二本,最好的介绍ejb3的书,看过之后,其他的书都送人了,而且附带的源代码,几乎包括了所有的主流应用服务器的例子,glassfish, jboss, weblogic, oracleAS 3本书分别是: 1. Beginning EJB3 ...
ejb3中文版
里面是一个简单的基于IDEA+JBoss7.1.1实现的一个入门级EJB项目
jboss7以上版本发布ejb时需要的配置文件,jboss-ejb3.xml和ejb-jar.xml,缺少csdn分数所以上传,请见谅。