J2EE 1.4简介
2003年11月24日,J2EE的JCP(Java Community Process)委员会投票一致通过了J2EE 1.4,这是过去两年内发布的第一个主要版本。这个最新版的企业Java标准开放平台增加了许多新的服务,J2EE 1.4 SDK支持这些服务,现在可以下载这个SDK了。这个SDK包括J2EE 1.4 应用服务器、J2SE 1.4.2和J2EE 1.4示例代码。你可以下载整个SDK或单独下载应用服务器或示例代码。
下面的技巧介绍了J2EE 1.4的一些新特点。也包括如何在Soaris、 Windows、 inux、和 Mac OS X上安装J2EE 1.4 SDK。但是没有完全覆盖这个平台的所有新内容。关于J2EE 1.4新内容的更全面的介绍,请看J2EE v1.4 Appication Server Reease Notes。
对Web Service的支持
J2EE 1.4最重要、最受争议的特点是对标准的Web Service的端对端的支持。有了J2EE 1.4,现在可以用HTTP之上的SOAP(Simpe Object Access Protoco)使得J2EE组件(例如企业Bean和servet)成为Web Service。
J2EE 1.4要求应用服务器必须遵守WS-I Basic Profie 1.0,这个规范定义了Web service的传输和协议。这使得Web service是可以互操作的。
与J2EE中Web service有关的关键技术如下:
•
Web Services for J2EE 1.1。结合单个J2EE技术创建Web service的主要是Web Services for J2EE。它定义了客户端、service端以及容器之间的部署协议。新的部署描述符文件,webservices.xm,为每一种组件定义了部署模式。Web Services for J2EE 还定义了编程模型(JAX-RPC)、 使用JNDI查找提供service的对象、和安全。最后,它还提供了一个新的Hander对象,开发者可以用这种对象阻止和操作SOAP消息。
•
JAX-RPC 1.1 (Java API for XM-Remote Procedure Cas)。JAX-RPC是一个标准的远程过程调用接口,它使用XM作为方法调用和返回值的序列化协议。JAX-RPC 把servet和无状态会话Beans定义为在SOAP和 WSD (Web Services Description anguage)的基础上的XM Web service的service端。Service端是实现了Web service逻辑的软件组件。JAX-RPC 的cient接口定义了对Web service的远程调用是如何发生的,以及参数和返回值(包括coection)是如何序列化的。JAX-RPC 1.1 还支持对安全Web services的基于SS的验证。
•
JAXR 1.0 (Java API for XM Registries)。 JAXR 把不同的XM注册表统一到单个模型。程序员可以利用XM注册表发现和查找service,访问它们的内容和元数据。例如,你可以用应用创建工具访问指定服务器上的注册表,找出服务器提供了哪些service,设计SOAP客户端使用其中的一个service。JARX还使得外部Web service客户端可以访问J2EE Web service。
•
SAAJ 1.2 (SOAP with Attachments API for Java)。SAAJ用具有MIME附件的SOAP消息处理客户端和Web service之间的SOAP消息传递。MIME附件既可以用来发送文档(对基于文档的Web service而言)又可以用来发送传递大量数据的参数(对 RPC式的Web service)。 SAAJ还为带附件的SOAP消息定义了DOM(document.nbspObject mode,文档对象模型)。它允许用户对如何编码SOAP消息进行控制, 为重复或复杂的任务提供了automation hook。
•
JAXP 1.2 (Java API for XM Parsing)。这个包统一了解析和处理XM的各种方法。负责解析的类可以在部署时与运行时之间切换。JAXP 1.2包含了SAX 2.0、 DOM eve 2、和XST。
Web层增强
不是所有的J2EE 1.4中的Web层增强都与Web service有关。现有的核心技术也得到了更新。
J2EE 1.4中的Web层最大的增强在于JSP 2.0。JST(JavaServer Pages Standard Tag ibrary)提供了范围广泛的通用tag,这些tag极大地方便了Web层的开发。JST还定义了新的表达式语言,这种语言可以用来编写存储在任何范围内的Web层JavaBean组件的表达式。下一个技巧说明了如何使用几种这样的tag。
JSP另一个主要的增强是方便地定义定制tag的能力。在JSP 2.0以前的版本中,定义定制tag要求编写实现Tag接口的类。JSP 2.0仍然支持这种方法,但是它还允许用JSP代码片断定义定制tag(在JSP文件中定义),然后在多个地方使用所定义的定制tag。
EJB 2.1
J2EE 1.4的另一个重要特点是EJB 2.1,EJB 2.1提供了几个新的增强。这些包括:
无状态会话Bean可以用作Web service端。
新的Timer service可以设置成定时调用企业Bean的ejbTimeout()方法。可以用这个service定时调用商业逻辑。
EJB-Q增加了对结果集排序的ORDER BY子句和新的合计函数(AVG、MAX、MIN、SUM和COUNT)。
现在消息驱动的Bean可以接受任何类型的消息,而不只是JMS消息(以前的版本只接受JMS消息)。现在连接器可以直接与MDB通讯,通过适配器把从外部系统传来的消息翻译成对MDB的调用。
企业Java BuePrint for J2EE 1.4
Java BuePrint示例应用是J2EE平台的必要部分。示例应用展示了应用设计和开发的最佳实践,提供了如何使用J2EE技术的例子。J2EE 1.4 SDK开发版本包含了AdventureBuider,这是新增的J2EE的Web service示例应用。它也包含了原有的Java Pet Store和无线游戏示例应用。
其他变化
J2EE平台其他的一些重要变化包括:
JACC 1.0(Java Authorization Contract for Containers ):允许自由选择安全和基于角色的授权提供者。
Java Depoyment API 1.1: 独立于服务器的部署工具。
Java Message Service (1.1) 增强
J2EE Connectors 1.5:包括了对异步、双向、多线程连接器的完全支持。
J2EE Depoyment 1.1:包括了可代替DTD的用XM模式定义的部署描述符,为了向后兼容保留了DTD.
J2EE Management 1.0:用Java工具或非Java工具管理企业资源。
新版JavaMai (1.3),Java Transaction API (JTA 版本1.01B), 和JDBC 3.0
安装服务器
用J2EE 1.4新的GUI安装程序安装服务器很简单。所支持的操作系统如下:
Soaris SPARC 8
Soaris SPARC 9
Windows 2000 Pro SP3+
Windows XP Pro SP1+
Windows 2000 Server SP3+
Windows Server 2003
inux RedHat 8
除了对inux RedHat的支持以外,只需作很少的修改,甚至不需修改,服务器就能在许多其他的inux版本环境运行。在inux上安装的主要要求是J2RE 1.4.1以上的版本。
在所支持的任意一个操作系统上安装服务器的步骤是:
1.
下载适当的软件包(http://java.sun.com/j2ee/1.4/downoad-dr.htm)。
2.
运行下载的可执行程序。
在Macintosh OS X 或Darwin上安装J2EE 1.4 SDK是可能的,尽管没有宣称对它们的支持。要在OS X 或Darwin上安装J2EE 1.4 SDK,你必须有root访问权限,J2RE必须是1.4.1以上的版本。
在OS X 或Darwin上安装J2EE 1.4 SDK的步骤如下:
1.
下载SDK的inux版本(http://java.sun.com/j2ee/1.4/downoad-dr.htm)。下载的文件将是EF二进制文件。
2.
用unzip命令行实用程序将压缩文件解压到一个空目录。必须用unzip,用象StuffIt这样的程序是不行的。在提示符(‘$’)后输入:
$ unzip j2eesdk-1_4-dr-inux-eva
3.
开始安装,输入:
$ java -cp package/PackageFormat.jar:. appserv
安装程序会开始安装SDK。如果偶尔不能看到安装时显示的提示,这时可以调整窗口的大小。
4.
安装程序要求输入Java路径时,输入:
/ibrary/Java/Home
安装程序会给出一个提示信息“server requires JDK 1.4.2. Java 2 version 1.4.1 wi work propery”,选择&t;continue。
5.
安装程序完成后,还必须做些工作。第一件要做的工作是改变安装目录img/bin的访问权限。输入:
$ chmod a+x /Users/yourname/SUNWappserver/imq/bin
这里yourname是你的用户名。(这假定服务器安装在/Users/yourname。)
6.
最后一步要求root访问权限。服务器在/ibrary/Java/Home/jre/bin内查找java和javac,这个目录还不存在。你必须创建这个目录,创建这些程序的二进制代码的符号连接。输入:
$ sudo mkdir -p /ibrary/Java/Home/jre/bin
$ cd /ibrary/Java/Home/jre/bin
$ sudo n -s /ibrary/Java/Home/bin/java java
$ sudo n -s /ibrary/Java/Home/bin/javac javac
sudo命令在第一次运行时会要求你输入口令。如果你不是系统管理员,你必须以root身份登录或su到root才能完成这些工作。
7.
安装到此已经完成。启动应用服务器,输入:
$ cd /Users/yourname/SUNWappserver/bin
$ asadmin start-domain
JST(THE JAVA STANDARD TAG IBRARY)
过去几年,我们一直自己编写定制tag实现JSP页面的显示逻辑。已经建立了几个流行的tag库,用来执行迭代、处理XM、调用辅助函数和访问Web层JavaBean。这些库的功能有许多重叠,更主要的是它们互不兼容。
为了解决这个不兼容问题,JCP就一个共用逻辑和现实tag集达成了一致。这些tag通常在创建Web应用的视图时非常有用。这个新的tag集被称之为JST(JavaServer Pages Standard Tag ibrary)。
JST不是J2EE 1.4必需的部分,因此,不要求应用服务器供应商对它的支持。然而,Sun的J2EE 1.4 SDK还是包含了JST,其他的供应商也很可能支持它。JST并不都是新的---J2EE 1.3容器早就有了JST 1.0。JST 1.1对JST进行了升级,以便利用JSP 2.0和J2EE 1.4的新特点。
这个技巧说明了如何使用几个新的JST tag。为了使用这些tag,必须了解新