一、 Beehive简介
1.1 Beehive是什么?
BEA将WebLogic Server 运行时框架的部分实现提取出来,经过修改后提交给Apache,形成了今天的Beehive。
Beehive体现了BEA公司在WebLogic8.1中加入的几个特性:JPF(Java Page Flow)、简化的资源访问方式—控件、简化的Web服务开发,这些特性能够让J2EE的编程更加简单;更重要的是,Beehive的运行已经不再依赖于WebLogic Server环境了,而是能够在绝大多数支持Servlet/JSP 2.3的容器中运行,这让J2EE的应用开发商能够提供基于Beehive、同时可以在J2EE平台间无缝移植的应用。
1.2 Beehive的组成
Beehive包括了三部分的内容,分别是:Page Flow、Controls和Web服务。
(1)Page Flow
基于Struts的一种MVC框架,使用JSR-175解决了Struts配置文件的自动更新,也使Struts开发更容易用IDE工具实现,同时提供了一些更易于使用的特性:
- 状态管理
一个JPF中的所有页面和处理动作都被看成是一个会话,JPF中声明的变量在各个页面均可访问,包括JavaBean。
[注] 当用户离开页面流时,会话状态中存储的数据将自动释放以便更有效地使用会话数据。所以多个JPF之间是不能共享会话数据的。
- 丰富的数据绑定功能
Page Flow中提供了一组标签库来实现数据和JSP页面的显示标记之间的绑定,让显示界面编程更加容易。
- 集中的异常处理
可以在一个JPF中处理异常,也可以在Globel.app跨越一组页面流处理异常信息。很显然,我们可以很容易为整个应用程序集中的进行异常处理,让程序更具灵活性——比如常见的登录超时信息、权限信息等,传统的方式你应该在每个页面进行判断,现在你可以在入口处进行判断就可以了。
(2)Controls
创建轻量级J2EE组件的一种框架,您可以不用编写大量代码就完成以下常见工作:用于创建访问资源如数据库、本地文件、Web服务等资源的组件;用于封装企业可重用的业务逻辑等。
(3)Web服务
JSR-181的一种实现,支持基于Javadoc 批注的Web服务开发方式。
二、开始工作
作者的操作系统是Windows2000,下面所有步骤的讲解也是针对Windows 8,如果您使用其它操作系统,需要根据下面的步骤做一些相应的调整。
2.1 工具下载
(1)Servlet容器—Tomcat8.0.36
为了演示Beehive的可移植性,这里的Servlet不选择WebLogic Server,而是选择了Apache的另一个开源项目—Tomcat5.5.8,后面的例子也主要以Tomcat5.5.8为例来讲解,如果你使用其他的Servlet容器或者Tomcat的其他版本,请按照您的环境进行相应的调整。
Tomcat的下载站点:http://tomcat.apache.org/
(2)JDK1.8.X
因为Tomcat8.X是基于JDK1.8.X而开发的,如果使用JDK其他版本需要另外做些改动,所以为了简单起见,建议您下载JDK的1.8或者以上版本。
(3)Beehive
Beehive的最新版本是1.0,可以到http://incubator.apache.org/beehive去下载安装包。
(4) Ant
Beehive环境准备、程序编译采用了Ant作为build工具,所以请到http://ant.apache.org下载Ant的最新版本,作者使用的版本是1.6
[注] 这点应该感谢BEA,他们大大降低了这项工作的复杂度。
2.2 软件安装
(1) 安装JDK
后面将用%Java_home%来引用JDK的安装目录,如作者安装在C:jdk1.8.77,那么%Java_home%就表示C:jdk1.8.77这个目录。
(2)安装Tomcat
将下载的Tomcat压缩包解压缩到某个目录如C:Tomcat8.0.36下,后面的文章中将用%Tomcat_Home%来表示这个目录。
(3) 解压缩Beehive
将下载的Beehive压缩包解压缩到某个目录如C:eehive1.0,后面将用%Beehive_Home%来表示这个目录。
(4)安装Ant
将下载的Ant压缩包解压缩到某个目录如C: Ant1.6,后面将用%Ant_Home%来表示这个目录。
2.3 让Beehive的例子跑起来
Beehive中包括了三方面的内容:Page Flow、Controls和Web Services。Beehive下载包中带了8个例子,分别演示了各种不同情况,这些例子都位于%Beehive_Home% samples目录中。我们这里先选择其中的三个简单的例子-- netui-blank、controls-blank、wsm-blank,分别代表了这三个方向,现在我们开始工作,让这些例子先跑起来。
(1) 环境设置
1. 修改%Beehive_Home%eehiveUser.cmd
将其中的BEEHIVE_HOME、 JAVA_HOME、 ANT_HOME、CATALINA_HOME等变量设置为各软件各自对应的安装目录。
下面是作者的beehiveUser.cmd文件的内容:
@echo off
REM
REM Customize this file based on where you install various 3rd party components
REM such as the JDK, Ant and Tomcat.
REM
REM the root of Beehive distribution
set BEEHIVE_HOME=c:eehive1.0
REM location of a JDK
set JAVA_HOME=C:JDK150
REM location of Ant
set ANT_HOME=Ant1.6
REM location of Tomcat
set CATALINA_HOME=C: omcat5.5.8
set PATH=%PATH%;%JAVA_HOME%in;%ANT_HOME%in
(2) 修改Tomcat的权限设置
为了让Tomcat能够实时部署,需要修改Tomcat的权限设置,主要是修改%Tomcat_Home%conf tomcat-users.xml文件,增加一个manager角色,同时增加一个属于manager的用户,作者是将tomcat这个用户的权限扩大为manager角色了,下面是修改过的tomcat-users.xml:
1 <?xml version='1.0' encoding='utf-8'?> 2 3 <tomcat-users> 4 5 <role rolename="tomcat"/> 6 7 <role rolename="role1"/> 8 9 <role rolename="manager"/> 10 11 <user username="tomcat" password="tomcat" roles="tomcat,manager"/> 12 13 <user username="role1" password="tomcat" roles="role1"/> 14 15 <user username="both" password="tomcat" roles="tomcat,role1"/> 16 17 </tomcat-users>
关于Tomcat权限设置,更多的资料请参考Tomcat的帮助文档。2.3.2节中的步骤保持一致,后面的步骤变动如下:
(3)准备支持Control运行相关的jar文件和标签声明文件(.tld)
执行ant -f antwebappRuntimeCore.xml -Dwebapp.dir=%Beehive_home%samplescontrols-blank deploy.beehive.webapp.runtime
(4)编译控件
执行ant -f %Beehive_Home%samplescontrols-blankuild.xml build命令编译controls-blank项目中的控件。
例子中的控件很简单,只有一个方法hello,作用是返回字符串“hello!”
(5)将控件部署到controls-blank环境中
执行命令: copy %beehive_home%samplescontrols-blankuildmycontrols.jar %beehive_home%samplescontrols-blankweb-inflib,将步骤5中生成的jar文件发布到controls-blank应用的lib目录下。
(6)启动Tomcat
(7) 建立一个jsp文件
在%beehive_home%samplescontrols-blank目录下创建一helloworld.jsp文件,文件内容如下:
<%@ page language="java" contentType="text/html;charset=gb2312"%> <%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0" prefix="netui-data"%> <%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%> <%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0" prefix="netui-template"%> <netui:html> <head> <title>Control演示实例</title> <netui:base/> </head> <netui:body> <jsp:useBean class="pkg.HelloBean" id="helloBean" scope="session"/> <h3>Control演示实例--测试页</h3> <p> 调用演示用Control的hello方法的返回内容是: <strong> <%= helloBean.hello() %> </strong> </p> </netui:body> </netui:html>
(8)发布Web应用
应用上下文路径设定为control,相应的在浏览器内输入如下地址:
http://localhost:8080/manager/deploy?path=/control&war=file:C:eehive1.0samplescontrols-blank&update=true
(9) 测试一下
在浏览器内输入:http://localhost:8080/control/helloworld.jsp,如果环境配置成功,浏览器内的返回信息应该如下图所示:
2.3.4 让Web服务的例子跑起来
前面的步骤1~2和2.3.2节中的步骤保持一致,后面的步骤变动如下:
(3)准备Web服务运行所必须的jar文件和标签声明文件(.tld)
执行ant -f antwebappRuntimeCore.xml -Dwebapp.dir=%Beehive_home%sampleswsm-blank deploy.wsm.webapp.runtime
(4)编译演示用的Web 服务
执行ant -f %BEEHIVE_HOME%antuildWebapp.xml -Dwebapp.dir=%Beehive_home%sampleswsm-blank build.webapp命令编译wsm-blank项目中的web服务。
例子中的Web服务比较简单,只对外发布了一个不带参数的方法sayHelloWorld,返回字符串“Hello world!”。
(5)启动Tomcat
(6)发布Web应用
应用上下文路径设定为wsm,相应的在浏览器内输入如下地址:
http://localhost:8080/manager/deploy?path=/control&war=file:C:eehive1.0sampleswsm-blank&update=true
(7)测试一下
在浏览器内输入:http://localhost:8080/wsm/ ,如果环境配置成功,浏览器内的返回信息应该如下图所示:
访问其中的连接“sayHelloWorld”,可以看到访问该Web服务后的SOAP返回消息:
3 总结
本文的内容集中在三个方面:Beehive项目简介、项目正常运行需要的软件和环境准备以及如果让beehive提供的例子在Tomcat平台上运行的步骤和相关使用命令。
通过本文的介绍,你应该可以根据不同应用的需要,创建符合要求的Web开发环境,同时能够熟练的编译、部署自己的Web应用。
下一篇文章将是《页面流入门》,作者将简单分析页面流(JPF)框架的运行机制,还通过具体的例子简单的演示了页面流框架下如何应用标签开发用户界面、实现页面导航、处理表单提交等基本功能。