Apache Harmony是Apache软件基金会下,一个Sun Java标准(J2SE)的开源项目。Harmony项目宣布于2005年,在Apache许可证第二版下,开发了基于Sun的Java标准的Java虚拟机(JVM)和Java类库。 Harmony也已经包含了Intel所贡献的大量代码,包括Swing,AWT和Java 2D. 它在2006的十月份开始成为Apache的顶级项目(Top Project),并获得了IBM公司的巨大支持。Harmony的最大特色在于其模块化的类库。用户可以根据实际需要,裁减某些类库,从而在达到精简JDK的目的。
2 WAS CE简介
WAS CE是基于Geronimo的免费JEE应用程序服务器。照惯例,每三个月便会有新版本发布。Geronimo是Apache软件基金会下,一个遵循JEE标准的开源项目。在Apache许可证第二版下,开发了可定制的JEE应用服务器。Geronimo使用了基于插件(plug-in)的构架。这种构架使得用户可以根据需要选择所需的JEE插件,从而精简JEE应用服务器的大小。相比一般JEE应用服务器,Geronimo具有很大灵活性。WAS CE则继承了Geronimo的这些优点。
3 使用Harmony运行WAS CE
使用Harmony运行WAS CE需要对WAS CE的配置进行修改。WAS CE的主要配置文件是config.xml,位于“/var/config/”。在修改该文件之前,强烈建议备份该文件。
对config.xml的修改包括三项内容:配置JNDI提供者、使用传输层安全协议替代安全套接层以及修改密钥库类型。
3.1 配置JNDI提供者(JNDI Provider)
Harmony的JNDI提供者与Sun JD不同,因此需要指定Harmony JDK的JNDI提供者,使WAS CE可以访问Harmony的JNDI提供者。具体步骤如下:
1) 打开config.xml
2) 搜索名为“NamingProperties”的Gbean
3) 将该Gbean属性修改为:
org.apache.harmony.jndi.provider
rmi://${ServerHostname}:${NamingPort + PortOffset}
3.2 使用TLS(Transport Layer Security)替代SSL(Secure Sockets Layer)
TLS是传输层安全协议,而SSL是安全套接层。Harmony并没有提供SSL的实现,而WAS CE缺省使用SSL为CORBA提供加密解密相关的安全支持。但是这并不影响使用Harmony来运行WAS CE。可以指定WAS CE使用TLS带替代SSL。步骤如下:
1) 打开config.xml
2) 搜索“j2ee-corba-yoko”,将protocol属性值从“SSL”修改为“TLS”。
name="org.apache.geronimo.configs/j2ee-corba-yoko/2.1-SNAPSHOT/car">
attribute name="protocol">TLS
……
3) 搜索名为“TomcatWebSSLConnector”的Gbean,将“sslProtocol”属性值从“SSL”修改为“TLS”。
……
TLS
……
3.3 修改密钥库类型(Keystore Type)
顾名思义,密钥库用于存放密钥。Geronimo缺省使用JKS(Java Keystore Standard),提供者为Sun,Sun JDK中都含有JKS实现。但是,Harmony只支持PKCS12 (Public Keystore Cryptography Standard)与BKS(Bouncy Castle Keystore)。其中,PKCS12是基于RSA的,描述个人信息的交换语法标准;而BKS则可以被认为是Bouncy Castle版本的JKS,可以与JKS互操作。
为了将生成PKCS12密钥库,需要编写程序将JKS密钥库转换成PKCS12类型;如果需要BKS密钥库,可以再通过程序将PKCS12密钥库转换成BKS类型。前者需要使用Sun JDK运行;后者必须使用Harmony JDK运行。因为,Sun JDK同时支持JKS与PKCS12,而不支持BKS;Harmony JDK支持PKCS12与BKS,而不支持JKS。此处需要将/var/security/keystores/geronimo-default转换成Harmony支持的Keystore类型即可。转换程序可以参考个人空间中“下载”列表的KeystoreConvert附件。
本文将以以PKCS12为例,说明修改Geronimo所用密钥库类型的步骤。假设生成PKCS12密钥库文件为g.pkcs12。修改步骤如下:
1) 打开config.xml
2) 将g.pkcs12拷贝至/var/security/keystores/Geronimo-default
3) 搜索“server-security-config”,为其添加名为“geronimo-default”的Gbean:
name="org.apache.geronimo.framework/server-security-config/2.1-SNAPSHOT/car">
var/security/keystores/g.pkcs12
PKCS12
除此之外,还要对名为“TomcatWebSSLConnector”的Gbean属性进行修改。如下所示:
……
TLS
var/security/keystores/g.pkcs12
secret
PKCS12
完成了以上三处对config.xml的修改,就可以用Harmony运行WAS CE了。
4 启动WAS CE
使用Harmony JDK启动WAS CE的步骤如下:
1) 设置环境变量JAVA_HOME为Harmony JDK的所在路径
2) 将JAVA_HOME/bin添加至环境变量PATH中
3) 运行WAS CE启动脚本
5 总结
本文归纳了使用Harmony运行WAS CE的步骤,说明了需要对WAS CE配置文件config.xml进行的修改,并给出了原因。在此基础上,可以考虑利用Harmony及WAS CE的可定制特点,制作出精简的WAS CE+Harmony运行包。来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7389114/viewspace-600361/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7389114/viewspace-600361/