Weblogic6.0与Jbuilder5的集成
进行EJB的开发调试
一、安装和配置
先安装Jbuilder5 Enterprise,然后安装Jbuilder5 Person, license key,确保Jbuilder5 Enterprise,能运行。
安装完Jbuilder5,BAS4.5和weblolgic6.0后,就可以开始配置了。
(1) 系统环境变量的修改:
把系统环境变量TMP、TEMP改为不带有空格的目录;
在JB5里菜单 Project --> Default Project Properties -->Paths 中把所有带空格的目录改为不带空格的目录;(为什么要这样设置呢?因为整合后的 weblogic 和JB5在开发过程中JB5会调用 weblogic 的包来制作EJB,而weblogic对那些有空格的不能很好地识别,工作时会出错,即是说weblogic要接触到的目录,目录名最好不是中文名、带空格。)
在使用JB5编辑时会发现光标与实际位置不对齐的问题, 其实只需要在Tools -->Editor Opntion -->Color中 把 Reserved Word 设置成不使用粗体和斜体就可以了。
(2) jbuilder5 的配置:
A、 Tools -->Configure Libraries 下确定有WebLogic6.0包,其中class中应该加入如下class和路径:
C:\bea\wlserver6.0\lib\ cr_wls60f.jar(是Weblogic6.0的crack包)
C:\bea\wlserver6.0\lib\weblogic_sp.jar
C:\bea\wlserver6.0\lib\weblogic.jar
B、Tools Menu -->Enterprise Setup -->CORBA
新增一个weblogic的项, 在Path for ORB tools下,加入Weblogic的主目录,在Library for projects下,加入 Weblogic6.0 的 库,具体方法是:点“..”,然后选择 Weblogic6.0包;在 compiler command 填上 idlj.exe ;在Command option for output directory 填上一个目录路径,但是要注意的是,不能是中文、带空格。
C、Tools Menu -->Enterprise Setup -->Application Server -->BAS4.5。
填上 AppServer 安装的目录。并选上 Enable Integrate复选框。
Tools Menu -->Enterprise Setup -->Application Server -->Weblogic6.0 填上 Weblogic 安装的目录和主目录。
(注意:不要选中Use external compiler复选框)
D、配置Default Project Properties
Project -->Default Project Properties -->Path -->Required Libraries 中选择Weblogic6.0;
Project -->Default Project Properties -->Build -->IDL 在 IDL compiler中选择Weblogic;
Project -->Default Project Properties -->Run -->Application选择main class 为 weblogic.Server (当你正确设定Weblogic6.0包后,可以找到该类。)
把Complile before running 和 Complile before debugging 的钩子去掉,否则即使你运行一次EJB客户端都好都会重新制作一次EJB包。
Project -->Default Project Properties -->Servers 点“..”这这里选择 Application Server ,当然又是选Weblogic6.0。 选中 Weblogic6.0后点 Edit…按钮:
² 在Require Libraries添加 Weblogic6.0包,把其他删除;同时在class 中删除所有的类的路径;
² 修改VM Parameters:如:
-ms64m -mx64m -Dweblogic.Domain=petstore -Dweblogic.Name=petstoreServer -Dbea.home=d:\bea -Dcloudscape.system.home=.\samples\eval\cloudscape\data -Djava.security.policy==d:\bea\wlserver6.0\lib\weblogic.policy
注意:参数为启动weblogic服务的启动参数,可以参照../config/mydomain/startWeblogic.cmd里的启动配置,调试过程中的大部分错误来至于此处的不合理配置,包括其中的domain和server名的大小写,都会造成出错。
² 如果需要调试JSP或Servlet,选中Application server is web server。
二、在 Jbuilder中创建Enterprise Bean
Each enterprise bean you create must belong to a JBuilder EJB group. An EJB group is a logical grouping of one or more beans that will be deployed in a single JAR file. It contains the information that is used to produce the deployment descriptor(s) for that JAR file. You can edit the content of an EJB group using the Deployment Descriptor editor.
l Creating an EJB group
两种方式:
File|New|Enterprise|Empty EJB Group…
File|New|Enterprise|EJB Group From Descriptors…
Notice:EJB Group类型选择ejbprgx(用XML作描述文件,适用于版本控制)
l Creating an Entity Enterprise Bean
两种方式:
² Enterprise JavaBean wizard
² The EJB Entity Bean Modeler
File|New|Enterprise|Enterprise JavaBean…
l 在EJB中增加属性及方法
选中EJB类文件,选择Bean Designer|property|Add Property
l Exposing Business methods through the remote interface
在远程接口中增加方法:
选中EJB类文件,选择Bean Designer|Mothods Tab,选择要暴露在远程接口中的方法(Checked or UnCheck)。
三、调试EJB
1、 创建Container Server
Run|Configurations…――》New…|Run
l Configuration name:ServerName;
l 正确设置EJB|VM parameters:(和Project Properties…àRunàEJB| VM parameters…);
l Application|Main class:weblogic.Server
2、 创建Cilent for Test
l 创建Client框架
NewàEnterprise|EJB Test Client…选择需要调试的EJB名称和Package,Class名称,ok按钮。
l 添加对EJB方法的引用
在ClientClass的构造函数的try块的结尾添加对EJB方法的引用。Eg:
package adtec.wei.changTest;
import adtec.wei.chang.*;
import javax.naming.*;
import java.util.Properties;
import javax.rmi.PortableRemoteObject;
public class changEJBTestClient {
private changEJBHome changEJBHomeObject = null;
/**Construct the EJB test client*/
public changEJBTestClient() {
try {
//get naming context
Context ctx = getInitialContext();
//look up jndi name
Object ref = ctx.lookup("changEJBHome");
//cast to Home interface
changEJBHomeObject = (changEJBHome) PortableRemoteObject.narrow(ref, changEJBHome.class);
int age = changEJBHomeObject.create().getAge();
System.out.println("My Age is : "+age);
}
catch(Exception e) {
e.printStackTrace();
}
}
private Context getInitialContext() throws Exception {
String url = "t3://100.100.100.69:7001";
String user = null;
String password = null;
Properties properties = null;
try {
properties = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
properties.put(Context.PROVIDER_URL, url);
if (user != null) {
properties.put(Context.SECURITY_PRINCIPAL, user);
properties.put(Context.SECURITY_CREDENTIALS, password == null ? "" : password);
}
return new InitialContext(properties);
}
catch(Exception e) {
System.out.println("Unable to connect to WebLogic server at " + url);
System.out.println("Please make sure that the server is running.");
throw e;
}
}
// Utility Methods
//--------------------------------------------------------------------
public changEJBHome getHome() {
return changEJBHomeObject;
}
/**Main method*/
public static void main(String[] args) {
changEJBTestClient client = new changEJBTestClient();
//int age = client.getHome().create().getAge();
// Use the getHome() method of the client object to call Home interface
// methods that will return a Remote interface reference. Then
// use that Remote interface reference to access the EJB.
}
}
l 创建Client运行环境
Run|Configurations…――》New…|Run
Application|Main class:wei.chang.song.changEJBTestClient
其中:Main Class为我们创建的客户端运行类。
3、 运行调试
l 选择快捷工具条上的Run Project按钮,点开下拉菜单,选择运行Container Server,启动EJB容器服务;如存在问题,请首先检查VM Parameters,确认无误。
l 同上的方式运行Client,客户端将返回正确的期望值。
4、 远程调用EJB
将EJB包文件,发布到Application Server上,确保Server已经启动。Client远程调用时,更改在getInitialContext函数中的URL,如Application Server在IP地址为100.100.100.69的机器上运行,则URL=t3://100.100.100.69:7001。
注:有关Jbuilder 5与Borland AppServer的集成应用,参见Jbuilder 5 Help,里面有较为详尽的介绍。