学习感悟:每次学习新知识。通过初审会从小事做起,获得成就感。经典Hello Workd我们成功的例子奠定了门哈,呢。非常好的理解了。Ejb的核心。

今天主要以这个小实例,来学习EJB的分布式,我们能够将接口与实现放到一台计算机上,而client能够放到还有一台机器上。当然分布式的意思非常大了(下篇博客给大家解说)。快来看实例。

一:代码实现

1:定义接口

<span style="font-size:18px;"><span style="font-size:18px;">package com.bjsxt.ejb;

public interface FirstEjb {
public String saySomething(String name); }</span></span>

2:编写对接口的实现

<span style="font-size:18px;"><span style="font-size:18px;">package com.bjsxt.ejb;

import javax.ejb.Remote;
import javax.ejb.Stateless; @Stateless
@Remote
public class FirstEjbBean implements FirstEjb { @Override
public String saySomething(String name) {
// TODO Auto-generated method stub
return "你好,"+ name;
} }
</span></span>

3:编写client来通过接口调用实现

<span style="font-size:18px;"><span style="font-size:18px;">package com.bjsxt.ejb;

import javax.naming.InitialContext;

public class FirstEjbElient {
public static void main(String[] args) throws Exception{
InitialContext context = new InitialContext(); FirstEjb firstEjb = (FirstEjb)context.lookup("FirstEjbBean/remote");
String s = firstEjb.saySomething("張三");
System.out.println(s); }
}
</span></span>

client实例化一个上下文对象,然后通过其lookup方法查找远程实现,最后调用详细的方法。

client想要成功调用,须要将其接口引用到client的项目里。

须要加入jndi配置文件

java.naming.provider.url指的是接口跟实现所在机器的地址和port。

<span style="font-size:18px;">java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=localhost</span>

client跟上面的SessionBean是两个全然独立的项目,可是它们能够进行交互。client能够调用SessionBean来完毕自己想要的操作。这正是EJB的分布式特性。

效果实现

二:配置



服务端开发好后,须要将其jar包部署到jboss的热部署文件夹。

client通过JNDI服务,可以从此拿到服务对象。

使用JNDI来远程訪问Ejb服务,须要使用强制转换来转化成接口类型。

所以。我们须要在Ejb的客户端引入jboss的client包。加到当前项目的环境变量中。来支持JNDI服务。



另外client须要知道服务端的接口,不然就无法依据名字拿到服务。所以须要将服务端的接口打成jar包,并在ejb的client引入。

总结

实现了本文实例。大家就算是入门了,带着这些成功的学习劲头,高速继续学习,在后文我有Ejb更深入的分析。

版权声明:本文博客原创文章,博客,未经同意,不得转载。

