With Joel's help, I have isolated hopefully the last remaining dependency
with axis/xerces/osgi-mini-environments/QName, after playing repeated
rounds of Whack-a-Qname,
- New bundle muse.platform containing the following :
- URI classes URI , URIEncoderDecoder, & URISyntaxException
borrowed from Harmony
- a simple Logger class, which will eventually use the equinox
logging facility for J2ME, currently just dumps the output to the console
- miscellaneous string functions replaceAll, replaceFirst, and
split. References in the existing code base to java,net.URI,
string.replaceAll(), string.replaceFirst(), etc, have been replaced (in my
local copy) to use the above replacements.
- Replaced usages of RuntimeException(String message, Throwable cause)
with RuntimeException(String message)
- bundle manifests have muse.platform added as a dependancy.
- tweaked wsn-consumer code (i.e. java.net.URI) to ensure clean
compilation with J2ME/OSGi 1.1 environment)
- tested wsrf sample
- tested wsn-consumer (with OSGi/J2ME) with wsn-producer (with
OSGi/J2ME)
- tested wsn-consumer (axis) with wsn-producer (with OSGi/J2ME)
- tested wsn-consumer (with OSGi/J2ME) with wsn-producer (Axis)
- all tests pass, it's alive.
I have installed IBM's J9 for Windows, configured this a J9 JRE with
eclipse, to ensure the code base runs with a real J2ME environment.
Some run-time exceptions are appearing running the above samples, I'm
tracking the problems down now.
TODO :
Install ARM J9, deploy J2ME MUSE on an iPAQ (or simulator)
- test wsrf sample
- test wsn-consumer (with OSGi/J9) with wsn-producer (with
OSGi/J9)
- test wsn-consumer (Axis) with wsn-producer (with
OSGi/J9)
- test wsn-consumer (with OSGi/J9) with wsn-producer
(Axis)
- create log architecture to allow for java.util.log usage for
Axis builds, explore J2ME/OSGi log features (org.eclipse.equinox.log)
- Check in the J2ME code to SVN - ideas ? code branch? The code
base I'm using is probably 6 weeks old, so I will probably obtain a fresh
build & merge my changes locally
- Modify maven build to conditionally build J2ME MUSE ? Are there
build flags to build osgi vs. axis builds ? I'm a maven newbie.
- A muse.platform bundle for existing axis/osgi builds needs to be
created, utilizing existing java.net.URI, logger, etc. classes
- anthing else that I happen to have forgot
Current OSGI J2ME Structure :
Bundles (as eclipse/equinox plug-in projects) :
muse-osgi-soa-mini
muse.core
muse.osgi.core
muse.osgi.soa.core
muse.platform
muse.util.all
muse.wsa.soap
muse.wsdm.muws.adv.api
muse.wsdm.muws.adv.impl
muse.wsdm.muws.api
muse.wsdm.muws.impl
muse.wsdm.wef.api
muse.wsdm.wef.impl
muse.wsn.api
muse.wsn.impl
muse.wsrf.api
muse.wsrf.impl
muse.wsrf.rmd
muse.wsx.api
muse.wsx.impl
MuseExternalDependancies
commons-logging.jar
log4j-1.2.8.jar
saaj.jar
wsdl4j-1.5.2.jar
xalan-2.7.0.jar
jaxrpc.jar
org.apache.xerces
xml-apis.jar
resolver.jar
xercesImpl.jar
osgi.ee.foundation
ee.foundation.jar
Test Bundles :
wsn-consumer
wsn-producer
wsrf
Most of the above bundles are configured to use an execution environment
of "OSGI/Minimum-1.1" in their corresponding manifests, otherwise 100's of
the following compilation errors occur :
Access restriction: The constructor QName(String, String, String)
is not accessible due to
restriction on required library org.apache.xerces/lib/xml-apis.jar
My thanks to Joel Hawkins for his repeated answers to my dumb questions.
Comments/suggestions to the above are welcome.
regards,
Barry