部署Java在服务器端的EJB组件的方法

网友投稿 212 2023-07-26


部署Java在服务器端的EJB组件的方法

什么是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

@Entity //表明这是一个实体Bean

@Table (name = "student" ) //和数据库表student 建立映射

public class StudentEntity implements Serializable {

private static final long serialVersionUID = 4002145187978562529L;

@Id // 表明是该实体的id

@GeneratedValue(strategy = GenerationType. AUTO ) //id生成策略

@Column(name = "id" )//对应student表id字段

private int id ;

@Column(name = "name" ) // 对应student表name字段

private String name;

public int getId() {

return id ;

}

public String getName() {

return name ;

}

public void setId(int id) {

this .id = id;

}

public void setName(String name) {

this .name = name;

}

}

建立操作接口:

public interface BaseOperation {

public List> findAll();

}

该接口只有一个方法,获取所有的学生

 

建立会话Bean

@Stateless //这是一个无状态Bean

@Remote (BaseOperation. class) //指明Bean的remote接口

public class StudentDaoBean implements BaseOperation {

// EntityManager是由EJB容器自动配置和管理的,unitName属性的值对应

persistence.xml 中< persistence-unit name = "MyEJBProject" transaction-type = "JTA" > persistence-unit > name的配置

@PersistenceContext(unitName = "MyEJBProject" )

private EntityManager em;

@SuppressWarnings( "unchecked" )

public List> findAll() {

System. out .println("查询开始..." );

List list = em.createQuery( " from StudentEntity ").getResultList();

if (list != null) {

Iterator it = list.iterator();

while (it.hasNext()) {

StudentEntity student = it.next();

System. out .println("学生id:" + student.getId());

System. out .println("学生名称:" + student.getName());

}

}

System. out .println("查询完毕...." );

return list;

}

}

3、数据源配置

这里需要注意下,在jboss6 和jboss7的配置是不同的。

jboss6和以前版本都是在deploy目录下 添加**-ds.xml,这里**表示任意一种数据库名称,如果是mysql,则是mysql-ds.xml文件。而在jboss7中,是不一样的。

将目录切换至Jboss 的安装目录,即%JBOSS_HOMEhttp://%下,进入modules/com目录,建立文件夹mysqldatabase,进入,建立mysql文件夹,进入,建立main文件夹。

在main目录下,建立module.xml文件,该配置文件内容为:

&gcAGNjilt;module name="javax.servlet.api" optional="true"/>

尤其这里需要注意的是,module 节点属性name的值,就是刚才咱们建立的文件夹的路径。resources表示mysql驱动的路径。意味着,需要将mysql的驱动放在main目录下。即main目录下包含两个文件,module.xml和数据库驱动文件。

 

在做完上一步后,切换到%JBOSS_HOME%\standalone\configuration目录下,

打开standalone.xml,搜索datasources,进行如下配置

jdbc:mysql://localhost:3306/student

mysql

root

1234

com.mysql.jdbc.Driver

com.mysql.jdbc.jdbc2.optional.MysqlXADataSource

jndi-name表示数据源jndi名称,connection-url表示连接的url字符串;这里默认使用3306端口,使用student库,用户名和密码即第一步配置的。module配置的即刚刚配置的module的路径。

 

jboss的相关配置已经完成,接着切换到刚新建的工程,其中有一个persistence.xml配置文件,该文件做如下配置,其中jta-data-source 就是上面配置的jndi-name.

< jta-data-source> java:jboss/KouMySQLDS

< properties>

< property name= "hibernate.hbm2ddl.auto" value ="validate" />http://

< property name= "hibernate.jdbc.fetch_size" value ="15" />

< property name= "hibernate.jdbc.batch_size" value ="10" />

< property name= "hibernate.show_sql" value ="true" />

< property name= "hibernate.format_sql" value ="true" > property>

properties>

到此为止,服务端代码和数据源配置已经完成。接下来需要做的就是如何部署代码以及如何在客户端调用该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,编写客户端方法了。

public static void main(String[] args) {

Properties props = new Properties();

props.setProperty(Context. URL_PKG_PREFIXES,"org.jboss.ejb.client.naming" );

try {

Context context = new InitialContext(props);

// 这里需要注意字符串的写法:ejbservice 表示ejb的包名,StudentDaoBean表示咱们实际调用的会话Bean,org.easynoder.ejb2.dao.BaseOperation表示 对应的接口

BaseOperation op = (BaseOperation) context

.lookup("ejb:/ejbservice//StudentDaoBean!org.easynoder.ejb2.dao.BaseOperation" );

op.findAll();

} catch (NamingException e) {

e.printStackTrace();

}

}

运行这段代码,可以成功的查询到数据库的数据啦。

 

至此,EJB就部署成功啦。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:API接口并发测试:如何测试API接口的最大并发能力?
下一篇:保护你的应用程序:深入了解API接口安全测试
相关文章

 发表评论

暂时没有评论,来抢沙发吧~