|
| Home > Apache Geronimo v2.0 > Documentation > Sample applications > Apache Harmony |
This article describes the ways and known issues to run Geronimo
v2.0.2
using Apache
Harmony
as a JVM.
This article has the following structure:
This article was written using the following environment:
Geronimo
v2.0.2
Jetty
full J2EE version (geronimo-jetty6-jee5-2.0.2-bin.zip)
Harmony
snapshot r610339, (Jan 9 2008), Windows/ia32/msvc 1310, debug build
Microsoft
Windows XP Professional
Service Pack 2
, 32-bit, English
With other versions and in a different environment, the behavior may differ.
Here's the brief summary of all the unresolved issues that require attention:
Harmony
places JNDI
providers
in org.apache.harmony.jndi package tree, not in com.sun.jndi like Sun
Java
does, so you have to point Geronimo
into the right direction to locate and properly access the RMI
Registry provider.
For that, edit var/config/config.xml file, adjust NamingProperties GBean configuration as follows:
<gbean name="NamingProperties"> <attribute name="namingFactoryUrlPkgs">org.apache.harmony.jndi.provider</attribute> <attribute name="namingProviderUrl">rmi://${ServerHostname}:${NamingPort + PortOffset}</attribute> </gbean>
Harmony
doesn't have SSL
implementation (see HARMONY-5191
), so the following statements have to be added to var/config/config.xml file to instruct Geronimo
to use TLS
instead of SSL
:
<module name="org.apache.geronimo.configs/j2ee-corba-yoko/2.0.2/car"> <gbean name="CORBASSLConfig"> <attribute name="protocol">TLS</attribute> </gbean> </module>
Geronimo
uses JKS keystore that Harmony
doesn't support. For now, there's no way to workaround this problem except by patching the Geronimo
source code and replacing the keystore manually. See GERONIMO-3757
for details.
You may either edit the Geronimo
startup scripts or run the server from the command line, but in either case you should consider the following adjustments:
1. Harmony
doesn't accept the -javaagent option (HARMONY-5462
), so you have to omit it. Or, you may remove bin/jpa.jar file from Geronimo
distribution – this way the -javaagent option would be omitted by the Geronimo
startup script.
2. Geronimo
v2.0.2
needs access to Internet for applications like SPECjAppServer2004
to be deployed – it tries to fetch XML schemas from http://java.sun.com
site. So if you're going to deploy applications like that, and you're behind a firewall, you should add the appropriate -Dhttp.proxyHost= and -Dhttp.proxyPort= options to the Geronimo
command line. This problem is caused by OPENEJB-700
bug and should disappear after that bug is fixed and the fix is propagated to a new version of Geronimo
.
3. SPECjAppServer2004
and other applications may require additional specification of JNDI
naming conventions for EJB, like this: -Dopenejb.jndiname.failoncollision=true -Dopenejb.jndiname.format={ejbName}
4. Harmony
generally needs more memory. So make sure to add the corresponding -Xms and -Xmx options.
Your final startup line may look like this:
java -Xms256M -Xmx512M -Djava.endorsed.dirs=lib/endorsed -Dopenejb.jndiname.failoncollision=true -Dopenejb.jndiname.format={ejbName} -Dhttp.proxyHost=your.proxy -Dhttp.proxyPort=8080 -jar bin/server.jar
Web interface and console only work through HTTPS port (https://localhost:8443/
). When working through HTTP port (http://localhost:8080/
) large portions of interface are not drawn correctly. This is still to be investigated.
The Geronimo
Deployer doesn't use the var/config/config.xml file (see above), so the JNDI
configuration needs to be supplied through the system properties, like this:
java -Djava.naming.factory.url.pkgs=org.apache.harmony.jndi.provider -jar bin/deployer.jar ...
You should use DRLVM
(Harmony
VM) to run Geronimo
.
Harmony
also supports IBM
J9
VM, but Geronimo
doesn't work with it, as Geronimo
relies on java.util.concurrent
package that requires a proper implementation of sun.misc.Unsafe class that is missing in IBM
J9
VM.
|
|
Copyright © 2003-2008, The Apache Software Foundation, Licensed under the Apache License, Version 2.0. |