您现在的位置: 中国教师站 >> 教师关注 >> 电脑技术 >> 编程技术 >> Java >> 正文

Google
win2k环境下基于JBOSS的J2EE开发实践----之五:CMP实体
作者:Siny 文章来源:中国教师站cn-teacher 点击数: 更新时间:2007-4-22 13:21:33
erallconfstandardjbosscmp-jdbc.xml文件中 -- >
<datasource-mapping>mySQL</datasource-mapping>
<!—指出如果容器在连接数据库时,发现没有数据表,是否根据ejb-jar.xml中和下面定义的CMP域来创建一个数据库表-- >
<create-table>true</create-table>
<!—下面一句指出如果数据库中表己存在,是否删除它-- >
<remove-table>false</remove-table>
<pk-constraint>true</pk-constraint> <!—主键约束 -- >
<preferred-relation-mapping>foreign-key</preferred-relation-mapping>
</defaults>
<enterprise-beans>
<entity>
<!—实体Bean的jndi名字,必须和ejb-jar.xml中的ejb-name对应-->
<ejb-name>Product</ejb-name>
   <!—和数据库中哪个表对应-- >
<table-name>ProductBean</table-name>
<! – 下面定义CMP Bean中由容器维护的域的定义及其数据类型的定义-- >
<!— 注意这些域的名称的写法要和 getter/setter 方法中一致 -- >
<cmp-field>
<field-name>name</field-name>
<column-name>name</column-name>
<jdbc-type>VARCHAR</jdbc-type>
<sql-type>VARCHAR(60)</sql-type>
</cmp-field>
<cmp-field>
<field-name>productID</field-name>
<column-name>productID</column-name>
<jdbc-type>VARCHAR</jdbc-type>
<sql-type>VARCHAR(30)</sql-type>
</cmp-field>
<cmp-field>
<field-name>description</field-name>
<column-name>description</column-name>
<jdbc-type>VARCHAR</jdbc-type>
<sql-type>VARCHAR(120)</sql-type>
</cmp-field>
<cmp-field>
<field-name>basePrice</field-name>
<column-name>basePrice</column-name>
<jdbc-type>DOUBLE</jdbc-type>
<sql-type>DOUBLE</sql-type>
</cmp-field>
</entity>
</enterprise-beans>
</jbosscmp-jdbc>

到此,我们己经编写了CMP所需的全部java类和部署描述符文件,共有三个描述符文件,可以说BMP中在Bean类中实现的部分现在大部分都转移到CMP的部署描述符文件中了。这三个描述符文件分别叫ejb-jar.xml、jboss-service.xml、和jbosscmp-jdbc.xml文件,名称必须对应。且它们全部都放在MEAT-INF目录下。

四、 部署和测试CMP

编写好了CMP所需的文件后,下面我们来在JBOSS中编译、部署并测试这个CMP实体Bean。
首先、我们来编写测试此CMP的客户端程序,进入SRC目录,新建一个ProductClient.java,内容如下:


//ProductClient.java客户端测试程序
package product.ejb;
import javax.ejb.*;
import javax.naming.*;
import java.rmi.*;
import javax.rmi.PortableRemoteObject;
import java.util.*;
import java.io.*;
//CMP客户端
public class ProductClient{
public static void main(String[] args) throws Exception{
ProductHome productHome = null;
try{
Properties env = new Properties();
//config.properties文件应该放在和hello包目录所在目录的同级目录中。即它和hello文件夹同在一个文件夹中。
env.load(new FileInputStream("config.properties"));
// Get a naming context
System.out.println(env);
Context ctx = new javax.naming.InitialContext(env);
System.out.println("Got context");
//Search from jndi tree to get Home Object
productHome = (ProductHome)PortableRemoteObject.narrow(ctx.lookup("Product"),ProductHome.class);
//创建一些对象
productHome.create("123-456-7890","p5-350","350Mhz Pentium",200);
productHome.create("123-456-7891","p5-400","400Mhz Pentium",300);
Product thisProduct = productHome.create("123-456-7892","p5-450","450Mhz Pentium",400);
productHome.create("123-456-7893","SD-64","64MB SDRAM",50);
productHome.create("123-456-7894","SD-128","128MB SDRAM",100);
productHome.create("123-456-7895","SD-256","256MB SDRAM",200);

//输出产品的信息,引用创建时产生的thisProduct对象
System.out.prin

上一页  [1] [2] [3] [4] [5] [6] 下一页

相关专题:
 
 网友评论:(评论内容只代表网友观点,与本站立场无关!)
GOOGLE广告

阅读排行

| 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 |
中国教师站

中国教师站 版权所有 Copyright © 2006-2020 All Rights Reserved 站长:Sina & Siny
[备用域名:www.JXZYW.Com] 有事请留言有事请留言
【实力成就精品 诚信呵护品牌】

信息产业部备案
苏ICP备06018635号