We have a Maven/Jetty setup for the OpenCMIS integration tests, which works. Maybe you can spot the difference by looking at the pom: /chemistry-opencmis-test/chemistry-opencmis-test-fit/pom.xml
The cause of the ClassCastException is that it falls back to the JAX-WS implementation in the JRE, which incompatible with OpenCMIS. You have to have a newer JAX-WS implementation in the classpath. Florian On 03/08/2011 16:10, Piergiorgio Lucidi wrote: > The only difference between the two versions of the war of the InMemory > Repository is that in the 0.4.0 (that works fine on Jetty) there are two > more dependencies: > > - jsr181-api-1.0-MR1.jar > - jsr250-api-1.0.jar > > Could be the deployment problem caused by this lack? > If yes, it could be fixed reincluding this file in the building process of > the webapp. > > 2011/8/3 Piergiorgio Lucidi <[email protected]> > >> Hi Florian, >> >> thank you for your suggestion but trying to deploy the InMemory Repository >> webapp on Tomcat works fine. >> It seems that there is a problem only on Jetty, maybe later I will try to >> add other dependencies and I'll let you know. >> >> Now I'm trying with the 0.5.0-SNAPSHOT but without any result. >> >> 2011/8/3 Florian Müller <[email protected]> >> >>> Hi, >>> >>> Make sure that you have all OpenCMIS dependencies in your classpath. >>> >>> >>> Florian >>> >>> On 03/08/2011 15:44, Piergiorgio Lucidi wrote: >>>> Building the latest version of the code in the trunk, the InMemory >>>> Repository can't deploy anymore, it returns this exception trying >>> deploying >>>> on Jetty: >>>> >>>> GRAVE: WSSERVLET11: failed to parse runtime descriptor: >>>>> com.sun.xml.ws.util.ServiceConfigurationError: >>>>> com.sun.xml.ws.api.pipe.TubelineAssemblerFactory: Provider >>>>> >>> org.apache.chemistry.opencmis.client.bindings.spi.webservices.wss.WssTubelineAssemblerFactory >>>>> is specified in >>>>> >>> file:/Users/piergiorgiolucidi/Documents/workspaces/manifold/opencmis/chemistry-opencmis-client/chemistry-opencmis-client-bindings/target/classes/META-INF/services/com.sun.xml.ws.api.pipe.TubelineAssemblerFactorybut >>>>> could not be instantiated: java.lang.ClassCastException >>>>> com.sun.xml.ws.util.ServiceConfigurationError: >>>>> com.sun.xml.ws.api.pipe.TubelineAssemblerFactory: Provider >>>>> >>> org.apache.chemistry.opencmis.client.bindings.spi.webservices.wss.WssTubelineAssemblerFactory >>>>> is specified in >>>>> >>> file:/Users/piergiorgiolucidi/Documents/workspaces/manifold/opencmis/chemistry-opencmis-client/chemistry-opencmis-client-bindings/target/classes/META-INF/services/com.sun.xml.ws.api.pipe.TubelineAssemblerFactorybut >>>>> could not be instantiated: java.lang.ClassCastException >>>>> at com.sun.xml.ws.util.ServiceFinder.fail(ServiceFinder.java:233) >>>>> at com.sun.xml.ws.util.ServiceFinder.access$300(ServiceFinder.java:141) >>>>> at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next( >>>>> ServiceFinder.java:379) >>>>> at com.sun.xml.ws.api.pipe.TubelineAssemblerFactory.create( >>>>> TubelineAssemblerFactory.java:104) >>>>> at com.sun.xml.ws.server.WSEndpointImpl.<init>(WSEndpointImpl.java:147) >>>>> at com.sun.xml.ws.server.EndpointFactory.createEndpoint( >>>>> EndpointFactory.java:218) >>>>> at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:467) >>>>> at >>> com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parseAdapters( >>>>> DeploymentDescriptorParser.java:253) >>>>> at com.sun.xml.ws.transport.http.DeploymentDescriptorParser.parse( >>>>> DeploymentDescriptorParser.java:147) >>>>> at >>>>> >>> com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized( >>>>> WSServletContextListener.java:108) >>>>> at org.mortbay.jetty.handler.ContextHandler.startContext( >>>>> ContextHandler.java:549) >>>>> at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) >>>>> at org.mortbay.jetty.webapp.WebAppContext.startContext( >>>>> WebAppContext.java:1282) >>>>> at org.mortbay.jetty.handler.ContextHandler.doStart( >>>>> ContextHandler.java:518) >>>>> at >>> org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499) >>>>> at >>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50 >>>>> ) >>>>> at org.mortbay.jetty.handler.HandlerCollection.doStart( >>>>> HandlerCollection.java:152) >>>>> at >>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50 >>>>> ) >>>>> at org.mortbay.jetty.handler.HandlerWrapper.doStart( >>>>> HandlerWrapper.java:130) >>>>> at org.mortbay.jetty.Server.doStart(Server.java:224) >>>>> at >>> org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50 >>>>> ) >>>>> at org.apache.manifoldcf.cmis_tests.Base.setUp(Base.java:333) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>> at sun.reflect.NativeMethodAccessorImpl.invoke( >>>>> NativeMethodAccessorImpl.java:39) >>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke( >>>>> DelegatingMethodAccessorImpl.java:25) >>>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( >>>>> FrameworkMethod.java:44) >>>>> at org.junit.internal.runners.model.ReflectiveCallable.run( >>>>> ReflectiveCallable.java:15) >>>>> at org.junit.runners.model.FrameworkMethod.invokeExplosively( >>>>> FrameworkMethod.java:41) >>>>> at org.junit.internal.runners.statements.RunBefores.evaluate( >>>>> RunBefores.java:27) >>>>> at org.junit.internal.runners.statements.RunAfters.evaluate( >>>>> RunAfters.java:31) >>>>> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored( >>>>> BlockJUnit4ClassRunner.java:79) >>>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >>>>> BlockJUnit4ClassRunner.java:71) >>>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >>>>> BlockJUnit4ClassRunner.java:49) >>>>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >>>>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >>>>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >>>>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >>>>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >>>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >>>>> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( >>>>> JUnit4TestReference.java:49) >>>>> at org.eclipse.jdt.internal.junit.runner.TestExecution.run( >>>>> TestExecution.java:38) >>>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >>>>> RemoteTestRunner.java:467) >>>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >>>>> RemoteTestRunner.java:683) >>>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run( >>>>> RemoteTestRunner.java:390) >>>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( >>>>> RemoteTestRunner.java:197) >>>>> Caused by: java.lang.ClassCastException >>>>> at java.lang.Class.cast(Class.java:2990) >>>>> at com.sun.xml.ws.util.ServiceFinder$LazyIterator.next( >>>>> ServiceFinder.java:374) >>>>> ... 43 more >>>> >>>> >>>> >>>> 2011/8/3 Piergiorgio Lucidi <[email protected]> >>>> >>>>> I'm building OpenCMIS to investigate me too :-P >>>>> >>>>> >>>>> 2011/8/3 Jens Hübel <[email protected]> >>>>> >>>>>> Thanks for posting! I will try to rebuild and take a look why it does >>> not >>>>>> work. To get further information I need the server logs, but with your >>> code >>>>>> I can debug it. >>>>>> >>>>>> Jens >>>>>> >>>>>> -----Original Message----- >>>>>> From: Piergiorgio Lucidi [mailto:[email protected]] >>>>>> Sent: Mittwoch, 3. August 2011 14:48 >>>>>> To: [email protected] >>>>>> Subject: Re: CMIS and Lucene >>>>>> >>>>>> Hi Jens, >>>>>> >>>>>> here the code of my integration test that is used to create some >>> content >>>>>> in >>>>>> the InMemory Repository, the OpenCMIS server is running because it is >>>>>> bootstrapped by Jetty / Maven. The CMIS Repository Connector works >>> fine >>>>>> with >>>>>> Alfresco 3.4d Community, but I would like to have the OpenCMIS server >>> in >>>>>> the >>>>>> test suite. >>>>>> >>>>>> In the following snippet I started to initialize the test environment >>> with >>>>>> a >>>>>> new folder with a new content, here I don't have any problem, it works >>>>>> with >>>>>> the InMemory Repository: >>>>>> >>>>>> private Session getCmisClientSession(){ >>>>>>> // default factory implementation >>>>>>> SessionFactory factory = SessionFactoryImpl.newInstance(); >>>>>>> Map<String, String> parameters = new HashMap<String, String>(); >>>>>>> // user credentials >>>>>>> parameters.put(SessionParameter.USER, "dummyuser"); >>>>>>> parameters.put(SessionParameter.PASSWORD, "dummysecret"); >>>>>>> // connection settings >>>>>>> parameters.put(SessionParameter.ATOMPUB_URL, >>>>>> CMIS_ENDPOINT_TEST_SERVER >>>>>>> ); >>>>>>> parameters.put(SessionParameter.BINDING_TYPE, BindingType.ATOMPUB >>>>>>> .value()); >>>>>>> // create session >>>>>>> return >>> factory.getRepositories(parameters).get(0).createSession(); >>>>>>> } >>>>>>> @Before >>>>>>> public void createTestArea() >>>>>>> throws Exception >>>>>>> { >>>>>>> try >>>>>>> { >>>>>>> Session session = getCmisClientSession(); >>>>>>> //creating a new folder >>>>>>> Folder root = session.getRootFolder(); >>>>>>> Map<String, Object> folderProperties = new HashMap<String, >>>>>>> Object>(); >>>>>>> folderProperties.put(PropertyIds.OBJECT_TYPE_ID, >>> "cmis:folder"); >>>>>>> folderProperties.put(PropertyIds.NAME, "testdata"); >>>>>>> >>>>>>> Folder newFolder = root.createFolder(folderProperties); >>>>>>> //create a new content in the folder >>>>>>> String name = "testdata1.txt"; >>>>>>> // properties >>>>>>> // (minimal set: name and object type id) >>>>>>> Map<String, Object> contentProperties = new HashMap<String, >>>>>>> Object>(); >>>>>>> contentProperties.put(PropertyIds.OBJECT_TYPE_ID, >>>>>> "cmis:document"); >>>>>>> contentProperties.put(PropertyIds.NAME, name); >>>>>>> >>>>>>> // content >>>>>>> byte[] content = "CMIS Testdata One".getBytes(); >>>>>>> InputStream stream = new ByteArrayInputStream(content); >>>>>>> ContentStream contentStream = new ContentStreamImpl(name, >>>>>> newBigInteger(content), >>>>>>> "text/plain", stream); >>>>>>> >>>>>>> // create a major version >>>>>>> Document newContent1 = >>> newFolder.createDocument(contentProperties, >>>>>>> contentStream, null); >>>>>> >>>>>> >>>>>> But if I try to search the new content in the InMemory Repository, in >>> the >>>>>> same way I implemented in the CMIS Repository Connector: >>>>>> >>>>>> ItemIterable<QueryResult> results = session.query("SELECT * FROM >>>>>>> cmis:folder WHERE cmis:name='testdata'", false); >>>>>>> for (QueryResult result : results) { >>>>>>> String id = >>> result.getPropertyValueById(PropertyIds.OBJECT_ID); >>>>>>> } >>>>>> >>>>>> >>>>>> >>>>>> It returns the following exception: >>>>>> >>>>>> >>> org.apache.chemistry.opencmis.commons.exceptions.CmisRuntimeException: >>>>>> null >>>>>>> at >>>>>>> >>>>>> >>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.convertStatusCode( >>>>>>> AbstractAtomPubService.java:450) >>>>>>> at >>>>>>> >>>>>> >>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.AbstractAtomPubService.post( >>>>>>> AbstractAtomPubService.java:568) >>>>>>> at >>>>>>> >>>>>> >>> org.apache.chemistry.opencmis.client.bindings.spi.atompub.DiscoveryServiceImpl.query( >>>>>>> DiscoveryServiceImpl.java:141) >>>>>>> at >>> org.apache.chemistry.opencmis.client.runtime.SessionImpl$3.fetchPage( >>>>>>> SessionImpl.java:557) >>>>>>> at >>>>>>> >>>>>> >>> org.apache.chemistry.opencmis.client.runtime.util.AbstractIterator.getCurrentPage( >>>>>>> AbstractIterator.java:132) >>>>>>> at >>>>>>> >>>>>> >>> org.apache.chemistry.opencmis.client.runtime.util.CollectionIterator.hasNext( >>>>>>> CollectionIterator.java:48) >>>>>>> at org.apache.manifoldcf.cmis_tests.APISanityTest.createTestArea( >>>>>>> APISanityTest.java:139) >>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>>>>> at sun.reflect.NativeMethodAccessorImpl.invoke( >>>>>>> NativeMethodAccessorImpl.java:39) >>>>>>> at sun.reflect.DelegatingMethodAccessorImpl.invoke( >>>>>>> DelegatingMethodAccessorImpl.java:25) >>>>>>> at java.lang.reflect.Method.invoke(Method.java:597) >>>>>>> at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall( >>>>>>> FrameworkMethod.java:44) >>>>>>> at org.junit.internal.runners.model.ReflectiveCallable.run( >>>>>>> ReflectiveCallable.java:15) >>>>>>> at org.junit.runners.model.FrameworkMethod.invokeExplosively( >>>>>>> FrameworkMethod.java:41) >>>>>>> at org.junit.internal.runners.statements.RunBefores.evaluate( >>>>>>> RunBefores.java:27) >>>>>>> at org.junit.internal.runners.statements.RunAfters.evaluate( >>>>>>> RunAfters.java:31) >>>>>>> at org.junit.runners.BlockJUnit4ClassRunner.runNotIgnored( >>>>>>> BlockJUnit4ClassRunner.java:79) >>>>>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >>>>>>> BlockJUnit4ClassRunner.java:71) >>>>>>> at org.junit.runners.BlockJUnit4ClassRunner.runChild( >>>>>>> BlockJUnit4ClassRunner.java:49) >>>>>>> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >>>>>>> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >>>>>>> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >>>>>>> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >>>>>>> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >>>>>>> at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >>>>>>> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run( >>>>>>> JUnit4TestReference.java:49) >>>>>>> at org.eclipse.jdt.internal.junit.runner.TestExecution.run( >>>>>>> TestExecution.java:38) >>>>>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >>>>>>> RemoteTestRunner.java:467) >>>>>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( >>>>>>> RemoteTestRunner.java:683) >>>>>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run( >>>>>>> RemoteTestRunner.java:390) >>>>>>> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( >>>>>>> RemoteTestRunner.java:197) >>>>>> >>>>>> >>>>>> Let me know if you have any hints! >>>>>> >>>>>> Thank you again for your support. >>>>>> >>>>>> Regards, >>>>>> >>>>>> Piergiorgio >>>>>> >>>>>> 2011/8/3 Jens Hübel <[email protected]> >>>>>> >>>>>>> Hi Pergiorio, >>>>>>> >>>>>>> do you have a code piece that I can take a look at? What is your >>> client >>>>>>> API? Do you connect to Chemistry client API >>>>>> (chemistry-opencmis-client-api)? >>>>>>> Or perhaps you can grab the query sent from the log file? >>>>>>> >>>>>>> Thanks Jens >>>>>>> >>>>>>> >>>>>>> -----Original Message----- >>>>>>> From: Piergiorgio Lucidi [mailto:[email protected]] >>>>>>> Sent: Mittwoch, 3. August 2011 13:22 >>>>>>> To: [email protected] >>>>>>> Subject: Re: CMIS and Lucene >>>>>>> >>>>>>> Hi Jens, >>>>>>> >>>>>>> I contributed to the Apache ManifoldCF (ex Lucene Connector >>> Framework) >>>>>>> project implementing the CMIS Connector using OpenCMIS 0.4.0. >>>>>>> >>>>>>> Now I'm working on integration test trying to use the OpenCMIS >>> InMemory >>>>>>> Repository that is available from Apache Chemistry ;) >>>>>>> >>>>>>> I have some problems because now I'm finishing my test implementation >>>>>> but >>>>>>> it >>>>>>> seems that I can't execute queries on the InMemory Repository, it >>>>>> returns a >>>>>>> null string in the convertStatusCode method. >>>>>>> >>>>>>> The CMIS Repository Connector that I implemented for ManifoldCF has a >>>>>> job >>>>>>> parameter that is the CMIS Query, this parameter is used by agents to >>>>>>> select >>>>>>> all the contents that needs to be indexed on the Output Connector >>> (for >>>>>>> example Apache Solr). >>>>>>> Without a query feature exposed by the InMemory Repository I can't >>> test >>>>>> the >>>>>>> connector in the right way. >>>>>>> >>>>>>> I tried to use the latest version of the InMemory Repository >>>>>>> (0.5.0-SNAPSHOT) but with the same result. >>>>>>> >>>>>>> Have you got any ideas to solve this problem? >>>>>>> Thank you for your support. >>>>>>> >>>>>>> Regards, >>>>>>> Piergiorgio >>>>>>> >>>>>>> >>>>>>> 2011/8/3 Jens Hübel <[email protected]> >>>>>>> >>>>>>>> Hi Chemistries, >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> is anyone of us already involved in the Lucene project? >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Reading this here >>>>>>>> http://search-lucene.com/m/wI38e1K3BWJ&subj=Re+CMIS+Connector+Tests >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> I think it would make sense to give them an introduction to what we >>>>>> have. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> if I understand this correctly one of the options they discuss is to >>>>>>> create >>>>>>>> an InMemory mock server. It does not make much sense to duplicate >>> what >>>>>> we >>>>>>>> already have (and if we need getContentChanges() for that I am happy >>>>>> to >>>>>>>> implement this). >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Jens >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Piergiorgio Lucidi >>>>>>> Web: http://about.me/piergiorgiolucidi >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Piergiorgio Lucidi >>>>>> Web: http://about.me/piergiorgiolucidi >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Piergiorgio Lucidi >>>>> Web: http://about.me/piergiorgiolucidi >>>>> >>>>> >>>> >>>> >>> >>> >> >> >> -- >> Piergiorgio Lucidi >> Web: http://about.me/piergiorgiolucidi >> >> > >
