热门文章 | 热门软件| 热门源码 | 热门电影 | 知识库 | 联系我们
软件 源码 教程 影视 健康 招聘
  HTML | JavaScript | ASP | PHP | JSP | NET | VB | VC | VF | Windows | Linux | Mysql | Mssql | Oracle | Struts 
当前位置: 创世纪计算机资源网 -> 文章频道 ->java 
站内搜索:
在JAVA EE环境下使用Kodo EJB(3)
作者:肖菁 来源:唯J族 整理日期:2007-8-7

import java.rmi.RemoteException;

import java.util.Collection;

import javax.ejb.EJBObject;

import org.vivianj.kodo.examples.beans.Book;

/**

* BookRemote 类提供 Session Bean 的 remote 接口

*/

public interface BookRemote extends EJBObject {

public Book getBookById(int id) throws RemoteException;

public void updateBook(Book book) throws RemoteException;

public void createBook(Book book) throws RemoteException;

public void deleteBook(Book book) throws RemoteException;

 

public Collection getBooks(String queryString) throws RemoteException;

 

}


编写 EJB 描述符文件

  为了将该 Session Bean 发布到 Weblogic9 中,们还需要提供两个配置文件: ejb-jar.xml 和 weblogic-ejb-jar.xml ,作者提供的演示实例中,这两个文件的内容如下,开发者可以根据自己的实际环境进行调整。


ejb-jar.xml

<?xml version="1.0" encoding="UTF-8"?>

<ejb-jar

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd"

version="2.1">

<display-name>Sample Kodo EJB</display-name>

<enterprise-beans>

<session>

<ejb-name>BookEJB</ejb-name>

<home>org.vivianj.kodo.examples.ejb.stateless.BookHome</home>

<remote>org.vivianj.kodo.examples.ejb.stateless.BookRemote</remote>

<ejb-class>org.vivianj.kodo.examples.ejb.stateless.BookBean</ejb-class>

<session-type>Stateless</session-type>

<transaction-type>Container</transaction-type>

</session>

</enterprise-beans>

<assembly-descriptor>

<container-transaction>

<method>

<ejb-name>BookEJB</ejb-name>

<method-name>*</method-name>

</method>

<trans-attribute>Required</trans-attribute>

</container-transaction>

</assembly-descriptor>

</ejb-jar>


weblogic-ejb-jar.xml

<?xml version="1.0"?>

<weblogic-ejb-jar

xmlns="http://www.bea.com/ns/weblogic/90" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-ejb-jar.xsd">

<weblogic-enterprise-bean>

<ejb-name>BookEJB</ejb-name>

<jndi-name>ejb/kodo/book</jndi-name>

</weblogic-enterprise-bean>

</weblogic-ejb-jar>


打包部署

  基于 Kodo EJB 开发的 EJB 打包和通常的 EJB 打包没有什么特别,部署过程也没有什么特别,比较简单的方式是使用配置工具创建新的域后,将打包好的 EJB jar 文件直接拷贝到域目录下的 autodeploy 目录下。

  完整地打包部署过程这里不再赘述,如果大家还不是十分熟悉,请大家参考 Weblogic Server 的在线帮助文档 http://edocs.bea.com/wls/docs91/index.html 。

  在这里要给大家介绍的是创建 Weblogic9 域后如何配置 Kodo 的两部分内容:

•  安装 Kodo

  Windows 平台下创建 Weblogic9 域后,可以在该域所在目录下找到 bin 目录下的 setDomainEnv.cmd 文件。打开该文件,在其中找到 set PRE_CLASSPATH= 这一行,这里假如地 jar 文件将被加入 Weblogic9 服务器的启动 CLASSPATH 中,因此们把 %KODO_HOME%/lib 目录下所有 jar 文件增加到 PRE_CLASSPATH 中。下面是作者的设置情况(没有全部填写完整,请开发者根据实际情况填写完整)。

