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 ...
随机推荐
- LinQ C#防注入式攻击实例代码
注入式攻击是Web开放项目中开发人员的第一时间要考虑的问题,下面就我的开发实例分享给大家,有用的的话就点个赞吧. 定義賬戶信息類 public class UserInfors { public st ...
- java对email邮箱的真实、有效性验证
三种验证邮箱有效性的方式: 方式1: public static boolean checkEmail(String email) { if (!email.matches("[\\ ...
- REST服务介绍
body{ font: 16px/1.5em 微软雅黑,arial,verdana,helvetica,sans-serif; } RESTful service是一种架构模式,近几年比 ...
- ADO.NET 中的新增功能
ADO.NET 中的新增功能: .NET Framework (current version) 以下是 .NET Framework 4.5 中 ADO.NET 的新增功能. SqlClient D ...
- 低调奢华 CSS3 transform-style 3D旋转
点击这里查看效果:http://keleyi.com/a/bjad/s89uo4t1.htm 效果图: CSS3 transform-style 属性 以下是代码: <!DOCTYPE html ...
- 程序员用HTML5给女朋友制作的3D相册
程序员给女朋友用HTML5制作的3D相册,使用鼠标拖拽,能看到3D旋转效果,点击相片,相片能放大,移近.程序员发挥自己的专长,这是那些不懂编程的人望尘莫及的.本相册使用了HTML5的画布技术,需要谷歌 ...
- JS+HTML5的Canvas画图模拟太阳系运转
查看效果:http://hovertree.com/texiao/html5/9.htm 地球自传 http://hovertree.com/texiao/html5/8.htm 代码如下: < ...
- Bootstrap之字体图标
优点:1.减少请求 2.容易控制样式 所在位置:在下载的bootstrap文件中的fonts文件夹存放字体图标 默认路径为当前目录下,如需修改路径,则需在bootstrap.css中查找font-fa ...
- 原生JS:Function对象(apply、call、bind)详解
Function对象(apply.call.bind) 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5850180.html 本文参考MDN做的 ...
- JavaScript下的setTimeout(fn,0)意味着什么?
近期在研究异步编程的我对于setTimeout之类的东西异常敏感.在SegmentFault上看到了一个问题<关于SetTimeout时间设为0时>:提问者读了一篇文章,原文解释setTi ...