|
|
以上内容在JBOSS配置了一个mysql数据库连接池,mySQL数据库在10.0.0.18这台服务器上,连接端口为默认的3306端口,并定义连接到的数据库为Test这个库,同时我们指定在EJB中可以通过jndi名为MySql来访问并获得连接。
3、 好了,前期工作己经做好,下面我们来编写我们CMP相关的类和接口,首先我们还是要建立我们的开发目录,我们这里的环境是这样的(具体请见前面几节说明):我们的JBOSS装在C:JBOSS目录,我们在它下面建了一个myproject目录用于放置我们的所有的开发项目。这里,我们在myproject下面建一个ProductCMP目录用于放我们这次开发的CMP。然后同前面一样,我们在ProductCMP目录下建一系列的目录结构分别用于放我们的源程序及发布部署文件。建好后的目录结构如下图1所示:
图1
其中,我们的所有的源程序均放在src目录中,product.jar目录放我们的部署到JBOSS容器中的CMP类,client目录放置我们的客户端测试程序相关的类。其中,我们的所有EJB类均放入product.ejb包中。所以建了两层目录。
4、 好了,目录建好了,我们下面开始编写我们的CMP各种类和接口,首先编写Remote接口,它放入src目录中,代码如下:
//Product.java
package product.ejb;
import javax.ejb.*;
import java.rmi.RemoteException;
public interface Product extends EJBObject{
// 开始 get/set 方法,这里的 getter/setter 方法名称由 get/set 开头,后面紧跟着 CMP
// 需管理域的名字,并且把此名字第一个字母大写,这些 CMP 管理的域在 ejb-jar.xml 中声明
// 这些方法此处要暴露给远程调用
public String getName() throws RemoteException;
public void setName(String name) throws RemoteException;
public String getDescription() throws RemoteException;
public void setDescription(String description) throws RemoteException;
public double getBasePrice() throws RemoteException;
public void setBasePrice(double price) throws RemoteException;
public String getProductID() throws RemoteException;
public void setProductID(String productID) throws RemoteException;
}
5、 接着在src目录编写Home接口,内容如下:
//ProductHome.java
package product.ejb;
import javax.ejb.*;
import java.rmi.RemoteException;
import java.util.Collection;
public interface ProductHome extends EJBHome{
Product create(String productID,String name,String description,double basePrice) throws
CreateException,RemoteException;
public Product findByPrimaryKey(ProductPK key) throws FinderException,RemoteException;
public Collection findByName(String name) throws FinderException,RemoteException;
public Collection findByDescription(String description) throws FinderException,RemoteException;
public Collection findByBasePrice(double basePrice) throws FinderException,RemoteException;
public Collection findExpensiveProducts(double minPrice) throws FinderException,RemoteException;
public Collection findCheapProducts(double maxPrice) throws FinderException,RemoteException;
public Collection findAllProducts() throws FinderException,RemoteException;
}
在上面的Home接口中,我们声明了一个Create方法,它和我们下面要写的Bean类中的ejbCreate方法对应,只不过这里它返回的是一个Product对象。在Home接口中我们还定义了几个查找方法。查找方法返回的大多都是Collection集合,因为,查询的结果可以是多个。这些查找方法我们将在ejb-jar.xml中用EJB-QL描述。
6、 编写主键类,这个和BMP相同。这的内容如下:
//ProductPK.java
package product.ejb;
import java.io.Serializable;
public class ProductPK implements java.io.Serializable{
public String productID;
public ProductPK(String productID){
this.productID = productID;
}
public ProductPK(){
}
public String toString(){
return productID.toString();
}
public int hashCode(){
return productID.hashCode();
}
public boolean equals(Object prod){
return ((ProductPK)prod).productID.equals(productID);
}
}
7、 接着就要编写我们的Bean类,这个类由于在它其中需要声明abstract型的getter/setter方法,所以它本身也需要声明为Abstract类型的。同时,它没有了像BMP那样的实现由EJB容器调用的方法。它的代码如下:
package product.ejb;
import javax.ejb.*;
//此处注意要声明为抽象类型的
public abstract class ProductBean
上一页 [1] [2] [3] [4] [5] [6] 下一页
网友评论:(评论内容只代表网友观点,与本站立场无关!) |
阅读排行
|