SSH深度历险记(两) Jboss+EJB一审的更多相关文章

  1. SSH深度历险记(九) Struts2+DWZ+Uploadify多文件(文件和图片等。)上传

    在gxpt_uas系统,为了实现文件(文件和图片等.,灵活配置)批量上传到mongodb,在学习的过程中,知道mongodb,功能,实现思路:在DWZ的基础上參考官方的实例结合现有的GXPT来实现,期 ...

  2. SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式

           于java发育.一类程序猿必须依靠类的其他方法,它是通常new依赖类的方法,然后调用类的实例,这样的发展问题new良好的班统一管理的例子.spring提出了依赖注入的思想,即依赖类不由程 ...

  3. SSH深度历险(十一) AOP原理及相关概念学习+xml配置实例(对比注解方式的优缺点)

    接上一篇 SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP,本篇我们主要是来学习使用配置XML实现AOP 本文采用强制的CGLB代理方式 Security ...

  4. SSH深度历险(十) AOP原理及相关概念学习+AspectJ注解方式配置spring AOP

    AOP(Aspect Oriented Programming),是面向切面编程的技术.AOP基于IoC基础,是对OOP的有益补充. AOP之所以能得到广泛应用,主要是因为它将应用系统拆分分了2个部分 ...

  5. JS深度判断两个对象字段相同

    代码: /** * 判断此对象是否是Object类型 * @param {Object} obj */ function isObject(obj){ return Object.prototype. ...

  6. JS深度判断两个数组对象字段相同

    /** * 判断此对象是否是Object类型 * @param {Object} obj */ function isObject(obj){ return Object.prototype.toSt ...

  7. JS深度比较两个对象是否相等

    /** * 深度比较两个对象是否相等 * @type {{compare: compareObj.compare, isObject: (function(*=): boolean), isArray ...

  8. SSH深度历险(二) Jboss+EJB的第一个实例

    学习感悟:每次学习新的知识,都会通过第一个小的实例入手,获得成就感,经典的Hello Workd实例奠定了我们成功的大门哈,这些经典的实例虽小但是五脏俱全呢,很好的理解了,Ejb的核心. 今天主要以这 ...

  9. SSH深度历险(三) EJB Session Bean有状态和无状态的差别与联系

    刚開始对两种sessionbean存在误解.觉得有状态是实例一直存在,保存每次调用后的状态,并对下一次调用起作用.而觉得无状态是每次调用实例化一次,不保留用户信息.细致分析并用实践检验后,会发现,事实 ...

随机推荐

  1. Raw-OS互斥的源代码分析的量的Mutex

    作为分析的内核版本2014-04-15,基于1.05正式版.blogs我们会跟上的内核开发进度的最新版本,如果出现源代码的目光"???"的话,没有深究的部分是理解. Raw-OS官 ...

  2. uva 10831 - Gerg&#39;s Cake(勒让德符号)

    题目链接:uva 10831 - Gerg's Cake 题目大意:给定a和p.p为素数,问说是否存在x,使得x2≡a%p 解题思路:勒让德记号,推断ap−12≡1%p #include <cs ...

  3. Eclipse+超快速的模拟器Genymotion开展Android申请书(第一步:安装和配置Genymotion)

    一.安装和配置Genymotion (1)因为Eclipse自带SDK模拟器,慢启动,别说 今天给大家介绍一个更快速的模拟器Genymotion (2)第一次去Genymotion在官方网站上注册一个 ...

  4. JTextAreaDemo

    问题:java swing 图形界面程序,拖了一个JTextArea出来,程序中有很多地方调用JTextArea中的append这个方法不断往文本域结尾处追加数据,但是程序每次运行,总是在程序运行完成 ...

  5. MEF初体验之十二:Composition Batch

    一个MEF容器实例是不可变的.如果catalog支持改变(像观察一个目录的改变)或是如果你的代码在运行时添加或移除部件,改变都可能发生.以前,你不得不作出改变并在组合容器上调用它的组合方法.在Prev ...

  6. Android 通过应用程序来设置系统的日期和时间中的

    Android 通过应用程序来设置系统的日期和时间中的 android 2.3 android 4.0 测试可行,刚需ROOT权限. import java.io.DataOutputStream; ...

  7. windows rt 扫描二维码

    项目中使用的是ZXing.net,应用商店程序.使用到的dll是ZXing.winmd. 大致思路为,使用MediaCapture捕获图片.获取到CapturePhotoToStreamAsync流, ...

  8. 中国的手写输入法iOS8.1在崩溃

    当中国的手写输入法.会导致app收起.于debug时刻.报错: 2014-10-22 14:45:10.269 App[524:170755] -[UIKBBlurredKeyView candida ...

  9. thinkphp学习笔记3—项目编译和调试模式

    原文:thinkphp学习笔记3-项目编译和调试模式 1.项目编译 在章节2.4项目编译中作者讲到使用thinkphp的项目在第一次运行的时候会吧核心需要加载的文件去掉空白和注释合并到一个文件中编译并 ...

  10. UML对象图和包图

    UML九已经介绍过的基本图,然后,我们再来看看对象图和包图.  一.对象图 谈到对象.我们不得不说一下对象.对象(Object)是对象类的实例(Instance),用于模型化特定的实体.对象是唯一的. ...