1、WebLogic81学习笔记BEA WebLogic Workshop 8.1学习笔记之一准备篇前言本文作者用BEA WebLogic Workshop做了一个简单的EJB的开发的例子,并对该例子做了一些Web应用方面的拓展,力图通过这些使用流程教会读者能够上手使用BEA WebLogic Workshop。 WebLogic Workshop 8.1产品概述BEA WebLogic Workshop是一个统一、简化、可扩展的开发环境,能够使所有开发人员(不仅仅是J2EE专家)都能够在 BEA WebLogic Platform 8.1 上,迅速构建、测试和部署面向服务的企业级应用。WebLo
2、gic Workshop 8.1 的独特性表现在: 统一性- 它是构建所有平台应用的一个IDE,一个框架和一种面向服务的方法,无论是构建 Web 应用、Web 服务,还是构建门户和集成应用全都适用。 简便性- 它使所有的开发人员都能够使用 J2EE,而且变得更富有效率。即使是没有 J2EE 或面向对象编程经验的大量主流业务应用开发人员也是如此。 可扩展性- 它提供了 Java 控件,也就是面向服务的组件,使 IT 能方便地连接、使用和重复使用任何 IT 系统或平台项目上的应用。最终结果:WebLogic Workshop 8.1 使 IT 效率空前提高,加快了 IT 价值的实现。IT 开发人员
3、因此可以从事任何 IT 项目的开发,并充分发挥出 WebLogic Platform 8.1 中 IT 资产的作用。初始配置BEA WebLogic Workshop 8.1是BEA WebLogic Platform8.1产品的一个组成部分:所以安装完Platform后,你就可以使用Workshop了。你可以从BEA站点上下载相应平台的在线安装包或整个安装包,WebLogic Platform 8.1的下载地址是:产品安装完成后,可以运行配置向导 Configuration Wizard 进行相关配置要开发或运行WebLogic Platform的应用,必须创建一个相关的domain,我们选
4、择建立一个basic WebLogic Platform domain,这是最全的domain,其支持WebLogic Workshop运行时框架,Portal应用,Integration应用,所以注意配置到这个页面中做如下选择:通用数据库客户端工具( DbVisualizer) 附带再介绍一个工具:通用数据库客户端工具( DbVisualizer)。用该工具能够方便的连接各类通用的数据库,使用起来只需要简单地配置一下,比如我们要连POINTBASE,只需要改动一下启动脚本C:beaweblogic81commonevaldbvisualizer run.bat,把POINTBASE Driv
5、er加到classpath中,所以在run.dat脚本中,加入如下语句:set _CLASSPATH=%CLASSPATH%rem # added by lw #SET WL_HOME=C:beaweblogic81SET POINTBASE_HOME=%WL_HOME%commonevalpointbaseSET POINTBASE_CLASSPATH=%POINTBASE_HOME%libpbserver44.jar;%POINTBASE_HOME%libpbclient44.jarset CLASSPATH=%CLASSPATH%;%POINTBASE_CLASSPATH%rem # e
6、nd #然后运行DbVisualizer我们用这个工具Create一个表CREATE TABLE LWTEST.SIMPLE_EX (company_id VARCHAR(20) CONSTRAINT product_category_pk PRIMARY KEY,company_name VARCHAR(40) NOT NULLBEA WebLogic Workshop使用笔记之二 EJB开发篇续上篇,通过本文的学习,读者将能掌握:1 会使用WebLogic Workshop创建EJB应用;2 学会使用EJB Control,用WebLogic Workshop快速对相应EJB进行测试; 类
7、似的在Workshop上开发EJB的文章在dev2dev站点上有一篇,用WebLogic Workshop开发EJB,所以在本文中与其相同的内容部分我就不再多讲。用WebLogic Workshop创建一个应用(application)在这里读者一定要明白Workshop中应用(Application)和项目(Project)两个模型的意义及它们间的关系应用(Application)模型是: 作为一个单元部署到服务器的资源与组件的集合 在Workshop IDE中操作的最顶层工作单位 一个J2EE Enterprise Application (EAR) 一个应用(Application)可包
8、含一或多个项目(Project),libraries及security mappings 上图表明的意思是,建立的这个应用类型是Portal应用,其支持Portal应用,指定的这个应用将部署在我们刚建的那个Platform类型的domain上(mdomain)。建立EJB项目(Project)项目(Project)模型定义了开发者如何: 组织应用源文件 使用组件组装应用 贯通编码、编译、调试周期 打包用于部署的应用 项目类型有:Project类型简述WebWeb应用类型Web ServiceWeb Service应用类型Control用于构造和打包可在其他Projects的components
9、中使用的控件EJB支持创建及部署新的EJBJava用于开发或汇总通用JAVA代码,而这些代码并不属于像webservices, controls 或 EJBs这样的实体Schema提供方便地自动存取BEA的XMLBeans的功能Portal类似于一个WEB Project,但提供Portal功能Datasync用于开发和维护通用的门户服务,以方便应用及门户的个性化开发使用Process包含业务流程文件、控制文件及数据转换等文件我们继续创建EJB Project,右键点击MyEJBApp,然后选择new一个project,在弹出对话框中选中Project类型为EJB项目,再点击create创建该
10、EJB Project。创建实体bean右键点CompanyEJB项目,new一个Entity bean(Entity bean from database table)随后选择Data Source,选择我们的表SIMPLE_EX 下图是我们通过wizard创建好的Entity Bean雏形 这个雏形中,只有一个简单的create方法,我们可以根据需要,为这个Entity Bean再定制加入create方法、find方法等等,只需要再Design View中点击鼠标右键,进行选择添加。 添加EJBCreate方法如上图,先右键点击原EJBCreate()方法,将其删除,然后在Design v
11、iew面板上点击鼠标右键选择Add EJBCreate,在接下来弹出的窗口中,把两个field都给选上,再点击ok。添加Find All方法如上图,选择Add Finder添加Find by方法方法如上,只不过在Add Finder菜单中填上:Method Signature:Simple_ex finderByNO(java.lang.String sCOMPANY_ID)EJB-QL: SELECT OBJECT(o) from Simple_exBean as o where panyId LIKE ?1同样加上Method Signature:Simple_ex finderByCom
12、panyName(java.lang.String sCOMPANY_NAME)EJB-QL: SELECT OBJECT(o) from Simple_exBean as o where panyName LIKE ?1对EJB的一些属性可直接在属性编辑器中进行设置,比如ejb-name,是否是local的EJB等等。比如需要在下图中在把table-nameSIMPLE_EX改成LWTEST. SIMPLE_EX。测试EJB1 右键点击MyEJBApp应用,建立一个测试用的Web Project,名为EJBTest;2 在这个EJBTest下新建一个目录TestEJB3 右键点击这个目录,n
13、ew一个Java Control,其类型选择为EJB Control上图中4个步骤完成后,将生成一个TEJB.jcx控件,然后再鼠标右键点击这个EJB控件,选择Create Test JWS File,用Web Service进行这个EJB控件的测试 双击新生成的TEJBTest.jws文件,将TEJBTest中的两个方法删除, 从Data Palette中展开tEJB控件,从控件中选择我们想要测试的方法,拖拽到Design View中 因为create方法返回的是SIMPLEEJB.Simple_ex,不能被Web Service测试页面直接显示,故系统会报如下提示信息。因而我们需要对加入的
14、这个create方法做下处理,点击create()方法,进入Source View,对其返回值做处理:public String create(java.lang.String arg0, java.lang.String arg1) throws javax.ejb.CreateExceptionreturn (tEJB.create(arg0,arg1).getCompanyName(); 同理再拖拽入finderByCompanyName(),finderByNO()方法,并对其返回值做相应的修改public String finderByCompanyName(java.lang.St
15、ring arg0) throws javax.ejb.FinderExceptionString sInput=%+arg0+%;return tEJB.finderByCompanyName(sInput).getCompanyName();public String finderByNO(java.lang.String arg0) throws javax.ejb.FinderExceptionString sInput=%+arg0+%;return tEJB.finderByNO(sInput).getCompanyName();点击Workshop工具栏上的运行按钮 ,进行测试可
16、以用这个测试窗口在Create部门,输入相应的值,生成数据项,比如string arg0: 1string arg1: BEA然后可再测试finderby方法测试结果如下: 小结本文给读者简述了在WebLogic Workshop上进行EJB的开发、测试方法,以期使读者通过对本文的学习能够快速入门WebLogic Workshop的开发。在下一篇使用笔记中,作者将给大家介绍如何用Workshop开发一个调用该EJB的简单的Pageflow,敬请大家关注。BEA WebLogic Workshop使用笔记之三 Web应用篇续EJB开发篇,通过本文的学习,读者将能领会在WebLogic Works
17、hop上的Pageflow应用开发。本文,我们需要建立一个简单的Web应用,提供相应的友好界面来调用刚开发完毕EJB组件,在这个web应用中我们要使用到Pageflow。 什么是 Page FlowPage Flow是一个基于Struts1.1的web应用编程模型,替代了早期Portal产品中的web flow,不再属于Portal专有,用以实现web应用中用户界面、业务逻辑、导航控制的分离,并且大大简化了WEB应用的开发过程,提高了开发效率为什么要使用 Page Flow?企业的WEB应用经常由成千上万的页面组成,维护这样一个网站通常是一件复杂、枯燥、耗时的任务。Page Flow 提供了一
18、个易使用的框架结构来建立动态、复杂的WEB应用;并且通过用户界面、业务逻辑、导航控制的分离,避免了Web开发中经常出现的一些问题,提高了业务逻辑代码的可重用性。Page Flow 的编程模型沿用了 Struts Model 2 的MVC模型模型(Model M) 组成部分该部分可以由Custom Control文件(*.jcs), Java Control文件(*.jcx), Web Service文件(*.jws)或Process文件(*.jpd)等文件装配而成。视图(View V)由*.jsp等文件来实现控制器(Controller C)由Java Page Flow文件(*.jpf )来
19、实现关于Page flow的更多信息请参考dev2dev中文站点上的这篇文档:BEA Workshop8.1之Java Page Flow介绍 by Doug Dew,Java Page Flow项目经理建立Pageflow我们在上一章中建好的EJBTest项目上继续Web应用的开发,右键点击EJBTest项目,选择new一个Page Flow在Design View中将index.jsp页面删除,只留下Begin按钮,然后将myControl控件的finderByCompanyName方法拓展到Design View中,它将在这个Pageflow中成为一个带Form Bean的actionf
20、inderByCompanyName, 同时这个Form Bean也显示在Form Beans选项版中(Form Bean是Page Flow中的数据的承载体,其一个作用是用于页面中的form提交时存储form中的数据,其实质是一个Java Bean)右键点击刚生成的action,选择Generate Input Page选项,Workshop将根据你action的Form Bean的参数,自动生成一个输入页面finderByCompanyNamePage.jsp。我们调整一下它们的位置,并且从Begin节点拉一条连接线,使得Begin开始后的Page Flow走到finderByCompan
21、yNamePage.jsp页面。 这个Page Flow开始后将走到一个输入页面finderByCompanyNamePage.jsp,让你输入finderByCompanyName需要的数据,获得数据后,将到finderByCompanyNameaction中处理。EJB控件myControl的finderByCompanyName()方法返回的是一个EJB对象的引用,我们对其做部分处理,使得它能返回Company中的全部信息(NO及COMPANY_NAME),在PageFlow中传递数据的方法有很多中比如用Request、Session、FormBean等等进行数据的传递,在本例中我们为这
22、个Pageflow增加两个Public的String型变量 sNO、sCompanyName用来承载COMPANY信息。关于PageFlow的传值的更多相关信息请读者阅读相关文档: dev2dev中文站点的 数据绑定101 这篇文档 Workshop联机帮助文档 Developing Web Applications Guide to Building Page Flows Using Data Binding in Page Flows部分 (在Workshop中按F1出联机文档,或是直接访问 然后在Pageflow中,双击finderByCompanyName节点,进入Source Vie
23、w编辑器,更改finderByCompanyName()方法,将myControl.finderByCompanyName()方法的返回的Company NO和Company Name赋值给相应的变量。public class InvokeEJBPFController extends PageFlowController/* This is the control used to generate this pageflow* common:control*/private TEJB myControl;public String sNO;public String sCompanyName
24、;./* jpf:action* jpf:forward name=success path=showCompanyInfo.jsp*/protected Forward finderByCompanyName(FinderByCompanyNameForm form)SIMPLEEJB.Simple_ex sBean;try sBean=myControl.finderByCompanyName(%+form.getArg0()+%); this.sNO= sBean.getCompanyId(); this.sCompanyName=sBean.getCompanyName(); catc
25、h(Throwable t) t.printStackTrace();return new Forward( success );finderByCompanyNameaction处理完后我们需要一个页面把这个处理结果显示出来,所以,从Pallete面板中拖拽出一个page到设计视图中,并命名为showCompanyInfo.jsp双击这个showCompanyInfo.jsp页面,进入这个页面的编辑界面,我们需要对其加入部分定制代码段来显示出finderByCompanyName处理的结果。1. 删除默认jsp页面上的文字;2. 从选项板中拖拽表格到空白的jsp页面上,设置表格属性为4行2列
26、;3. 使用表导航器合并表头,和表尾;4. 往表的6个表格中拖拽入Label标签 5. 对上诉table中的label值在属性编辑器中设定,由上至下,由左至右设定成:Company InfoNO:pageFlow.sNOCompany Name:pageFlow.sCompanyNamepageFlow.sNO是一段表达式,pageFlow代表了对这个jsp所处的Page Flow对象的引用,sNO是这个对象的一个属性值,这对大括号的作用的是表明pageFlow.sNO应当做为一个表达式来处理,而不是做为一个值来被直接显示。6. 对这个JSP页面加上返回连接,使得点击后它能返回主页面,通过拖拽
27、的方式从选项板中拖拽Anchor标签到设计视图中,如下图设置属性,定位方式选中调用某个操作,文本属性是这个标签的显示文字return,操作属性的意思是这个Anchor标签会调用Page Flow中的那个操作,我们选择begin,表明调用Page Flow开始节点。 7. 点击保存,回到Page Flow页面,我们运行这个Page Flow进行测试。 Page Flow的相互调用在Workshop中开发Page Flow的相互调用也很简单,在接下来的创建Create Company Page Flow的过程中将为读者演示Page Flow调用的开发。1. 右键点击EJBTest项目,选择新建一个
28、页面流,然后起名为CreateCompany,删除无用的index.jsp,只留下Begin节点,然后将TEJB.jcx控件从应用程序面板中拖拽到Design View中2. 从数据选项板中拖拽tEJB控件的create方法到设计视图中来,它将生成一个createaction,再右键点击这个createaction,选择生成输入页,入下图 3. 将begin节点和新生成的createPage.jsp页面间联线关联起来。然后再把我们刚建立好的Page Flow InvokeEJBPFController.jpf给拖拽进这个Page Flow中来,如下图 4. 右键点击新拖拽进入的InvokeEJ
29、BPF节点,选择生成调用操作,再从create节点和createPage.jsp页面节点上拉出连线链接到新的show_invokeEJBPF节点上,如下图5. createPage.jsp页面出现红色波浪线表明该页面上有错误,这个错误其实是因为我们还没有在页面上加连接到show_invokeEJBPF节点上的连接,所以报错,因而我们需要修改createPage.jsp页面,往其中加一个Return Home按钮,使其能返回主页面。 6. 再看这个CreateCompanyController.jpf,一切都ok,我们可以运行并测试它。 该EJB剩下的两个方法(FinderByNO()方法和FinderAll()方法)请读者自己练习,最后做成的Page Flow如下: 源码参见本文附的下载包。小结笔者期望读者通过本文的阅读及练习能够入门在BEA WebLogic Workshop上的Web App应用开发。在下一篇使用笔记中,作者将给大家介绍如何用Workshop开发一个调用该PageFlow的Portal应用,敬请关注。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1