Dave,
Thanks for sending the files along. When I installed and started the
bundles it did
print the "SUCCESS" message (actually I had left 2 other Jena bundle in
ServiceMix
so the JenaUsers bundle resolved to it rather than the new bundle). So
apparently
Jena is built correctly. I'll poke around some more and see if I can
uncover the problem.
I'll start with modifying the small JenaUsers bundle and add a few
things. If you have
the pom that you used to build it please send it along. Thanks.
Barry
On 10/10/2011 7:25 AM, Dave Reynolds wrote:
Hi Barry,
In that case I'm totally confused about what's going on.
A self-contained bundle built using the pom I sent you should use an
embedded Xerces you works for me.
If it is not using the embedded Xerces but is finding your 2.9.1 install
then that should work too (I've checked compatibility with 2.9.1).
So we've covered belt and braces and still no joy.
Does your JDK have an "endorsed" directory with a copy of Xerces hidden
away in it?
Best I can suggest is start eliminating variables. I've temporarily put
up a copy of a jena bundle [1] built with [2] and a test bundle [3]
which just does:
public class JenaTest implements BundleActivator {
public static final String DATA_FILE = "/resources/data.rdf";
@Override
public void start(BundleContext context) throws Exception {
System.out.println("Test bundle ...");
Model m = ModelFactory.createDefaultModel();
InputStream in = JenaTest.class.getResourceAsStream(DATA_FILE);
m.read(in, null, FileUtils.langXML);
System.out.println( m.size()> 0 ? "SUCCESS" : "No data");
}
@Override
public void stop(BundleContext context) throws Exception {
System.out.println("Bundle stopped");
}
}
If I drop the two bundles into a vanilla OSGi runner like Equinox then
when the test bundle starts it shows:
Test bundle ...
SUCCESS
for me.
If you test it in your set up on say Equinox and it fails then it
presumably must be your java.
If it works, then try dropping the same jars into your real OSGi
environment. If that fails then there is something weird about that
environment.
If it works, then just need to track the differences between that
pom/jena-bundle and the one you are using.
Dave
[1]
http://www.epimorphics.com/public/temp/com.hp.hpl.jena.core.osgi-2.6.4.jar
[2] http://www.epimorphics.com/public/temp/pom.xml
[3] http://www.epimorphics.com/public/temp/JenaUsers.jar
On Sun, 2011-10-09 at 14:27 -0400, Barry Hathaway wrote:
Dave,
I'm actually running with a recent version of Xerces (2.9.1).
Barry
On 10/8/2011 10:34 AM, Dave Reynolds wrote:
On Fri, 2011-10-07 at 17:49 -0400, Barry Hathaway wrote:
Dave,
I put Xerces back into the Jena bundle. I checked all the bundles and
the imports/exports
look fine; however, I'm still getting:
PropertyAccessException 1:
org.springframework.beans.MethodInvocationException: Property
'kbaseRoot' threw exception;
nested exception is com.hp.hpl.jena.shared.JenaException:
org.apache.xerces.impl.dv.DVFactoryException:
DTD factory class org.apache.xerces.impl.dv.dtd.DTDDVFactoryImpl does
not extend from DTDDVFactory.
when I execute the following 3 lines in my application:
Model m = ModelFactory.createMemModelMaker().createFreshModel();
FileInputStream is = new FileInputStream(file);
m = m.read(is, null);
with the offending line being the read. Any ideas?
Not really. Like I say I make quite heavy use of Jena with OSGi bundles
without such problems.
So long as the Xerces references in Jena core are being satisfied from
the Xerces in the bundle and not from import list then I'm stumped.
Can you update the Xerces in your ServiceMix bundle to something a bit
more modern which is compatible with Jena?
Do you think it could have something to do with the static classes in
the factory?
No, since it works fine in other OSGi environments.
Dave