EJB系列(二)---开发
来源:互联网 发布:c语言wait函数头文件 编辑:程序博客网 时间:2024/06/16 07:00
上篇对EJB进行了简单的介绍:EJB系列(一)---简介
本篇,我们来做一个小demo简单介绍EJB开发的步骤。
开发环境:eclipse +Jboss 6.2 + jdk 1.8
开发环境搭建好之后,进入正式的编程阶段。
服务器端
(1)新建一个EJB Project项目
(2)定义一个远程接口
可以在接口上,加上@Remote。也可以在接口的实现类上加上这个注解。(@Local表示本地)
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.ejb;public interface FirstEjb {public String saySomething(String name);}</span></span>
(3)定义一个接口的实现类
@Stateless表示的是无状态会话bean,@Statefull表示的是有状态会话bean,区别是前者比后者效率高,但是不能保留后者那种在会话中的数据。
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.ejb;import javax.ejb.Remote;import javax.ejb.Stateless;import javax.jws.WebMethod;import javax.jws.WebService;@Stateless@Remotepublic class FirstEjbBean implements FirstEjb {@Overridepublic String saySomething(String name) {return "你好, " + name;}}</span></span>
(4)将其部署到jboss上。
客户端
(1) 新建一个Java Project项目
(2)引入%jboss_home%/client/下的jar包
(3)编写测试类
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">package com.tgb.ejb;import javax.naming.InitialContext;public class FirstEjbClient { //测试类public static void main(String[] args) throws Exception {//初始化上下文-----不同的应用服务器初始化上下文的工厂类是不同的,协议也可能不一样。InitialContext ctx = new InitialContext();FirstEjb ejb = (FirstEjb)ctx.lookup("FirstEjbBean/remote");String s = ejb.saySomething("baby");System.out.println(s);}}</span></span>InitialContext主要方法的使用:
void bind(String name,Object object); //将名称绑定到对象。如果已经存在,则抛出异常。
void rebind(String name,Object object); //将名称绑定到对象。如果对象存在,则重写所有绑定
void rename(String oldName,String newName); //把某一个已经绑定的旧名称改成新名称
void unbind(String name); //取消指定对象的绑定
Object lookup(String name); //查找指定对象
Jboss下配置JNDI名称
当EJB发布到Jboss时,如果没有为它指定全局的JNDI名称或修改过其默认EJB名称,Jboss就会按照默认的命名规则为EJB生成全局JNDI名称,默认的命名规则如下:
如果把EJB作为模块打包进后缀为*.ear的JavaEE企业应用文件,默认的全局JNDI名称是
本地接口:ear-file-base-name/ejb-class-name/local
远程接口:ear-file-base-name/ejb-class-name/remote
ear-file-base-name为ear文件的名称,ejb-class-name为EJB的非限定类名。
例如:把HelloWorld应用作为EJB模块打包进名为HelloWorld.ear的企业应用文件,它的远程接口的JNDI名称是:HelloWorld/HelloWorldBean/remote
如果把EJB应用打包成后缀为*.jar的模块文件,默认的全局JNDI名称是
本地接口:ejb-class-name/local
远程接口:ejb-class-name/remote
例如:把HelloWorld应用打包成HelloWorld.jar文件,它的远程接口的JNDI名称是:HelloWorldBean/remote
(4)设置JNDI访问环境信息
JNDI为JavaEE平台提供了一个通过名字查找网络中一切对象的标准机制,是一套为开发者提供通过名字方便查找用户、机器、网络、对象和服务的Java API,JNDI实现了EJB对象位置的透明性,客户端只要能方位JNDI服务,便可以调用EJB服务。设置JNDI访问环境信息,主要是设置JNDI驱动的类名(java.naming.factory.initial)和命名服务提供者的URL(java.naming.provider.url):
方式一:设置系统属性,此部分需要写在测试类中。
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">Properties props=new Properties();props.setProperty("java.naming.factory.initial","org.jnp.interfaces.NamingContextFactory"); //可以将"java.naming.factory.initial"替换成Context.INITIAL_CONTEXT_FACTORY,环境属性名,用于指定InitialContext工厂(JNDI驱动), //它雷速与JDBC指定数据库驱动类,因为本例子连接的是JbossNS,所以使用Jboss提供的驱动类:org.jnp.interfaces.NamingContextFactoryprops.setProperty("java.naming.provider.url","localhost:1009"); //”localhost:1009”也可以写成”jnp://127.0.0.1:1009” //可以将"java.naming.provider.url"替换成Context.PROVIDER_URL,环境属性名,包含提供命名服务的主机地址和端口号。它类似于JDBC指定数据库的连接URL。 //连接到JbossNS的URL格式为:jnp://host:port,改URL的“jnp”部分是指使用的协议,Jboss使用的是基于Socket/RMI的协议。 //Host为主机的地址,port为JNDI服务的端口。除了host之外,其他部分都是可以选择写的。props.setProperty("java.naming.factory.url.pkgs","org.jboss.naming:org.jnp.interfaces");</span></span>
方式二:src下添加jndi.properties
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">java.naming.factory.initial=org.jnp.interfaces.NamingContextFactoryjava.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces java.naming.provider.url=jnp://localhost:1009</span></span>
方式三:通过命令行设置。
服务器端与客户端交互
(1)将服务器端的接口导出成jar包。选中接口---右键----选择“Export....”
(2)将服务器端导出的jar包,引入到客户端。
运行测试,客户端就可以成功调用服务器端了。
- EJB系列(二)---开发
- JavaEE知识整理系列(二)EJB
- JavaEE知识整理系列(二)EJB .
- EJB系列(二)——Session Bean 的开发和调用
- 会话EJB系列(二)EJB分类
- 会话EJB系列(二)EJB分类
- JBOSS系列(二) -EJB远程调用-JBOSS的配置
- 【EJB系列】(二)——JBOSS7中EJB的远程调用和本地调用
- 【EJB系列】(一)——JBOSS7中开发一个简单的EJB应用
- EJB学习二 我的第一个EJB项目(Eclipse下的EJB开发,与JBoss集成,Ant打包)
- 恶斗EJB(二)
- EJB(二)图示EJB的"helloworld"
- EJB学习(二)—在JBoss下开发、部署EJB
- 开发EJB(上)
- EJB系列(一)---简介
- Android开发系列(二)
- Cocos2d开发系列(二)
- Cocos2d开发系列(二)
- python核心编程学习笔记-2016-07-26-01-习题6-13
- android开发性能优化经验总结二
- 虚拟化技术—— 介绍
- poj 2506 Tiling
- 计算机网络基础总结
- EJB系列(二)---开发
- 再看冒泡和选择排序以及折半查找(二分查找)
- easyui 源码分析(easyloader.js)(2)
- Eclipse插件开发学习笔记【1】---Eclipse环境搭建
- Java 中的定时任务
- HDU 5762 Teacher Bo(暴力+思维)
- 用GitHub搭建自己的博客实践
- 大数相加
- 浅谈封装