set PRE_CLASSPATH= F:/OpenSource/kodo-4.0.0EA4/lib/kodo.jar; F:/OpenSource/kodo-4.0.0EA4/lib/jta-spec1_0_1.jar;F:/OpenSource/kodo-4.0.0EA4/lib/jca1.0.jar;F:/OpenSource/kodo-4.0.0EA4/lib/jdo-2.0.jar;

  可选择的,你可以将数据库服务器的驱动 jar 和其他应用中需要的 jar 文件放在这个变量下。

•  提供 Kodo 的 license

  Kodo 使用时需要提供 License 文件,在《 Kodo EJB :符合 EJB3 规范的持久层框架》一文中,们知道 Kodo 的 License 信息保存在应用的 META-INF 目录中的 kodo.xml 文件中,和应用一起使用,可是在 JAVA EE 环境下,们是将 kodo.persistence.EntityManagerFactoryImpl 的实例绑定到 JNDI 服务上,这个过程是服务器完成的,将 License 放在 EJB 包中并不能让服务器获取 License 的信息,查看 Kodo 的帮助文档,也没有看到相应的实施指南,不过作者经过测试后发现下面的方法可以完成这部分工作。

•  准备一个 license.jar 文件

  license.jar 中包含 META-INF 目录,该目录下包含有提供 Kodo License 的 kodo.xml 文件。 license.jar 文件的结构如下:

 

•  将该 jar 文件加入到 Weblogic 域的 CLASSPATH 中

  请参考前面一步“安装 Kodo ”的步骤将 license.jar 文件加入 Weblogic 域的 CLASSPATH 中。


测试

  现在,启动服务器,编写段简单的测试代码,看看 EJB 是否能够正常开始工作,下面这段代码可以用于测试从 EJB 中查找符合要求的 Book 对象并打印它的 name 属性。

/* 提供 Weblogic 服务器的信息 */

Hashtable<String,String> h = new Hashtable<String,String>();

h.put(Context.INITIAL_CONTEXT_FACTORY,

"weblogic.jndi.WLInitialContextFactory");

h.put(Context.PROVIDER_URL, "t3://localhost:7001");

 

/* 获取指定服务器的上下文路径 */

Context ctx = new InitialContext(h);

/* 从 JNDI 中获取 Session Bean 的 home 接口 */

Object o = ctx.lookup("ejb/kodo/book");

BookHome home = (BookHome) PortableRemoteObject.narrow(o,BookHome.class);

 

/* 获得 Session Bean 的 remote 接口 */

BookRemote remote = home.create();

 

/* 调用业务方法 */

System.out.println(remote.getBookById(1).name);

 

  执行客户端的时候,请将 %KODO_HOME%/lib 目录下的 jar 文件和 Weblogic 服务器安装目录下的 server/lib/weblogic.jar 文件都放在 CLASSPATH 中。


总结

  在 EJB3 的标准中, EJB3 应用既可以用于 Java SE 环境中,同时还可以用于 Java EE 环境下使用。 Kodo EJB 中提供了两种不同的方式支持在 Java EE 环境下使用: JCA 和 JNDI ,其中 JCA 方式比较简单,而 JNDI 方式则能够提供更好的灵活性。

  在本文中,作者以一个简单的例子说明了在 Weblogic9 中如何将 Kodo EJB 中 kodo.persistence.EntityManagerFactoryImpl 的实例绑定到 JNDI 上,通过 JNDI 访问 Kodo EJB 应用中的持久化类。

参考资源 :

EJB3 规范:

http://jcp.org/aboutJava/communityprocess/pfd/jsr220/index.html

JDO2 规范:

http://jcp.org/aboutJava/communityprocess/pfd/jsr243/index.html

Kodo 在线文档:

http://solarmetric.com/kodo/Documentation/4.0.0EA4/docs/full/html/index.html
 

 

[1]  [2]  [3]  
相关文章