博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Jboss7 部署EJB3 简明教程
阅读量:6223 次
发布时间:2019-06-21

本文共 7056 字,大约阅读时间需要 23 分钟。

什么是EJB?
EJB 是 Java 企业Bean, 是JavaEE服务端 企业组件模型,它的设计目标与核心应用是部署分布式应用程序。话不多说,直接看如何在本机部署EJB3。
 
部署环境:
操作系统:Windows 8.1
EJB容器:Jboss 7.1
DB: MySQL 5.6.10
IDE: MyEclipse 10
JDK: 1.6
 
1、创建数据库、表
由于在此过程中,需要和数据库通信,需要首先创建数据库表。
创建数据库: create database student;  //创建数据库 student
创建表: create table student(   //创建表student 和 数据库同名
`id` integer(11) not null, 
`name` varchar2(20) default null,
primary key (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=latin1
插入一条数据:
insert into student values(1,'easynoder');
commit;
给本地的root用户(生产环境请勿这样做)指定访问权限。
grant all privileges  on *.* to root@localhost indentified by "1234"
 
通过以上步骤,需要的数据库表已建立好。可通过root用户访问所有数据。
 
2、编写实体Bean、用户操作接口和会话Bean
 
建立EJB工程,名为
MyEJBProject。该工程META-INFO目录下包含一个文件persistence.xml文件。该文件用来配置数据源,稍后进行配置。
接着建立实体Bean
1 @Entity  //表明这是一个实体Bean 2 @Table (name = "student" ) //和数据库表student 建立映射 3 public class StudentEntity implements Serializable { 4  5     private static final long serialVersionUID = 4002145187978562529L; 6  7     @Id // 表明是该实体的id 8     @GeneratedValue(strategy = GenerationType. AUTO ) //id生成策略 9     @Column(name = "id" )//对应student表id字段10     private int id ; 11 12     @Column(name = "name" ) // 对应student表name字段13     private String name;14 15     public int getId() {16         return id ;17     }18 19     public String getName() {20         return name ;21     }22 23     public void setId(int id) {24         this .id = id;25     }26 27     public void setName(String name) {28         this .name = name;29     }30 31 }
View Code
建立操作接口:
1 public interface BaseOperation {2 3     public List
findAll();4 }
View Code
该接口只有一个方法,获取所有的学生
 
建立会话Bean
1 @Stateless //这是一个无状态Bean 2 @Remote (BaseOperation. class) //指明Bean的remote接口 3 public class StudentDaoBean implements BaseOperation { 4       5      // EntityManager是由EJB容器自动配置和管理的,unitName属性的值对应 6 persistence.xml 中< persistence-unit name = "MyEJBProject" transaction-type = "JTA" >
name的配置 7 @PersistenceContext(unitName = "MyEJBProject" ) 8 private EntityManager em; 9 10 @SuppressWarnings( "unchecked" )11 public List
findAll() {12 System. out .println("查询开始..." );13 List
list = em.createQuery( " from StudentEntity ").getResultList();14 if (list != null) {15 Iterator
it = list.iterator();16 while (it.hasNext()) {17 StudentEntity student = it.next();18 System. out .println("学生id:" + student.getId());19 System. out .println("学生名称:" + student.getName());20 }21 }22 System. out .println("查询完毕...." );23 return list;24 }25 26 }
View Code
 
3、数据源配置
这里需要注意下,在jboss6 和jboss7的配置是不同的。
jboss6和以前版本都是在deploy目录下 添加**-ds.xml,这里**表示任意一种数据库名称,如果是mysql,则是mysql-ds.xml文件。而在jboss7中,是不一样的。
将目录切换至Jboss 的安装目录,即%JBOSS_HOME%下,进入modules/com目录,建立文件夹mysqldatabase,进入,建立mysql文件夹,进入,建立main文件夹。
在main目录下,建立module.xml文件,该配置文件内容为:
 
1 
2
3
4
5
6
7
8
9
10
11
View Code
尤其这里需要注意的是,module 节点属性name的值,就是刚才咱们建立的文件夹的路径。resources表示mysql驱动的路径。意味着,需要将mysql的驱动放在main目录下。即main目录下包含两个文件,module.xml和数据库驱动文件。
 
在做完上一步后,切换到%JBOSS_HOME%\standalone\configuration目录下,
打开standalone.xml,搜索datasources,进行如下配置
 
1 
2
3
jdbc:mysql://localhost:3306/student
4
mysql
5
6
root
7
1234
8
9
10
11
12
com.mysql.jdbc.Driver
13
com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
14
15
16
View Code
jndi-name表示数据源jndi名称,connection-url表示连接的url字符串;这里默认使用3306端口,使用student库,用户名和密码即第一步配置的。module配置的即刚刚配置的module的路径。
 
jboss的相关配置已经完成,接着切换到刚新建的工程,其中有一个persistence.xml配置文件,该文件做如下配置,其中jta-data-source 就是上面配置的jndi-name.
 
1 < jta-data-source> java:jboss/KouMySQLDS 2            < properties>3                < property name= "hibernate.hbm2ddl.auto" value ="validate" />4                < property name= "hibernate.jdbc.fetch_size" value ="15" />5                < property name= "hibernate.jdbc.batch_size" value ="10" />6                < property name= "hibernate.show_sql" value ="true" />7                < property name= "hibernate.format_sql" value ="true" >
8
View Code
到此为止,服务端代码和数据源配置已经完成。接下来需要做的就是如何部署代码以及如何在客户端调用该EJB服务。
 
4、部署EJB服务。
将之前在工程中写的所有代码打成jar包,命名为ejbservice.jar。同时,只将实体Bean和接口打包成jar包,命名为ebjinterface.jar,这个jar将来用于客户端调用使用。
将ejbservice.jar放入%JBOSS_HOME%\standalone\deployments目录下。在jboss启动时,会自动扫描该目录。然后部署该jar。
 
ok,我们将jboss配置到MyEclipse下,在MyEclipse中启动Jboss,观察控制台的输出。
如果出现了 Deployed "ejbservice.jar" 这个日志,说明ejb就部署成功了。
 
5、客户端如何调用呢?
客户端调用需要两个必备条件:
引入jboss-ejb-client.properties配置、 jboss-client.jar和ejbinterface.jar。其中jboss-client.jar 位于jboss bin/client目录下。ejbinterface.jar是我们刚刚创建的客户端需要使用的接口jar包。
jboss-ejb-client.properties配置如下:
endpoint.name= client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED= false
remote.connections= default
remote.connection.default.host= localhost
remote.connection.default.port= 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS= false
remote.connection.default.username= yourUsername
remote.connection.default.password= yourPassword
 
有了这两个条件,就可以安心的建立个测试类EJBTest.java,编写客户端方法了。
 
1      public static void main(String[] args) { 2  3         Properties props = new Properties(); 4         props.setProperty(Context. URL_PKG_PREFIXES,"org.jboss.ejb.client.naming" ); 5         try { 6             Context context = new InitialContext(props); 7             // 这里需要注意字符串的写法:ejbservice 表示ejb的包名,StudentDaoBean表示咱们实际调用的会话Bean,org.easynoder.ejb2.dao.BaseOperation表示 对应的接口 8             BaseOperation op = (BaseOperation) context 9                     .lookup("ejb:/ejbservice//StudentDaoBean!org.easynoder.ejb2.dao.BaseOperation" );10             op.findAll();11         } catch (NamingException e) {12             e.printStackTrace();13         }14     }
View Code
运行这段代码,可以成功的查询到数据库的数据啦。
 
至此,EJB就部署成功啦。
 
 

转载于:https://www.cnblogs.com/benshan/p/4376823.html

你可能感兴趣的文章
Yii用ajax实现无刷新检索更新CListView数据
查看>>
JDBC的事务
查看>>
Io流的概述
查看>>
App 卸载记录
查看>>
JavaScript变量和作用域
查看>>
开源SIP服务器加密软件NethidPro升级
查看>>
百度页面分享插件源代码
查看>>
《别做正常的傻瓜》的一些读书心得
查看>>
作业:实现简单的shell sed替换功能和修改haproxy配置文件
查看>>
spring配置多数据源问题
查看>>
Altium 拼板方法以及 注意的 地方
查看>>
简明Linux命令行笔记:tail
查看>>
PMP考试的过与只是
查看>>
java 监控 收集资料3(收集中)
查看>>
实例演示如何使用AgileEAS.NET SOA平台工作流进行业务流程自定义
查看>>
Spring Cloud Alibaba迁移指南(二):零代码替换 Eureka
查看>>
从入门到求职,成为数据科学家的终极指南
查看>>
聊聊BOM的那些事
查看>>
微软为无服务器架构引入新API管理消费层
查看>>
Apache Pulsar中的地域复制,第1篇:概念和功能
查看>>