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

Reply via email to