You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by Ivan <xh...@gmail.com> on 2009/11/03 02:56:18 UTC

Re: xbeans and OSGi

Thanks, Rick, I got this issue too while trying to remove the classloader
plugins :-)
I guess that only those *-builder will need to import those xmlbeans
gernated classes, shall we use a tool to scan and generate the whole package
list, then add them to those pom files.
I remembered that long ago, there is a discussion about removing xmlbeans
from Geronimo, and use jaxb to parse and generate the plan file, Maybe we
could do it in 3.0.

2009/11/3 Rick McGuire <ri...@gmail.com>

> I've been wrestling with some build problems involving xbeans and bundles
> since the middle of last week, and I've finally gotten the specific error I
> was working on to go away.  I'm not entirely happy with what I needed to do
> to fix this, so I think this needs a little discussion.  First, some
> specifics on what I've found.
>
> 1)  The problem.  This problem was showing up when trying to build the
> system-database plugin.  It was starting the connector-deployer-1_6 plugin
> and getting a NullPointerException inside the xmlbeans runtime after calling
> getEnvironment() on the ConnectorDocument class.  This was happening because
> the xmlbeans runtime was unable to locate the type information for the
> environment property of the document.
>
> 2)  The cause.  This situation was occurring because the ConnectorDocument
> class uses property types defined in the geronimo-system-builder module.  At
> first, I thought this was due to some missing imports for the
> org.osgi.geronimo.deployment.xbeans.impl and
> org.osgi.geronimo.deployment.javabean.xbeans.impl packages.  I spent a
> couple days trying to get these imports correctly defined, but adding these
> did not clear up the NullPointerException on the getEnvironment() call.
> 3)  Finally, after poking around in xmlbeans a little, I figured out the
> issue was not the implementation classes, but rather the .xsb files.  The
> directories where these are contained also needed to be exported by the
> defining bundles and also imported by the using bundles.
> Item 3 is where the problems come in.  Because of the way xmlbeans
> generates the type information, there are lots of packages that need to be
> exported and imported to make things work.  Importing was fairly easy, since
> the bnd tool allows wildcards.  Importing is another matter entirely.  Since
> the referencing bundles don't contain any code references to these packages,
> the bnd tool is unable to generate this directly.  Any since there are a lot
> of directories involved that have very cryptic names, it really doesn't look
> practical to hand generate each of these either.
>
> A solution that did work is to use Require-Bundle to have all of these
> packages get imported by the using bundle at runtime.  I'm not terribly
> happy with having to resort to this, but bnd doesn't have a capability of
> doing the static equivalent of a Require-Bundle when generating the
> manifest.  The combination of export all of those packages and using
> Require-Bundle finally made the NullPointerException go away.
>
> In the course of fixing this, I also added a couple of enhancements to the
> car-maven-plugin to allow the manifest to be augmented by additional
> Import-Package and Require-Bundle information.  This looks like it is going
> to be additional metadata that we'll require in some of these dynamic
> classloading situations.
>
> I'll update the wiki with the workarounds I've found for this problem once
> we're comfortable with the approach needed to fix this.
>
> Rick
>



-- 
Ivan