Jbuilder5+Weblogic 6.1sp1 Entity Bean的制作
本文假设使用者已经正确的安装了jbuilder5和BAS4.5 。
安装Weblogic
本例中用的是Weblogic 6.1sp1,采用默认方式安装,安装目录为C:\bea 系统密码设为12345678 .
打开Jbuilder,在Tools菜单下选择Enterprise Setup,切换到Application Server面板下选择Weblogic 6.0把Weblogic installation directory 设置为C:/bea/wlserver6.1 ,BEA home directory 设置为 C:/bea ,然后点确定。在菜单Project下点击Default Project Properties,选择Servers面板,点击Application server有面的按钮---“….” ,双击应用服务器选择对话框中的Weblogic Application Server 6.0 修改 VM parameters 为:
-ms64m -mx64m -Djava.library.path=C:/bea/wlserver6.1/bin -Dbea.home=C:/bea
-Dweblogic.Domain=mydomain -Dweblogic.Name=myserver
-Djava.security.policy==C:/bea/wlserver6.1/lib/weblogic.policy -classpath C:/bea/wlserver6.1\lib\weblogic_sp.jar;C:/bea/wlserver6.1\lib\weblogic.jar;
-Dweblogic.management.password=12345678
点确定,关闭Jbuilder. WebLogic配置完成.
制作Entity Bean
l 在测试数据库中建表
首先在数据库中创建一个用来测试的表,数据库名test 表名 test 我们设置两个字段:
name
vrachar(15)
不允许为空
主键
addr
varchar(50)
允许为空
l 在Weblogic中建立连接池
1. 打开开始菜单中的执行Weblogic目录下的Start Default Server,输入密码”12345678”启动Weblogic。
2. 启动”Start Default Console”,输入用户名”system” 密码 “12345678” 进入控制台,在左面菜单中找到”JDBC”项,打开他你会发现子菜单中有一项为”Connection Pools”,右击该项,然后选 ”Configure a new JDBC Connection Pool...” 配置连接池
属性如下表
Name
myDB
URL
jdbc:sybase:Tds:172.16.4.200:5000/test
/172.16.4.200为数据库服务器地址,test为数据库名/
Driver Classname
com.sybase.jdbc2.jdbc.SybDriver
Properties(key=value):
user=sa
ACLName
Password
完成后点击Creat按钮。
3. 点击Targets标签,选中myserver,把它移入Chosen项,点击Apply
4. 关闭控制台和Weblogic服务。连接池已经建好了。
l 编码
1. 打开Jbuilder,新建一个名为hello项目,并在Required Libraries中添加上Weblogic 6.0。
2. 新建一个名为HelloWorld的Empty EJB Group。
3. 新建一个Enterpris JavaBean,选择HelloWorld组,点击下一步。package选择hello, Class name为“FistBean”,options选择Container managed persistence EJB 1.1 entity bean 然后点下一步。点击Finish。
4. 项目下共有3个文件分别是
First.java
package hello;
import java.rmi.*;
import javax.ejb.*;
/**
* Title:
* Description:
* Copyright:
* Company:
* @author 赵新鹏
* @version 1.0
*/
public interface First extends EJBObject {
public java.lang.String getAddr() throws RemoteException;
public java.lang.String getName() throws RemoteException;
public void setAddr(java.lang.String addr) throws RemoteException;
public void setName(java.lang.String name) throws RemoteException;
}
FistBean.java
package hello;
import java.rmi.*;
import javax.ejb.*;
/**
* Title:
* Description:
* Copyright:
* Company:
* @author 赵新鹏
* @version 1.0
*/
public class FirstBean implements EntityBean {
EntityContext entityContext;
public String name;
public String addr;
public String ejbCreate(String name,String addr) throws CreateException, RemoteException {
setName(name);
setAddr(addr);
return null;
}
public String ejbCreate(String name) throws CreateException, RemoteException {
return ejbCreate(name,null);
}
public void ejbPostCreate(String name,String addr) throws CreateException, RemoteException {
}
public void ejbPostCreate(String name) throws CreateException, RemoteException {
}
public void ejbLoad() throws RemoteException {
}
public void ejbStore() throws RemoteException {
}
public void ejbRemove() throws RemoveException, RemoteException {
}
public void ejbActivate() throws RemoteException {
}
public void ejbPassivate() throws RemoteException {
}
public void setEntityContext(EntityContext entityContext) throws RemoteException {
this.entityContext = entityContext;
}
public void unsetEntityContext() throws RemoteException {
entityContext = null;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
FirstHome.java
package hello;
import java.rmi.*;
import javax.ejb.*;
/**
* Title:
* Description:
* Copyright:
* Company:
* @author 赵新鹏
* @version 1.0
*/
public interface FirstHome extends EJBHome {
public First create(String name) throws CreateException, RemoteException;
public First create(String name,String addr) throws CreateException, RemoteException;
public Fist findByPrimaryKey(String primaryKey) throws RemoteException, FinderException;
}
5. 点击左面菜单中的HelloWorld.ejbgrp,然后双击 EJB Deployment Descriptor下的First, 点击右面窗体下面的Resource References标签,点击面板上的Add按钮,在跳出的输入对话框中输入”helloDB”点ok,选择type为java.sql.DataSource。选中helloDB,在下面JNDI Name框中输入myDB.
6. 然后点击标签Persistence,table(s)输入”test”,容器管理表内容如下
CMP
isPK
Field Type
Column Name(s)
Column Type
选中
选中
name
name
varchar(15)
选中
不选
addr
addr
varchar(50)
7. 右击EJB Deployment Descriptor下的JDBC DataSources 新建一个名为myDB的数据源,配置如下:
JNDI name
myDB
URL
jdbc:sybase:Tds:olap:5000/test
User name
sa
Password
Driver class name
com.sybase.jdbc2.jdbc.SybDriver
配置完成点击“Test Connection”如正确则显示
Attempting to connect to database...
Connection succeeded.
如果显示下面的信息
Attempting to connect to database...
Driver not on classpath.
Add the driver to the classpath using the Set Classpath command.
则表示数据库的jdbc驱动并不在classpath里,把数据库的驱动添加到项目的Required Libraries中去。
8. 点击EJB Deployment Descriptor,然后点击右面窗口中的 EJB DD Source ,然后选weblogic-cmp-rdbms-jar.xml找到<pool-name></pool-name> 修改为<pool-name>myDB</pool-name>.
9. 右击FirstHome.java 选择 Properties,然后选择Build面板---〉VisiBroker选中Java2IIOP Seting下的Generate IIOP点ok
10. 保存后按Ctrl+F9编译,应该没有问题。
11. 新建一个Test EJB Client 全部采用默认设置即可。
12. 再main方法里面找到 FistTestClient1 client = new FistTestClient1();
然后再后加入下面的代码:
First ff=client.create("testName","testAddr");
try {
System.out.println(ff.getName());
System.out.println(ff.getAddr());
}
catch (java.rmi.RemoteException ex) {
ex.printStackTrace();
}
然后,保存编译。
13. 右击HelloWorld.ejbgrp,选RUN, 完成后再选Deploy Options for “HelloWorld.jar”àDeploy
14. 完成后在浏览器中打开http://127.0.0.1:7001/console 用户名密码分别是 system和12345678 在控制台的左面菜单里打开EJB选中HelloWorld,然后再右面窗口中选Targets 把myserver变成Chosen .
15. 回到jbuilder中把运行中的Server停掉,然后再重新右击HelloWorld.ejbgrp,选RUN。
16. 右击FistTestClient1.java 点RUN,如显示下面的信息则表示运行成功
-- Initializing bean access.
-- Succeeded initializing bean access.
-- Execution time: 1663 ms.
-- Calling create(testName, testAddr)
-- Succeeded: create(testName, testAddr)
-- Execution time: 200 ms.
-- Return value from create(testName, testAddr): weblogic.rmi.cluster.EntityRemoteRef@10f - jvmid: '190 ...
testName
testAddr