Hi, Krzysztof,
Thanks for the response. I've tried this configuration thinking to make the JAXB package also visible to the outside and I just tried it again now. It did not work. Gang ________________________________ From: Krzysztof Sobkowiak [krzys.sobkow...@gmail.com] Sent: Monday, March 02, 2015 6:01 PM To: users@servicemix.apache.org Subject: Re: Simple JAXB client doesn't work in ServiceMix 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="<thismessage:/>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