Hi
Could you try following definition for export packages?
<Export-Package>
mil.army.security.ts3.jaxb.*
</Export-Package>
or
<Export-Package>
mil.army.security.ts3.jaxb.personnel
</Export-Package>
Regards
Krzysztof
On 02.03.2015 23:20, Yang, Gang CTR USARMY (US) wrote:
>
>
>
> Hi,
>
>
>
> I had a post for help on JAXB not working in ServiceMix earlier. But that
> configuration was quite complex. I now simplified it to a simple JAXB client
> bundle (no longer embedded/wrapped). It has a single class, Person, which is
> annotated with @XmlRootElement and a jaxb.index resource file that contains a
> single line of the class name "Person". The JAXB client code simply calls
> JAXBContext.newInstance("package") to get the JAXB context in the
> constructor. A blueprint deployment descriptor simply defines the JAXB client
> as a bean. I deployed it into the ServiceMix and the bean creation causes the
> "package doesnt contain ObjectFactory.class or jaxb.index" exception from
> the call to the JAXBContext.newInstance(). Here's the details about the code.
> Hope someone can spot what's missing:
>
>
>
> The Person class:
>
>
>
> package
>
> mil.army.security.ts3.jaxb.personnel;
>
>
>
> import
>
> javax.xml.bind.annotation.XmlRootElement;
>
>
>
> @XmlRootElement
>
> public
>
> class
>
> Person {
>
> private int customerNumber
>
> ;
>
> ...
>
>
>
> // getters and setters
>
> ......
>
> }
>
>
>
>
>
> The JAXB client code:
>
>
>
> package mil.army.security.ts3.jaxb;
>
>
>
> import java.io.ByteArrayInputStream;
>
> import java.io.ByteArrayOutputStream;
>
> import java.io.InputStream;
>
> import javax.xml.bind.JAXBContext;
>
> import javax.xml.bind.JAXBException;
>
> import javax.xml.bind.Marshaller;
>
> import javax.xml.bind.Unmarshaller;
>
> import mil.army.security.ts3.jaxb.personnel.Person;
>
>
>
> public class PersonTransformer {
>
> JAXBContext jaxbContext = null;
>
> Marshaller marshaller = null;
>
> Unmarshaller unmarshaller = null;
>
> public PersonTransformer() {
>
> try {
>
> jaxbContext =
> JAXBContext.newInstance("mil.army.security.ts3.jaxb.personnel");
>
> marshaller = jaxbContext.createMarshaller();
>
> unmarshaller = jaxbContext.createUnmarshaller();
>
> }
>
> catch (JAXBException jaxbE) {
>
> System.err.println("PersonTransformer.PersonTransformer():
> JAXBException: " + jaxbE);
>
> jaxbE.printStackTrace();
>
> }
>
> }
>
> }
>
>
>
> The blueprint deployment descriptor:
>
>
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <blueprint
>
> xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
> xmlns:jaxws="http://cxf.apache.org/blueprint/jaxws"
>
> xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0
>
> http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
>
> http://cxf.apache.org/blueprint/jaxws
> http://cxf.apache.org/schemas/blueprint/jaxws.xsd">
>
> <bean id="jaxbTransformer"
> class="mil.army.security.ts3.jaxb.PersonTransformer"/>
>
> </blueprint>
>
>
>
>
>
> The bundle is built with maven-bundle-plugin using the following imports and
> exports:
>
>
>
> <Import-Package>
>
> org.osgi.service.blueprint,
>
> javax.xml.bind,
>
> javax.xml.bind.annotation
>
> </Import-Package>
>
> <Export-Package>
>
> mil.army.security.ts3.jaxb
>
> </Export-Package>
>
>
>
>
>
> To me, it's such a simple JAXB client that should've had every thing that
> runtime needs to run it. Unfortunately it failed in ServiceMix. The
> stacktrace is at the end of this email. Would appreciate help and suggestions.
>
>
>
> Thanks,
>
> Gang
>
>
>
> ------------------
>
> Stacktrace:
>
>
>
> karaf@root<mailto:karaf@root>> PersonTransformer.PersonTransformer():
> JAXBException: javax.xml.bind.JAXBException: "mil.army.security.ts3.j
> axb.personnel" doesnt contain ObjectFactory.class or jaxb.index
> javax.xml.bind.JAXBException: "mil.army.security.ts3.jaxb.personnel" doesnt
> contain ObjectFactory.class or jaxb.index
> at
> com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:197)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:483)
> at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:143)
> at javax.xml.bind.ContextFinder.find(ContextFinder.java:310)
> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:446)
> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:409)
> at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:313)
> at
> mil.army.security.ts3.jaxb.PersonTransformer.<init>(PersonTransformer.java:21)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
> at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
> at
> org.apache.aries.blueprint.utils.ReflectionUtils.newInstance(ReflectionUtils.java:329)
> at
> org.apache.aries.blueprint.container.BeanRecipe.newInstance(BeanRecipe.java:962)
> at
> org.apache.aries.blueprint.container.BeanRecipe.getInstance(BeanRecipe.java:331)
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate2(BeanRecipe.java:806)
> at
> org.apache.aries.blueprint.container.BeanRecipe.internalCreate(BeanRecipe.java:787)
> at
> org.apache.aries.blueprint.di.AbstractRecipe$1.call(AbstractRecipe.java:79)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> at
> org.apache.aries.blueprint.di.AbstractRecipe.create(AbstractRecipe.java:88)
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createInstances(BlueprintRepository.java:245)
> at
> org.apache.aries.blueprint.container.BlueprintRepository.createAll(BlueprintRepository.java:183)
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.instantiateEagerComponents(BlueprintContainerImpl
> .java:681)
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.doRun(BlueprintContainerImpl.java:378)
> at
> org.apache.aries.blueprint.container.BlueprintContainerImpl.run(BlueprintContainerImpl.java:269)
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:276)
> at
> org.apache.aries.blueprint.container.BlueprintExtender.createContainer(BlueprintExtender.java:245)
> at
> org.apache.aries.blueprint.container.BlueprintExtender.modifiedBundle(BlueprintExtender.java:235)
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker
> .java:500)
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.customizerModified(BundleHookBundleTracker
> .java:433)
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$AbstractTracked.track(BundleHookBundleTracker.java
> :725)
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$Tracked.bundleChanged(BundleHookBundleTracker.java
> :463)
> at
> org.apache.aries.util.tracker.hook.BundleHookBundleTracker$BundleEventHook.event(BundleHookBundleTracker.java
> :422)
> at
> org.apache.felix.framework.util.SecureAction.invokeBundleEventHook(SecureAction.java:1127)
> at
> org.apache.felix.framework.util.EventDispatcher.createWhitelistFromHooks(EventDispatcher.java:696)
> at
> org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:484)
> at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4429)
> at org.apache.felix.framework.Felix.startBundle(Felix.java:2100)
> at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:976)
> at
> org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundle(DirectoryWatcher.java:1245)
> at
> org.apache.felix.fileinstall.internal.DirectoryWatcher.startBundles(DirectoryWatcher.java:1217)
> at
> org.apache.felix.fileinstall.internal.DirectoryWatcher.doProcess(DirectoryWatcher.java:509)
> at
> org.apache.felix.fileinstall.internal.DirectoryWatcher.process(DirectoryWatcher.java:358)
> at
> org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:310)
>
--
Krzysztof Sobkowiak
JEE & OSS Architect
Senior Solution Architect @ Capgemini SSC <http://www.pl.capgemini-sdm.com/en>
Apache ServiceMix <http://servicemix.apache.org/> Committer & PMC