web services - ClassNotFoundException: ObjectServiceDescriptor in OSGi -
i trying develop simple java program calls dfs web services , runtime error:
caused by: com.emc.documentum.fs.rt.impl.servicemodel.servicemodelexception: service descriptor class not found: "java.lang.classnotfoundexception: com.emc.documentum.fs.services.core.client.objectservicedescriptor". @ com.emc.documentum.fs.rt.impl.servicemodel.javabeantreefactory.getdescriptor(javabeantreefactory.java:218) @ com.emc.documentum.fs.rt.impl.servicemodel.javabeantreefactory.getmodule(javabeantreefactory.java:41) @ com.emc.documentum.fs.rt.context.servicefactory.makeserviceurl(servicefactory.java:332) @ com.emc.documentum.fs.rt.context.servicefactory.getremoteservice(servicefactory.java:143) @ com.emc.documentum.fs.rt.context.servicefactory.getremoteservice(servicefactory.java:197) @ info.hartmann.dfs.impl.handler.init(handler.java:112)
i'm using maven build project , install osgi container of adobe cq5. tried same code in usual java application in eclipse , worked.
the strange thing me class objectservicedescriptor is in 1 of .jar libraries include through maven dependencies. jar name emc-dfs-services-remote-1.0.jar. if open .jar generated maven, can see emc-dfs-services-remote-1.0.jar there.
the project compilation goes without problems, during runtime error on line:
iobjectservice objectservice = servicefactory.getremoteservice(com.emc.documentum.fs.services.core.client.iobjectservice.class, servicecontext, module, host);
my pom.xml below. see, declare of packages optional in imported-packages. if don't this, bundle can compiled, cannot started. declaring these packages optional problem?
<project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <groupid>cxf-example-ievgen</groupid> <artifactid>cxf-example-ievgen</artifactid> <version>0.0.1-snapshot</version> <packaging>bundle</packaging> <name>ievgeng sample bundle</name> <properties> <project.build.sourceencoding>utf-8</project.build.sourceencoding> </properties> <build> <plugins> <plugin> <groupid>org.apache.sling</groupid> <artifactid>maven-sling-plugin</artifactid> <executions> <execution> <id>install-bundle</id> <goals> <goal>install</goal> </goals> </execution> </executions> <configuration> <slingurl>http://192.168.56.101:4502/system/console</slingurl> <user>user</user> <password>password</password> </configuration> </plugin> <plugin> <groupid>org.apache.felix</groupid> <artifactid>maven-scr-plugin</artifactid> <version>1.7.2</version> <executions> <execution> <id>generate-scr-scrdescriptor</id> <goals> <goal>scr</goal> </goals> </execution> </executions> </plugin> <plugin> <groupid>org.apache.felix</groupid> <artifactid>maven-bundle-plugin</artifactid> <version>2.1.0</version> <extensions>true</extensions> <executions> <execution> <id>wrap-my-dependency</id> <goals> <goal>wrap</goal> </goals> <configuration> <wrapimportpackage>;</wrapimportpackage> </configuration> </execution> </executions> <configuration> <instructions> <export-package>info.hartmann.dfs.api</export-package> <private-package>info.hartmann.dfs.impl </private-package> <!-- bundle supplied resource prefixes --> <include-resource>{maven-resources}</include-resource> <!-- not inline jars, include jar files --> <embed-dependency>*;scope=compile|runtime;inline=false</embed-dependency> <embed-transitive>true</embed-transitive> <!-- use _exportcontents instead of export-package avoid conflict embed-dependency inline=true --> <!-- <_exportcontents> --> <!-- org.apache.cxf.*;version=${project.version} --> <!-- </_exportcontents> --> <!-- declare optional dependencies --> <import-package> com.documentum.fc.client.search;resolution:=optional, com.documentum.fc.client.impl.session;resolution:=optional, com.documentum.fc.common;resolution:=optional, com.documentum.fc.client;resolution:=optional, com.documentum.com;resolution:=optional, com.documentum.ci;resolution:=optional, com.documentum.ucf.*;resolution:=optional, com.documentum.operations.*;resolution:=optional, com.documentum.registry;resolution:=optional, com.documentum.xerces_2_8_0.xerces.impl.dv.util;resolution:=optional, org.slf4j.*;resolution:=optional, org.osgi.*;resolution:=optional, com.emc.documentum.kerberos.*;resolution:=optional, javax.xml.registry.*;resolution:=optional, jp.co.swiftinc.relax.*;resolution:=optional, junit.framework;resolution:=optional, org.apache.xerces.*;resolution:=optional, org.apache.xml.*;resolution:=optional, sun.io;resolution:=optional, sun.misc;resolution:=optional, sun.nio.cs;resolution:=optional, sun.security.action;resolution:=optional, com.sun.tools.javadoc;resolution:=optional, org.apache.regexp;resolution:=optional, org.apache.tools.*;resolution:=optional, org.apache.xerces.*;resolution:=optional, org.apache.xml.*;resolution:=optional, org.aspectj.bea.jvm;resolution:=optional, org.eclipse.jface.text;resolution:=optional, org.eclipse.osgi.framework.*;resolution:=optional, org.eclipse.osgi.internal.profile;resolution:=optional, org.eclipse.osgi.service.*;resolution:=optional, org.eclipse.osgi.util;resolution:=optional, org.eclipse.update.configurator;resolution:=optional, * </import-package> </instructions> </configuration> </plugin> </plugins> <pluginmanagement> <plugins> <!--this plugin's configuration used store eclipse m2e settings only. has no influence on maven build itself.--> <plugin> <groupid>org.eclipse.m2e</groupid> <artifactid>lifecycle-mapping</artifactid> <version>1.0.0</version> <configuration> <lifecyclemappingmetadata> <pluginexecutions> <pluginexecution> <pluginexecutionfilter> <groupid> org.apache.felix </groupid> <artifactid> maven-scr-plugin </artifactid> <versionrange> [1.7.2,) </versionrange> <goals> <goal>scr</goal> </goals> </pluginexecutionfilter> <action> <ignore/> </action> </pluginexecution> </pluginexecutions> </lifecyclemappingmetadata> </configuration> </plugin> </plugins> </pluginmanagement> </build> <dependencies> <dependency> <groupid>activation</groupid> <artifactid>activation</artifactid> <!-- version 1.1 didnt how resolve error --> <version>1.0</version> <scope>runtime</scope> </dependency> <dependency> <groupid>aspectj</groupid> <artifactid>aspectjrt</artifactid> <version>1.5.2a</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.emc</groupid> <artifactid>emc-collaboration</artifactid> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupid>commons-io</groupid> <artifactid>commons-io</artifactid> <version>1.2</version> <scope>runtime</scope> </dependency> <dependency> <groupid>commons-lang</groupid> <artifactid>commons-lang</artifactid> <version>2.4</version> <scope>runtime</scope> </dependency> <dependency> <groupid>com.emc</groupid> <artifactid>emc-admin-services-remote</artifactid> <version>1.0</version> <scope>compile</scope> <!--<systempath>${project.basedir}/src/main/resources/emc-admin-services-remote.jar</systempath>--> </dependency> <dependency> <groupid>com.emc</groupid> <artifactid>emc-bpm-services-remote</artifactid> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.emc</groupid> <artifactid>emc-ci-services-remote</artifactid> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.emc</groupid> <artifactid>emc-dfs-rt-remote</artifactid> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.emc</groupid> <artifactid>emc-dfs-services-remote</artifactid> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.emc</groupid> <artifactid>emc-search-services-remote</artifactid> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupid>com.sun.xml.fastinfoset</groupid> <artifactid>fastinfoset</artifactid> <version>1.2</version> </dependency> <dependency> <groupid>com.emc</groupid> <artifactid>http</artifactid> <version>1.0</version> <scope>runtime</scope> </dependency> <dependency> <groupid>com.sun.xml.bind</groupid> <artifactid>jaxb1-impl</artifactid> <version>2.1.4</version> <scope>runtime</scope> </dependency> <dependency> <groupid>javax.xml</groupid> <artifactid>jaxb-api</artifactid> <version>2.0</version> <scope>runtime</scope> </dependency> <dependency> <groupid>com.sun.xml.bind</groupid> <artifactid>jaxb-impl</artifactid> <version>2.1.11</version> <scope>runtime</scope> </dependency> <dependency> <groupid>javax.xml</groupid> <artifactid>jaxws-api</artifactid> <version>2.1</version> </dependency> <dependency> <groupid>com.sun.xml.ws</groupid> <artifactid>jaxws-rt</artifactid> <version>2.1.7</version> </dependency> <dependency> <groupid>javax.xml.bind</groupid> <artifactid>jsr173_api</artifactid> <version>1.0</version> </dependency> <dependency> <groupid>javax.jws</groupid> <artifactid>jsr181-api</artifactid> <version>1.0</version> </dependency> <dependency> <groupid>javax.annotation</groupid> <artifactid>jsr250-api</artifactid> <version>1.0</version> </dependency> <dependency> <groupid>org.jvnet</groupid> <artifactid>mimepull</artifactid> <version>1.4</version> </dependency> <dependency> <groupid>com.sun.org.apache.xml.internal</groupid> <artifactid>resolver</artifactid> <version>20050927</version> <scope>runtime</scope> </dependency> <dependency> <groupid>javax.xml</groupid> <artifactid>saaj-api</artifactid> <version>1.3</version> </dependency> <dependency> <groupid>com.sun.xml.messaging.saaj</groupid> <artifactid>saaj-impl</artifactid> <version>1.3.3</version> </dependency> <dependency> <groupid>javax.servlet</groupid> <artifactid>servlet-api</artifactid> <version>1.0</version> </dependency> <dependency> <groupid>com.sun.xml.stream</groupid> <artifactid>sjsxp</artifactid> <version>1.0</version> </dependency> <dependency> <groupid>org.jvnet.staxex</groupid> <artifactid>stax-ex</artifactid> <version>1.0</version> <scope>runtime</scope> <!--<systempath>${project.basedir}/src/main/resources/stax-ex.jar</systempath>--> </dependency> <dependency> <groupid>com.sun.xml.stream.buffer</groupid> <artifactid>streambuffer</artifactid> <version>0.8</version> </dependency> <dependency> <groupid>xerces</groupid> <artifactid>xercesimpl</artifactid> <version>2.5.0</version> </dependency> <dependency> <groupid>org.apache.felix</groupid> <artifactid>org.apache.felix.scr.annotations</artifactid> <version>1.6.0</version> <scope>provided</scope> </dependency> <dependency> <groupid>org.osgi</groupid> <artifactid>org.osgi.core</artifactid> <version>4.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupid>org.apache.sling</groupid> <artifactid>org.apache.sling.commons.osgi</artifactid> <version>2.0.2-incubator</version> <type>bundle</type> <scope>provided</scope> </dependency> <dependency> <groupid>org.apache.felix</groupid> <artifactid>org.osgi.compendium</artifactid> <version>1.4.0</version> <scope>provided</scope> </dependency> <dependency> <groupid>org.apache.sling</groupid> <artifactid>org.apache.sling.commons.log</artifactid> <version>2.0.6</version> <scope>provided</scope> </dependency> </dependencies> </project>
bundle classpath after installing osgi console:
bundle classpath ., sjsxp-1.0.jar, emc-collaboration-1.0.jar, fastinfoset-1.2.jar, aspectjrt-1.5.2a.jar,stax-api-1.0.jar,jsr250-api-1.0.jar,activation-1.0.jar, resolver-20050927.jar,streambuffer-0.8.jar,jsr181-api-1.0.jar, jsr173_api-1.0.jar,jaxb1-impl-2.1.4.jar, emc-dfs-rt-remote-1.0.jar, commons-lang-2.4.jar,commons-io-1.2.jar,stax-ex-1.0.jar,saaj-impl-1.3.3.jar, jaxws-rt-2.1.7.jar,xercesimpl-2.5.0.jar,jaxb-api-2.0.jar,mimepull-1.4.jar, emc-bpm-services-remote-1.0.jar,emc-search-services-remote-1.0.jar,activation-1.1.jar,http-1.0.jar, jaxb-impl-2.1.11.jar,jaxws-api-2.1.jar,emc-ci-services-remote-1.0.jar, emc-admin-services-remote-1.0.jar, emc-dfs-services-remote-1.0.jar,servlet-api-1.0.jar,saaj-api-1.3.jar
my java code:
public void init() throws exception { contextfactory contextfactory = contextfactory.getinstance(); servicecontext = contextfactory.newcontext(); repositoryidentity repositoryidentity = new repositoryidentity(); repositoryidentity.setrepositoryname(repository); repositoryidentity.setusername(user); repositoryidentity.setpassword(pass); servicecontext.addidentity(repositoryidentity); servicefactory servicefactory = servicefactory.getinstance(); //error thrown here: objectservice = servicefactory.getremoteservice(iobjectservice.class, servicecontext, module, host); queryservice = servicefactory.getremoteservice(iqueryservice.class, servicecontext, module, host); }
i've seen similar problem here: https://community.emc.com/thread/82798 solution provided there didn't me. tried
- changing jre version higher 1.5
- making sure make sure creating class of type com.emc.documentum.fs.services.core.client.iobjectservice (and not com.emc.documentum.fs.services.core.impl.iobjectservice).
- trying more parameterized version of getremoteservice remove ambiguties call.
- and lots of other things, installing external jars in separate bundle , importing them.
it looks maven dependency problem, can't figure out, included .jars in project used in eclipse project, should work same, shouldn't it?
i appreciate help.
edit: tried changing export-packages to: info.hartmann.dfs.api, com.emc.documentum.* in other words, tried exporting documentum packages. above listed error dissapeared, got new one:
caused by: com.emc.documentum.fs.rt.impl.servicemodel.servicemodelexception: service descriptor file not found: "services-core-service-model.xml". @ com.emc.documentum.fs.rt.impl.servicemodel.javabeantreefactory.getmodulebyname(javabeantreefactory.java:65) @ com.emc.documentum.fs.rt.impl.servicemodel.javabeantreefactory.getmodule(javabeantreefactory.java:42) @ com.emc.documentum.fs.rt.context.servicefactory.makeserviceurl(servicefactory.java:332) @ com.emc.documentum.fs.rt.context.servicefactory.getremoteservice(servicefactory.java:143) @ com.emc.documentum.fs.rt.context.servicefactory.getremoteservice(servicefactory.java:197) @ info.hartmann.dfs.impl.handler.init(handler.java:112)
unfortunatelly, don't know if moves me 1 step further or 1 step behind.
it looks user bundle missing wiring com.emc.documentum.fs.services.core.client.objectservicedescriptor
. being in classpath not enough
confirm javabeantreefactory
bundle imports package com.emc.documentum.fs.services.core.client
Comments
Post a Comment