新建一个java普通项目即可

这里用到了Jboss,需要安装Jboss,然后进入jboss-4.2.3.GA\client目录,拷贝所有的jar包到本项目的lib下。

3个接口分别如下所示:

public interface Calculate {
//计算器接口,有个加法
public String add(Double a,Double b); }
public interface CalculateLocal extends Calculate {
//此接口用于实现本地化,继承父类
}
public interface Other {
//另一个接口
public String hello(); }

下面是两个实现类:

//此类为无状态的本地和远程的bean

@Stateless
@Remote(Calculate.class)
@Local(CalculateLocal.class)
public class CalculateImpl implements Calculate,CalculateLocal{ /*使用其他的EJB
* 方式一,通过注解注入
* beanName指明要注入的是哪个ejb
* 如果有两个类都实现了这个接口,必须要指明注入的是哪个类
* 只有一个的话,可以不指明
* */
@EJB(beanName="OtherImpl")
Other other;
/**
* @Resource
* 注入资源
* */
//@Resource TimeService t;
//@Resource(mappedName="java:jndi的名字") DataSource da; @Override
public String add(Double a, Double b) {
/*
* 方式二,通过jndi查找
*
Properties props = new Properties();
//设置jndi连接属性(jboss)
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
//服务器的url(jboss)
props.setProperty("java.naming.provider.url", "127.0.0.1:1099");
try{
InitialContext ctx = new InitialContext(props);
Other other = (Other)ctx.lookup("OtherImpl/remote");//本地调用:CalculateImpl/local
other.hello();
}catch(Exception e){ }
*/ return "结果:"+a+b+other.hello();
} }
@Stateless
@Remote(Other.class)
public class OtherImpl implements Other{ @Override
public String hello() {
System.out.println("hello...");
return "hello";
} }

以上,服务端bean就开发好了,现在进行打包发布

右键项目-->Export-->java JAR file-->next

我们就看到了导出的jar包

任何将这个jar包放到jboss-4.2.3.GA\server\default\deploy目录下,启动jboss就可以了

下面是客户端开发

那3个接口还是要的,实现类就可以不要了,因为我们是通过远程访问服务器端的bean

public class Main {
public static void main(String[] args) {
Properties props = new Properties();
//设置jndi连接属性(jboss)
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
//服务器的url(jboss)
props.setProperty("java.naming.provider.url", "127.0.0.1:1099");//本地IP
try{
InitialContext ctx = new InitialContext(props);
//jndi查找 远程
Calculate calculate = (Calculate)ctx.lookup("CalculateImpl/remote");//本地调用是:CalculateImpl/local
System.out.println(calculate.add(12D, 45D));//调用
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}

这样,一个简单的分布式应用就部署执行成功了

2.一个EJB的小Demo的更多相关文章

  1. 用backbone实现的一个MVC的小demo

    一.Apache配置 本实例需要使用php支持.要现在Apache中配置虚拟目录,在Apache下的httpd-vhosts.conf文件中添加如下代码 <VirtualHost *:80> ...

  2. 实战:一、使用mongo做一个注册的小demo

    思路:1.使用mongoose 进行 数据库的链接 2.使用Schema来进行传输字段的定义 3.安装koa-router进行数据处理4.安装koa-bodyparser 进行post数据交互5.解决 ...

  3. 撸一个JS正则小工具

    写完正则在浏览器上检测自己写得对不对实在是不方便,于是就撸了一个JS正则小demo出来. demo demo展示 项目地址 代码部分 首先把布局样式先写好. <!DOCTYPE html> ...

  4. [置顶] 利用CXF发布webService的小demo

    其实webService的发布不仅仅只有xfire,今天,给大家介绍一下用CXF发布一个webService的小demo,CXF也是我做webService用的第一个框架... 先将相关的jar引进来 ...

  5. 模仿京东顶部搜索条效果制作的一个小demo

    最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...

  6. Android学习小Demo一个显示行线的自定义EditText

    今天在处理一个EditText的时候,想着把EditText做成像一本作业本上的纸一样,每一行都可以由线条隔开,具体效果如下: 1)最开始的思路 一开始的想法是很简单的,找出每一行的高度,然后一行一行 ...

  7. 一周一个小demo — 前端后台的交互实例

    这一周呢,本K在大神的指导下,完成了一个利用ajax与php文件上传处理相结合的一个留言板功能的小实例,下面就让本K来带大家瞅瞅如何实现这一种功能. 一.界面概览 首先我们来看一下这个小demo的具体 ...

  8. 一个基于ES6+webpack的vue小demo

    上一篇文章<一个基于ES5的vue小demo>我们讲了如何用ES5,vue-router做一个小demo,接下来我们来把它变成基于ES6+webpack的demo. 一.环境搭建及代码转换 ...

  9. 一个基于ES5的vue小demo

    由于现在很多vue项目都是基于ES6开发的,而我学vue的时候大多是看vue官网的API,是基于ES5的,所以对于刚接触项目的我来说要转变为项目的模块化写法确实有些挑战.因此,我打算先做一个基于ES5 ...

随机推荐

  1. MVC学习系列——Filter扩展

    在MVC中,Filter也是可以扩展的.在此,本人对Filter的理解就是AOP,不知道各位大侠,有什么高的见解,呵呵... 首先MVC四大过滤神器IAuthorizationFilter,IActi ...

  2. sqlserver2008存储过程(比较两个日期大小和获取当前月最大天数的存储过程)

    下面简单介绍sqlserver2008两个常用的存储过程 1.比较两个日期大小的存储过程 2.获取当前月份的最大天数的存储过程 1.创建比较两个日期大小的存储过程 1)创建比较两个日期大小的存储过程 ...

  3. jquery改变文本框颜色

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. mybatis 中的where标签

    mybatis中的where标签可以去除 开头的 and 或者 or 但是放在后面的不行 失败的: <select id="countNotesByParam" parame ...

  5. Javascript面向对象(封装、继承)

    Javascript 面向对象编程(一):封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程( ...

  6. Jquery使用小技巧

    1. 禁止右键使用 view plaincopy to clipboardprint? 1.       $(document).ready(function(){ 2.           $(do ...

  7. 精心挑选10款优秀的 jQuery 图片左右滚动插件

    在现代的网页设计中,图片和内容滑块是一种极为常见和重要的元素.你可以从头开始编写自己的滑动效果,但是这将浪费很多时间,因为网络上已经有众多的优秀的 jQuery 滑块插件.当然,如果要从大量的 jQu ...

  8. arcgis10.2.2地图服务切图具体步骤

    1.未发布的参照http://www.cnblogs.com/oolili/p/4752114.html 2.在发布地图服务的基础上,打开Arccatalog,找到发布的地图服务选项,如下图: 右键地 ...

  9. 深度技术GHOST WIN7系统32.64位j极速安装版 V2016年

    系统来自系统妈:http://www.xitongma.com 深度技术GHOST win7系统64位j极速安装版 V2016年3月 系统概述 深度技术ghost win7系统64位j极速安装版  版 ...

  10. iOS之触摸及手势

    触摸事件 iOS中的事件: 在用户使用app过程中,会产生各种各样的事件.iOS中的事件可以分为3大类型:    view的触摸事件处理: 响应者对象: 在iOS中不是任何对象都能处理事件,只有继承了 ...