Eclipse+JBoss创建第一个EJB3项目
目录
- 演示环境
- JBoss 配置
- 创建EJB工程
- 部署
- 创建客户端工程
- 测试
[一]、演示环境
- Eclipse Juno(4.2)
- Java 1.7.0_25
- JBoss AS (5/6/7)
[二]、JBoss 配置
eclipse默认支持到JBoss 5.0,如果需要更高版本JBoss AS,可以去官方下载Eclipse对应版本的压缩包离线安装即可,当然也支持在线安装插件, JBoss Tools 下载地址:http://www.jboss.org/tools/download.html
本文就以自带的JBoss5.0 为例图文演示EJB3.0工程构建过程。
1. 下载JBoss AS
JBoss官网 http://www.jboss.org/jbossas/downloads下载 JBoss AS 5.0.1的版本,下载后解压缩到目录:/Users/micmiu/workspace_eclipse/jboss-5.0.1.GA
2.配置 Server Runtime Environments
eclipse 依次打开 Preference → Server → Runtime Environments → Add… 配置新环境,如下图:
3.创建Server
eclipse 依次打开 File → New → Other → Server → JBoss v5.0
Server runtime environment 选择 上面第二步中配置的环境即可,【Next】配置端口
默认即可。
[三]、创建EJB工程
依次点击 File → New → Other … → EJB → EJB Project 如下图
【Next】→【Next】(选中 Generate ejb-jar.xml deployment descriptor)→【Finish】。
如上图中生成的目录结构中,ejbModule目录是编写JAVA源码的目录(即EJB代码)。
在ejbModule 目录上右键【New】→【Other…】→【EJB】→ Session Bean(EJB 3.x)
→【Next】输入包名:com.micmiu.ejb、EJB类名:HelloWorld ,选中 Remote选项 →【Finish】.
自动生成两个类:HelloWorldRemote.java
1
|
package com.micmiu.ejb;
|
2
|
3
|
import javax.ejb.Remote;
|
4
|
5
|
/**
|
6
|
*
|
7
|
* @author <a href="http://www.micmiu.com">Michael</a>
|
8
|
* @time Create on 2013-9-21 下午1:55:51
|
9
|
* @version 1.0
|
10
|
*/
|
11
|
@Remote
|
12
|
public interface HelloWorldRemote {
|
13
|
14
|
}
|
HelloWorld.java
1
|
package com.micmiu.ejb;
|
2
|
3
|
import javax.ejb.Stateless;
|
4
|
/**
|
5
|
* Session Bean implementation class HelloWorld
|
6
|
* @author <a href="http://www.micmiu.com">Michael</a>
|
7
|
* @time Create on 2013-9-21 下午1:55:40
|
8
|
* @version 1.0
|
9
|
*/
|
10
|
@Stateless
|
11
|
public class HelloWorld implements HelloWorldRemote {
|
12
|
13
|
/**
|
14
|
* Default constructor.
|
15
|
*/
|
16
|
public HelloWorld() {
|
17
|
// TODO Auto-generated constructor stub
|
18
|
}
|
19
|
20
|
}
|
修改接口 HelloWorldRemote.java 添加sayHello(String username) 方法:
1
|
package com.micmiu.ejb;
|
2
|
3
|
import javax.ejb.Remote;
|
4
|
5
|
/**
|
6
|
*
|
7
|
* @author <a href="http://www.micmiu.com">Michael</a>
|
8
|
* @time Create on 2013-9-21 下午1:55:51
|
9
|
* @version 1.0
|
10
|
*/
|
11
|
@Remote
|
12
|
public interface HelloWorldRemote {
|
13
|
14
|
String sayHello( String username);
|
15
|
}
|
修改实现类 HelloWorld.java ,实现sayHello(String username)方法:
1
|
package com.micmiu.ejb;
|
2
|
3
|
import javax.ejb.Stateless;
|
4
|
5
|
/**
|
6
|
* Session Bean implementation class HelloWorld
|
7
|
*
|
8
|
* @author <a href="http://www.micmiu.com">Michael</a>
|
9
|
* @time Create on 2013-9-21 下午1:55:40
|
10
|
* @version 1.0
|
11
|
*/
|
12
|
@Stateless
|
13
|
public class HelloWorld implements HelloWorldRemote {
|
14
|
15
|
/**
|
16
|
* Default constructor.
|
17
|
*/
|
18
|
public HelloWorld() {
|
19
|
// TODO Auto-generated constructor stub
|
20
|
}
|
21
|
22
|
@Override
|
23
|
public String sayHello(String username) {
|
24
|
return "Hello," + username + " welcome to EJB." ;
|
25
|
}
|
26
|
}
|
[四]、部署
部署的办法有两种:
1.在eclipse中发布
在之前创建好的Server中,右击 Add and Remove … 添加这个项目,然后 Start即可
2.打包后再部署到指定server下
在工程上右键→【Export】→【EJB JAR file】 Destination处:→【Browse…】→ 选择JBoss服务器的部署目录:JBOSS_HOME/server/default/deploy (以JBoss 5.0.1GA为例)→【完成】即可
[五]、创建客户端工程
1. 点击 File → New → Other … → Java Project
创建一个 EJB-HelloWorld-Client 的工程。
2. 把EJB-HelloWorld 工程中的接口类 【Export】 jar包,添加到当前客户端工程classpath中。
3. 添加Jboss Client的Jar包($JBOSS_HOME/clent/jbossall-clent.jar)到classpath中,如下图
4.创建客户端测试类
HelloWorldClientTest.java
1
|
package com.micmiu.ejb.demo;
|
2
|
3
|
import java.util.Properties;
|
4
|
5
|
import javax.naming.InitialContext;
|
6
|
import javax.naming.NamingException;
|
7
|
8
|
import com.micmiu.ejb.HelloWorldRemote;
|
9
|
10
|
/**
|
11
|
*
|
12
|
* @author <a href="http://www.micmiu.com">Michael</a>
|
13
|
* @time Create on 2013-9-21 下午2:51:59
|
14
|
* @version 1.0
|
15
|
*/
|
16
|
public class HelloWorldClientTest {
|
17
|
18
|
/**
|
19
|
* @param args
|
20
|
*/
|
21
|
public static void main(String[] args) {
|
22
|
try {
|
23
|
Properties props = new Properties();
|
24
|
props.setProperty( "java.naming.factory.initial" ,
|
25
|
"org.jnp.interfaces.NamingContextFactory" );
|
26
|
props.setProperty( "java.naming.provider.url" , "localhost:1099" );
|
27
|
props.setProperty( "java.naming.factory.url.pkgs" ,
|
28
|
"org.jboss.naming" );
|
29
|
30
|
System.out.println( ">>>> InitialContext " );
|
31
|
InitialContext ctx = new InitialContext(props);
|
32
|
33
|
System.out.println( ">>>> lookup " );
|
34
|
String serviceName = "HelloWorld/remote" ;
|
35
|
HelloWorldRemote helloWorld = (HelloWorldRemote) ctx
|
36
|
.lookup(serviceName);
|
37
|
38
|
System.out.println( ">>>> 调用sayHello(\"micmiu.com\")" );
|
39
|
String result = helloWorld.sayHello( "micmiu.com" );
|
40
|
System.out.println( ">>>> 结果 = " + result);
|
41
|
} catch (NamingException e) {
|
42
|
e.printStackTrace();
|
43
|
}
|
44
|
}
|
45
|
}
|
[六]、测试
先运行EJB-HellowWorld 工程,日志如下:
14:46:37,439 INFO [JBossASKernel] Created KernelDeployment for: EJB-HelloWorld.jar
14:46:37,441 INFO [JBossASKernel] installing bean: jboss.j2ee:jar=EJB-HelloWorld.jar,name=HelloWorld,service=EJB3
14:46:37,441 INFO [JBossASKernel] with dependencies:
14:46:37,441 INFO [JBossASKernel] and demands:
14:46:37,442 INFO [JBossASKernel] jboss.ejb:service=EJBTimerService
14:46:37,442 INFO [JBossASKernel] and supplies:
14:46:37,442 INFO [JBossASKernel] jndi:HelloWorld/remote-com.micmiu.ejb.HelloWorldRemote
14:46:37,442 INFO [JBossASKernel] jndi:HelloWorld/remote
14:46:37,442 INFO [JBossASKernel] Class:com.micmiu.ejb.HelloWorldRemote
14:46:37,442 INFO [JBossASKernel] Added bean(jboss.j2ee:jar=EJB-HelloWorld.jar,name=HelloWorld,service=EJB3) to KernelDeployment of: EJB-HelloWorld.jar
14:46:37,512 INFO [SessionSpecContainer] Starting jboss.j2ee:jar=EJB-HelloWorld.jar,name=HelloWorld,service=EJB3
14:46:37,521 INFO [EJBContainer] STARTED EJB: com.micmiu.ejb.HelloWorld ejbName: HelloWorld
14:46:37,550 INFO [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:
HelloWorld/remote – EJB3.x Default Remote Business Interface
HelloWorld/remote-com.micmiu.ejb.HelloWorldRemote – EJB3.x Remote Business Interface
14:46:37,602 INFO [Http11Protocol] Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
14:46:37,631 INFO [AjpProtocol] Starting Coyote AJP/1.3 on ajp-127.0.0.1-8009
14:46:37,643 INFO [ServerImpl] JBoss (Microcontainer) [5.0.1.GA (build: SVNTag=JBoss_5_0_1_GA date=200902231221)] Started in 19s:412ms
再运行客户端的测试类,日志如下:
>>>> InitialContext
>>>> lookup
>>>> 调用sayHello(“micmiu.com”)
>>>> 结果 = Hello,micmiu.com welcome to EJB.
本文介绍到此结束@Michael Sun.
Eclipse+JBoss创建第一个EJB3项目相关推荐
- 如何将spring源码作为导入eclipse中,变成一个普通的项目(git、github)
引子: 怎么查看spring-framework的源码?是不是用压缩软件解压jar包,然后用编辑软件看?高端一点的,是在eclipse上面,按住Ctrl键跳转着看?这里我给大家介绍更加高端一点的方法. ...
- 创建第一个IOS项目
今天我们创建第一个IOS项目,并在模拟器上运行 首先进入Xcode 点击创建新项目后,接下来该给项目起一个名字啦 HelloWorld! 点击下一步,开始选择模板啦 我们选择SingleView Ap ...
- 五十一、创建第一个Maven项目和pom.xml 详解
@Author:Runsen @Date:2020/6/12 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...
- 创建第一个Django项目
创建第一个Django项目: 我们将介绍Django 管理工具及如何使用 Django 来创建项目,第一个项目我们以 HelloWorld 来命令项目. 测试版本说明: python 3.7 Djan ...
- python创建django项目_搭建Python-Django环境,创建第一个Django项目
曾想学爬虫,没想到误入python web班,在美女老师shirely的指导下,搭建了好Django环境,试着开始做第一个web项目 一.Python环境安装 1.Python2.7的下载 从Pyth ...
- 跟小静学MVC3[01]--创建第一个MVC3项目
[前言]从今天开始,小静要学习Pro ASP.NET MVC3 Framework这本经典大作了,我是下载的电子版学习的.在这里只是用作学习的记录,便于以后查阅,也为了督促自己坚持下去.不用于任何商业 ...
- 将Maven集成到idea中并创建第一个Maven项目
在将Maven集成到idea中之前,你需要确保你已经安装过了Maven,在DOS下输入mvn -v如果显示如下,则证明已安装,如果没有安装,可以参考Maven的下载安装,如果你不知道Maven的一些基 ...
- VsCode创建第一个vue项目
转载自:https://www.cnblogs.com/z45281625/p/9015380.html VsCode创建第一个vue项目 使用vue-cli快速构建项目 ( vue-cli 是vu ...
- 创建第一个phpstorm项目(phpstorm+Apache)
创建第一个phpstorm项目 1.点击新建项目 2.选择新建空项目 3.选择新建项目位置(由于要使用apache,所以项目一定要建在apache下的htdocs下) 4.给项目命完名 5.再次确认文 ...
最新文章
- 利用 GPU 加速人工智能:新型计算模式
- 部署exchange邮件系统的边缘服务器
- 使用Nomad构建弹性基础架构: 作业生命周期
- mysql中xml类型_使用 SQLXML 数据类型
- java语言的编译器可以用python_jython实现java运行python代码
- 推荐11个实用Python库
- Spark内存管理(1)—— 静态内存管理
- MDK linker和debug的设置以及在RAM中调试
- 第十二届蓝桥杯省赛A组试题:左儿子右兄弟Java
- CV+医疗领域实践项目!适合入门的图像分类领域新赛事
- oracle查看所有表及字段
- 日记html模板,【精选】初二日记模板集锦7篇
- 基于SSM的网上购物系统
- 对称加密与非对称加密算法
- androrid按键事件
- 编程计算一元二次方程的根
- 青云MR集群初步使用指南
- 利用vue实现树表格分页
- 内网渗透神器:fscan使用攻略
- python houdini_Houdini Python开发实战 课程笔记
热门文章
- 1.2 消息队列(4-6)
- u9过期老玉米挖掘软件V2版-过期域名采集软件-网址采集软件-域名采集软件-未注册域名检测软件-老域名采集工具
- 微信群里设置签到任务,从而活跃群气氛!
- Disable floppy driver(禁用软盘)
- STL教程(一): 标准模板库--STL概述
- 流量为王还是转化至上?Facebook广告投放的取舍之道
- 计算机专业指南考试,计算机专业指南考试题.doc
- docker 容器如何使用tini 作为启动进程并 清理、管理 Docker 容器僵死进程
- 【毕业设计】基于单片机的无接触测温枪 - MLX90614 红外测温仪 嵌入式 物联网 stm32
- Thumbnailator图片处理的常用方法解析介绍