2.一个EJB的小Demo
新建一个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的更多相关文章
- 用backbone实现的一个MVC的小demo
一.Apache配置 本实例需要使用php支持.要现在Apache中配置虚拟目录,在Apache下的httpd-vhosts.conf文件中添加如下代码 <VirtualHost *:80> ...
- 实战:一、使用mongo做一个注册的小demo
思路:1.使用mongoose 进行 数据库的链接 2.使用Schema来进行传输字段的定义 3.安装koa-router进行数据处理4.安装koa-bodyparser 进行post数据交互5.解决 ...
- 撸一个JS正则小工具
写完正则在浏览器上检测自己写得对不对实在是不方便,于是就撸了一个JS正则小demo出来. demo demo展示 项目地址 代码部分 首先把布局样式先写好. <!DOCTYPE html> ...
- [置顶] 利用CXF发布webService的小demo
其实webService的发布不仅仅只有xfire,今天,给大家介绍一下用CXF发布一个webService的小demo,CXF也是我做webService用的第一个框架... 先将相关的jar引进来 ...
- 模仿京东顶部搜索条效果制作的一个小demo
最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...
- Android学习小Demo一个显示行线的自定义EditText
今天在处理一个EditText的时候,想着把EditText做成像一本作业本上的纸一样,每一行都可以由线条隔开,具体效果如下: 1)最开始的思路 一开始的想法是很简单的,找出每一行的高度,然后一行一行 ...
- 一周一个小demo — 前端后台的交互实例
这一周呢,本K在大神的指导下,完成了一个利用ajax与php文件上传处理相结合的一个留言板功能的小实例,下面就让本K来带大家瞅瞅如何实现这一种功能. 一.界面概览 首先我们来看一下这个小demo的具体 ...
- 一个基于ES6+webpack的vue小demo
上一篇文章<一个基于ES5的vue小demo>我们讲了如何用ES5,vue-router做一个小demo,接下来我们来把它变成基于ES6+webpack的demo. 一.环境搭建及代码转换 ...
- 一个基于ES5的vue小demo
由于现在很多vue项目都是基于ES6开发的,而我学vue的时候大多是看vue官网的API,是基于ES5的,所以对于刚接触项目的我来说要转变为项目的模块化写法确实有些挑战.因此,我打算先做一个基于ES5 ...
随机推荐
- ArcGIS10.2 应用服务器搭建
操作系统:Windows Server2012R2 DataCenter 软件环境:ArcGIS Desktop10.2,ArcSDE10.2,ArcGIS Server10.2,win64_11gR ...
- 如何实现一个php框架系列文章【1】如何组织文件
1. 组织文件布局应该考虑什么问题 前后端分离 各业务模块分离但方便互相调用 上传文件安全性 方便接入第三方类库 如图所示 框架入口文件 uct/index.php 框架目录 uct/ ...
- powershell脚本,命令行参数传值,并绑定变量的例子
这是小技巧文章,所以文章不长.但原创唯一,非常重要.我搜了下,还真没有人发 powershell怎样 [命令行 参数 绑定],所以我决定写成博客. 搜索关键字如下: powershell 命令行 参数 ...
- karma与webpack结合
一.必备插件 1.babel:es6的语法支持 2.karma:测试框架 3.jasmine:断言框架 4.webpack:打包工具 5.karma-webpack:karma调用webpack打包接 ...
- SQL多表查询
设置主键:点击右键设为主键,在默认值那设置newid(),即可自动生成 Join inner join(内连接):select * from 表1 inner join 表2 on 表1.列 = 表2 ...
- nth-child和:nth-of-type的区别
:nth-of-type为什么要叫:nth-of-type?因为它是以"type"来区分的.也就是说:ele:nth-of-type(n)是指父元素下第n个ele元素, 而ele: ...
- jquery编写插件的方法
版权声明:作者原创,转载请注明出处! 编写插件的两种方式: 1.类级别开发插件(1%) 2.对象级别开发(99%) 类级别的静态开发就是给jquery添加静态方法,三种方式 1.添加新的全局函数 2 ...
- SharePoint Conference 2014 Keynote
让我们来看看今年 SharePoint Conference 2014 的重点都是些什么内容.虽然 BI 那个视频很有趣儿,但是 keynote 可能更重要一些,所以,先研究 keynote. 概括来 ...
- Android中的AlertDialog使用示例三(单向选择确定对话框)
在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...
- html之file标签 --- 图片上传前预览 -- FileReader
记得以前做网站时,曾经需要实现一个图片上传到服务器前,先预览的功能.当时用html的<input type="file"/>标签一直实现不了,最后舍弃了这个标签,使用了 ...