Do I have to keep " com.mysql.jdbc" inside "<Import-Package>"?
If I remove it, my bundle become active but failed [ 306] [Active ] [Failed ] [ 60] A CXF WSDL First OSGi Project (1.0.0.SNAPSHOT) with the followin log/d 10:58:18,497 | ERROR | xtenderThread-80 | OsgiBundleXmlApplicationContext | gatedExecutionApplicationContext 366 | Post refresh error org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.cxf.wsdl.WSDLManager' defined in OSGi resource[classpath:META-INF/cxf/cxf.xml|bnd.id=306|bnd.sym=test-wsdl-first-osgi]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.wsdl11.WSDLManagerImpl]: Constructor threw exception; nested exception is java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:883) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:839) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:68) at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:343) at org.springframework.osgi.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85) at org.springframework.osgi.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:308) at org.springframework.osgi.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:138) at java.lang.Thread.run(Thread.java:595) Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.wsdl11.WSDLManagerImpl]: Constructor threw exception; nested exception is java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:115) at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:877) ... 18 more Caused by: java.lang.ClassCastException: com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:98) at java.util.XMLUtils.getLoadingDoc(XMLUtils.java:75) at java.util.XMLUtils.load(XMLUtils.java:57) at java.util.Properties.loadFromXML(Properties.java:701) at org.apache.cxf.common.util.PropertiesLoaderUtils.loadAllProperties(PropertiesLoaderUtils.java:71) at org.apache.cxf.wsdl11.WSDLManagerImpl.registerInitialExtensions(WSDLManagerImpl.java:224) at org.apache.cxf.wsdl11.WSDLManagerImpl.registerInitialExtensions(WSDLManagerImpl.java:219) at org.apache.cxf.wsdl11.WSDLManagerImpl.<init>(WSDLManagerImpl.java:109) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:100) ... 20 more Matteo Redaelli wrote: > > Many thanks for your usefull suggestions. I like very much the possibility > to use maven dependences (as in jbi packaging) > > BUT i doesn't work. can you do it starting from my zip sample? > > I changed my pom.xml adding (initially only one and finally all your > suggestions) > <dependency> > <groupId>mysql</groupId> > <artifactId>mysql-connector-java</artifactId> > <version>5.0.8</version> > </dependency> > ... > <instructions> > > <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName> > <Bundle-ClassPath> > .,{maven-dependencies} > </Bundle-ClassPath> > > <Include-Resource>{maven-resources}</Include-Resource> > > <Embed-Dependency>mysql-connector-java:scope=runtime|compile</Embed-Dependency> > > <Import-Package> > javax.jws, > javax.wsdl, > javax.xml.bind, > javax.xml.bind.annotation, > javax.xml.namespace, > javax.xml.ws, > META-INF.cxf, > META-INF.cxf.osgi, > org.apache.cxf.bus, > org.apache.cxf.bus.spring, > org.apache.cxf.bus.resource, > org.apache.cxf.configuration.spring, > org.apache.cxf.resource, > org.apache.cxf.jaxws, > org.apache.servicemix.cxf.transport.http_osgi, > org.springframework.beans.factory.config, > org.springframework.jdbc.datasource, > com.mysql.jdbc, * > > then > mvn clean install > > But I get > | Deploying: > /usr/local/apache-servicemix-4.0.0/deploy/test-wsdl-first-osgi-1.0-SNAPSHOT.jar > 10:39:46,788 | WARN | Timer-1 | FileMonitor > | x.kernel.filemonitor.FileMonitor 552 | Failed to start bundle: > test-wsdl-first-osgi [305]. Reason: org.osgi.framework.BundleException: > Unresolved constraint in bundle 305: package; (package=com.mysql.jdbc) > org.osgi.framework.BundleException: Unresolved constraint in bundle 305: > package; (package=com.mysql.jdbc) > at org.apache.felix.framework.Felix.resolveBundle(Felix.java:3059) > at org.apache.felix.framework.Felix.startBundle(Felix.java:1439) > at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:770) > at org.apache.felix.framework.BundleImpl.start(BundleImpl.java:751) > at > org.apache.servicemix.kernel.filemonitor.FileMonitor.refreshPackagesAndStartOrUpdateBundles(FileMonitor.java:549) > at > org.apache.servicemix.kernel.filemonitor.FileMonitor.onFilesChanged(FileMonitor.java:299) > at > org.apache.servicemix.kernel.filemonitor.FileMonitor$1.filesChanged(FileMonitor.java:151) > at > org.apache.servicemix.kernel.filemonitor.Scanner.reportBulkChanges(Scanner.java:431) > at > org.apache.servicemix.kernel.filemonitor.Scanner.reportDifferences(Scanner.java:327) > at > org.apache.servicemix.kernel.filemonitor.Scanner.scan(Scanner.java:261) > at > org.apache.servicemix.kernel.filemonitor.Scanner$1.run(Scanner.java:221) > at java.util.TimerThread.mainLoop(Timer.java:512) > at java.util.TimerThread.run(Timer.java:462) > > > my osgi/list > > [ 259] [Active ] [Started] [ 60] Apache ServiceMix CXF Transport for > OSGi (4.0.0) > [ 272] [Active ] [ ] [ 60] > mvn:mysql/mysql-connector-java/5.0.8 > [ 305] [Installed ] [ ] [ 60] A CXF WSDL First OSGi Project > (1.0.0.SNAPSHOT) > > what's wrong? > > Jean-Baptiste Onofré wrote: >> >> Hi Matteo, >> >> In your case, you want more to add several dependencies into your OSGi >> bundle. >> >> Using the felix bnd maven plugin, you can use: >> - <Embed-Dependency/> notation. For example, you can use >> <Embed-Dependency>mysql-connector:scope=runtime|compile</Embed-Dependency> >> where mysql-connector is the artifactId. >> - for the <Bundle-Classpath/>, you can use directly the directory path >> (for example <Bundle-Classpath>.,{maven-dependencies}</Bundle-Classpath> >> - you can use <Include-Resource/> notation too, like this >> <Include-Resource>{maven-resources}</Include-Resource> >> >> All is explained here: >> http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html >> >> Regards >> JB >> >> Matteo Redaelli wrote: >>> Can "Bundle-Classpath" be used to add a folder where I can add the jars >>> I >>> want to include? >>> Please can you show me how should I use it? >>> >>> I tried with >>> <Bundle-ClassPath> >>> .,/home/matteo/tmp/test-wsdl-first-osgi/lib, >>> </Bundle-ClassPath> >>> >>> and in >>> /home/matteo/tmp/test-wsdl-first-osgi/lib >>> I have >>> mysql-connector-java-5.0.8.jar >>> >>> but I get >>> >>> [WARNING] Warning building bundle >>> com.yourcompany:test-wsdl-first-osgi:bundle:1.0-SNAPSHOT : No sub JAR or >>> directory /home/matteo/tmp/test-wsdl-first-osgi/lib >>> [WARNING] Warning building bundle >>> com.yourcompany:test-wsdl-first-osgi:bundle:1.0-SNAPSHOT : Bundle uses >>> Require Bundle, this can generate false errors because then not enough >>> information is available without the required bundles >>> [ERROR] Error building bundle >>> com.yourcompany:test-wsdl-first-osgi:bundle:1.0-SNAPSHOT : Cannot find a >>> file or directory for Bundle-Classpath entry: >>> /home/matteo/tmp/test-wsdl-first-osgi/lib >>> >>> Regards >>> Matteo >>> >>> >>> Jean-Baptiste Onofré wrote: >>>> Matteo, >>>> >>>> another solution is to add required dependencies into the OSGi bundle >>>> using: >>>> Bundle-Classpath: >>>> notation. >>>> >>>> Regards >>>> JB >>>> >>>> Freeman Fang wrote: >>>>> Hi Matteo, >>>>> Which smx4 version are you using? >>>>> I tried with both Apache Servicemix 4.0 release and FUSE ESB 4.1 >>>>> release >>>>> with >>>>> osgi/install wrap:mvn:mysql/mysql-connector-java/5.0.8 >>>>> But bundle status is >>>>> [ 158] [Resolved ] [ ] [ 60] >>>>> wrap_mvn_mysql_mysql-connector-java_5.0.8 (0) >>>>> which means it's not started, but from your mail, you mention your >>>>> bundle can start like >>>>> [ 272] [Active ] [ ] [ 60] mvn:mysql/mysql-connector-java/5.0.8 >>>>> I'm wondering how it could be. >>>>> You can use wrap your normal jar as osgi bundle, but you will have to >>>>> have all dependent packages available as bundles in the container >>>>> already, I don't think all mysql needed package already available as >>>>> bundles. >>>>> Could you please tell me exactly your process? >>>>> Freeman >>>>> >>>>> Matteo Redaelli wrote: >>>>>> I use linux debian. In any case. here is my project in zip file >>>>>> >>>>>> http://www.nabble.com/file/p23827756/test-wsdl-first-osgi.zip >>>>>> test-wsdl-first-osgi.zip >>>>>> Regards >>>>>> Matteo >>>>>> >>>>>> >>>>>> >>>>>> Freeman Fang wrote: >>>>>> >>>>>>> Hi, >>>>>>> Somehow I can't extract the test-wsdl-first-osgi.tgz you append on >>>>>>> my >>>>>>> linux box. >>>>>>> I guess you are using Mac, right? Would you please append your >>>>>>> testcase as zip file? >>>>>>> Freeman >>>>>>> >>>>>>> Matteo Redaelli wrote: >>>>>>> >>>>>>>> Ciao >>>>>>>> >>>>>>>> Thanks for you suggestions: I'll look deeply at the links you >>>>>>>> suggested >>>>>>>> >>>>>>>> But in any case I'd like to know howto create a service with >>>>>>>> servicemix-osgi-cxf-wsdl-first-archetype that can get/put data in a >>>>>>>> database. >>>>>>>> >>>>>>>> what is wrong/missing in my package/smx4? >>>>>>>> >>>>>>>> Thanks in advance >>>>>>>> Matteo >>>>>>>> >>>>>>>> >>>>>>>> Freeman Fang wrote: >>>>>>>> >>>>>>>>> Hi, >>>>>>>>> If you want to port cxf-wsdl-first(bc + se) example to osgi bundle >>>>>>>>> in smx4, then you shouldn't use >>>>>>>>> servicemix-osgi-cxf-wsdl-first-archetype, since this archetype >>>>>>>>> generate cxf endpoint deployed in smx4 using osgi http service >>>>>>>>> transport directly, which means in this case there's no cxf bc + >>>>>>>>> se >>>>>>>>> get involved at all, it's a cxf endpoint deployed in smx4 which >>>>>>>>> can talk directly to outside client. >>>>>>>>> To port smx3 cxf-wsdl-first example to osgi bundle in smx4, what >>>>>>>>> you need do is change the JBI package style(SA+SU) to spring dm >>>>>>>>> enabled osgi bundle package style, Gert already add a wiki[1] to >>>>>>>>> demostrate how to do it with servicemix-bean endpoint, and I'm >>>>>>>>> going to add an example for cxf-wsdl-frist using spring dm osgi >>>>>>>>> bundle package very soon, [2] track this issue >>>>>>>>> >>>>>>>>> [1]http://cwiki.apache.org/confluence/display/SMX4/Creating+an+OSGi+bundle+for+deploying+JBI+endpoints >>>>>>>>> >>>>>>>>> >>>>>>>>> [2]https://issues.apache.org/activemq/browse/SMX4-292 >>>>>>>>> >>>>>>>>> Freeman >>>>>>>>> >>>>>>>>> Matteo Redaelli wrote >>>>>>>>> >>>>>>>>>> Hello >>>>>>>>>> >>>>>>>>>> In smx4 I'm tring to convert the JBI example cxf-wsdl-first-jdbc >>>>>>>>>> (http://matteoredaelli.wordpress.com/2009/05/30/connecting-to-a-database-with-a-webservice-cxf-deployed-jbi-in-servicemix/) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> with a similar OSGI project. >>>>>>>>>> >>>>>>>>>> I created a project using >>>>>>>>>> >>>>>>>>>> mvn archetype:create \ >>>>>>>>>> -DarchetypeGroupId=org.apache.servicemix.tooling \ >>>>>>>>>> >>>>>>>>>> -DarchetypeArtifactId=servicemix-osgi-cxf-wsdl-first-archetype >>>>>>>>>> \ >>>>>>>>>> -DarchetypeVersion=2008.01-SNAPSHOT \ >>>>>>>>>> -DgroupId=com.yourcompany \ >>>>>>>>>> -DartifactId=test-wsdl-first-osgi \ >>>>>>>>>> -Dversion=1.0-SNAPSHOT \ >>>>>>>>>> >>>>>>>>>> -DremoteRepositories=http://people.apache.org/repo/m2-snapshot-repository/ >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Than I added osgi wraps for spring-jdnc and mysql with >>>>>>>>>> >>>>>>>>>> osgi/install wrap mvn:org.springframework/spring-jdbc/2.5.6 >>>>>>>>>> osgi/install wrap mvn:mysql/mysql-connector-java/5.0.8 >>>>>>>>>> >>>>>>>>>> [ 181] [Active ] [ ] [ 60] Spring JDBC (2.5.6) >>>>>>>>>> [ 272] [Active ] [ ] [ 60] >>>>>>>>>> mvn:mysql/mysql-connector-java/5.0.8 >>>>>>>>>> >>>>>>>>>> MY changes in pom.xml are: >>>>>>>>>> >>>>>>>>>> <dependency> >>>>>>>>>> <groupId>mysql</groupId> >>>>>>>>>> <artifactId>mysql-connector-java</artifactId> >>>>>>>>>> <version>5.0.8</version> >>>>>>>>>> </dependency> >>>>>>>>>> <dependency> >>>>>>>>>> <groupId>org.springframework</groupId> >>>>>>>>>> <artifactId>spring-jdbc</artifactId> >>>>>>>>>> <version>2.5.6</version> >>>>>>>>>> </dependency> >>>>>>>>>> ... >>>>>>>>>> <Import-Package> >>>>>>>>>> ... >>>>>>>>>> org.springframework.jdbc.datasource, >>>>>>>>>> com.mysql.jdbc, * >>>>>>>>>> </Import-Package> >>>>>>>>>> ... >>>>>>>>>> >>>>>>>>>> <DynamicImport-Package>*</DynamicImport-Package> >>>>>>>>>> >>>>>>>>>> MY beans.xml >>>>>>>>>> ... >>>>>>>>>> <bean id="moodleDB" >>>>>>>>>> class="org.springframework.jdbc.datasource.DriverManagerDataSource"> >>>>>>>>>> <property name="driverClassName" >>>>>>>>>> value="com.mysql.jdbc.Driver" /> <property >>>>>>>>>> name="url" >>>>>>>>>> value="jdbc:mysql://localhost:3306/moodle" /> >>>>>>>>>> <property name="username" value="root" /> >>>>>>>>>> <property name="password" value="" /> </bean> ... >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Questions: >>>>>>>>>> >>>>>>>>>> 1) how can load properly mysql jar in smx? >>>>>>>>>> >>>>>>>>>> I have the error >>>>>>>>>> >>>>>>>>>> s...@root:/> osgi/start 292 >>>>>>>>>> ERROR CommandLineExecutionFailed: >>>>>>>>>> org.apache.geronimo.gshell.command.CommandException: >>>>>>>>>> org.osgi.framework.BundleException: Unresolved constraint in >>>>>>>>>> bundle >>>>>>>>>> 292: >>>>>>>>>> package; (package=com.mysql.jdbc) >>>>>>>>>> >>>>>>>>>> In a camel tutorial I found >>>>>>>>>> >>>>>>>>>> <feature name="jdbc-driver"> >>>>>>>>>> ... >>>>>>>>>> >>>>>>>>>> <bundle>mvn:com.mysql.jdbc/com.springsource.com.mysql.jdbc/5.1.6</bundle> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> </feature> >>>>>>>>>> >>>>>>>>>> but osgi/install wrap >>>>>>>>>> mvn:com.mysql.jdbc/com.springsource.com.mysql.jdbc/5.1.6 doesn't >>>>>>>>>> work >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> 2) the file beans.xml generated by maven archetype is quite >>>>>>>>>> different >>>>>>>>>> from >>>>>>>>>> the one of cxf-wsdl-first. where/how can I add the "property >>>>>>>>>> datasource" >>>>>>>>>> ? >>>>>>>>>> >>>>>>>>>> I see >>>>>>>>>> >>>>>>>>>> <jaxws:endpoint id="HTTPEndpoint" >>>>>>>>>> >>>>>>>>>> implementor="org.apache.servicemix.samples.wsdl_first.PersonImpl" >>>>>>>>>> address="/PersonService" >>>>>>>>>> wsdlLocation="wsdl/person.wsdl" >>>>>>>>>> endpointName="e:soap" >>>>>>>>>> serviceName="s:PersonService" >>>>>>>>>> xmlns:e="http://servicemix.apache.org/samples/wsdl-first" >>>>>>>>>> >>>>>>>>>> xmlns:s="http://servicemix.apache.org/samples/wsdl-first"/> >>>>>>>>>> >>>>>>>>>> Thanks in advance >>>>>>>>>> Matteo >>>>>>>>>> >>>>>>>>> -- >>>>>>>>> Freeman Fang >>>>>>>>> ------------------------ >>>>>>>>> Open Source SOA: http://fusesource.com >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> -- >>>>>>> Freeman Fang >>>>>>> ------------------------ >>>>>>> Open Source SOA: http://fusesource.com >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >> > > -- View this message in context: http://www.nabble.com/sample-cxf-wsdl-first-jdbc-as-OSGI-package-tp23820077p23848820.html Sent from the ServiceMix - User mailing list archive at Nabble.com.