Florian,

I compiled and added the modified PortProvider to my classpath. I have now an 
issue related to WS-Security : 

Caused by: javax.xml.ws.soap.SOAPFaultException: An error was discovered 
processing the <wsse:Security> header
        at 
com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:189)
        at 
com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:122)
        at 
com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:119)
        at 
com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
        at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
        at $Proxy119.getRepositoryInfo(Unknown Source)
        at 
org.apache.chemistry.opencmis.client.bindings.spi.webservices.RepositoryServiceImpl.getRepositoryInfo(RepositoryServiceImpl.java:100)

this is how I set the binding parameters :

        /**
         * Binding Web-Services OpenCMIS
         */
        private Map<String, String> createWebServiceParameters() {
                Map<String, String> sessionParameters = new HashMap<String, 
String>();
                sessionParameters.put(SessionParameter.BINDING_TYPE,
                                BindingType.WEBSERVICES.value());
                sessionParameters.put(SessionParameter.WEBSERVICES_ACL_SERVICE,
                                cmsWebserviceURL + "/ACLService?wsdl");
                
sessionParameters.put(SessionParameter.WEBSERVICES_DISCOVERY_SERVICE,
                                cmsWebserviceURL + "/DiscoveryService?wsdl");
                
sessionParameters.put(SessionParameter.WEBSERVICES_MULTIFILING_SERVICE,
                                cmsWebserviceURL + "/MultiFilingService?wsdl");
                
sessionParameters.put(SessionParameter.WEBSERVICES_NAVIGATION_SERVICE,
                                cmsWebserviceURL + "/NavigationService?wsdl");
                
sessionParameters.put(SessionParameter.WEBSERVICES_OBJECT_SERVICE,
                                cmsWebserviceURL + "/ObjectService?wsdl");
                
sessionParameters.put(SessionParameter.WEBSERVICES_POLICY_SERVICE,
                                cmsWebserviceURL + "/PolicyService?wsdl");
                sessionParameters.put(
                                
SessionParameter.WEBSERVICES_RELATIONSHIP_SERVICE,
                                cmsWebserviceURL + "/RelationshipService?wsdl");
                
sessionParameters.put(SessionParameter.WEBSERVICES_REPOSITORY_SERVICE,
                                cmsWebserviceURL + "/RepositoryService?wsdl");
                
sessionParameters.put(SessionParameter.WEBSERVICES_VERSIONING_SERVICE,
                                cmsWebserviceURL + "/VersioningService?wsdl");

                sessionParameters.put(SessionParameter.USER, cmsUser);
                sessionParameters.put(SessionParameter.PASSWORD, cmsPassword);

                return sessionParameters;
        }

My project depends on cxf-rt-ws-security.jar, I tried to remove this dependency 
but I have the same error.

I also tried to play with SessionParameters AUTH_SOAP_USERNAMETOKEN & 
AUTH_HTTP_BASIC with no luck.

If I look into requestContext, Soap header are correctly filled by 
authentication provider...


Any idea ?

-----Florian Müller <[email protected]> a écrit : -----

A : [email protected], [email protected]
De : Florian Müller <[email protected]>
Date : 17/01/2011 16:47
Objet : Re: [OpenCMIS] Incompatibility with CXF

All changes are in the trunk (0.3-INCUBATING-SNAPSHOT) and only there.
You have rebuild OpenCMIS from the sources in order to use it.

It's not very convenient, I know...


@all: How big is the interest to support CXF? 
The implementation is basically done, but setting up the build environment with 
all the dependencies and RI/CXF collisions could become a nightmare. We would 
also have to run the FIT tests twice.


- Florian


On 17/01/2011 15:40, [email protected] wrote:
> Florian,
> 
> I saw you made several changes to the opencmis-client-bindings classes. 
> Can you confirm I have to use this with the trunk version 
> (0.3-INCUBATING-SNAPSHOT) ? Do I have to rebuild openCMIS from sources 
> or will it be generated tomorrow on the snapshot repository ?
> 
> thank you
> 
> 
> 
> -----Florian Müller <[email protected]> a écrit : -----
> 
>     A : [email protected]
>     De : Florian Müller <[email protected]>
>     Date : 17/01/2011 16:08
>     cc: [email protected]
>     Objet : Re: [OpenCMIS] Incompatibility with CXF
> 
>     There seems to be no reasonable way to make that work with class
>     loader magic.
> 
>     So, I added a class that makes the OpenCMIS client work with CXF. I
>     ran a few smoke tests and it seems to work but consider it untested.
>     You also have to build the class yourself as we don't have CXF in
>     our build environment.
> 
> 
>     Here are the details:
> 
>     - The following directory contains now a file "PortProvider.java-cxf":
>     
> /chemistry-opencmis-client/chemistry-opencmis-client-bindings/src/main/java/org/apache/chemistry/opencmis/client/bindings/spi/webservices
> 
>     - Get the file, rename it to "PortProvider.java" and compile it.
>     You'll need the OpenCMIS jars and CXF jars in the classpath.
> 
>     - When you run your application, make sure that the new class will
>     be found in the classpath before the OpenCMIS jars.
>     Or, replace the class in the chemistry-opencmis-client-bindings jar.
> 
> 
>     Florian
> 
> 
>     On 17/01/2011 13:21, [email protected] wrote:
>      > Indeed it may happen if there are any other explicit references to
>      > jax-ws classes.
>      >
>      >
>      >
>      > -----Florian Müller <[email protected]> a écrit : -----
>      >
>      > A : [email protected], [email protected]
>      > De : Florian Müller <[email protected]>
>      > Date : 17/01/2011 12:39
>      > Objet : Re: [OpenCMIS] Incompatibility with CXF
>      >
>      > That's an interesting approach. I'll give it a try.
>      > But I assume it will only defer the problem. I guess we will see
>      > other ClassCastException later.
>      >
>      > - Florian
>      >
>      >
>      > On 17/01/2011 11:38, [email protected] wrote:
>      > > Maybe somthing like this would do the trick :
>      > >
>      > >
>      > > ClassLoader cl = new URLClassLoader(new URL[0],
>      > > Thread.currentThread().getContextClassLoader()) {
>      > > public InputStream getResourceAsStream(String s) {
>      > > if
>      > >
>      >
>     
> ("*META*-*INF*/*services*/*javax*.*xml*.*ws*.*spi*.*Provider*".equals("s"))
>      >
>      > > {
>      > > //return IS to com.sun.xml.ws.spi.ProviderImpl
>      > > }
>      > > return super.getResourceAsStream(s);
>      > > }
>      > > public URL getResource(String s) {
>      > > if
>      > >
>      >
>     
> ("*META*-*INF*/*services*/*javax*.*xml*.*ws*.*spi*.*Provider*".equals("s"))
>      >
>      > > {
>      > > //return URL to com.sun.xml.ws.spi.ProviderImpl
>      > > }
>      > > return super.getResource(s);
>      > > }
>      > > };
>      > >
>      > > //replace classloader
>      > > Thread.currentThread().setContextClassLoader(cl);
>      > >
>      > > // initialize openCMIS Services
>      > > [...]
>      > >
>      > > //restore default classloader
>      > > Thread.currentThread().setContextClassLoader(cl.getParent());
>      > >
>      > >
>      > >
>      > >
>      > > Romain WILBERT
>      > > Ing�nieur d�veloppement
>      > > AKKA Informatique & Syst�mes
>      > >
>      > > -----Florian M�ller <[email protected]> a �crit : -----
>      > >
>      > > A : [email protected], [email protected]
>      > > De : Florian M�ller <[email protected]>
>      > > Date : 17/01/2011 11:48
>      > > Objet : Re: [OpenCMIS] Incompatibility with CXF
>      > >
>      > > Hi Romain,
>      > >
>      > > It is possible to force the use of com.sun.xml.ws.spi.ProviderImpl
>      > > by setting this system property:
>      > > javax.xml.ws.spi.Provider = com.sun.xml.ws.spi.ProviderImpl
>      > >
>      > > But that would probably interfere with your CXF Web Services. It's
>      > > not possible to use both with the same class loader.
>      > >
>      > > I'll try to add some class loader magic to OpenCMIS, but I can't
>      > > promise that this will work eventually.
>      > >
>      > >
>      > > - Florian
>      > >
>      > >
>      > > On 14/01/2011 16:27, [email protected] wrote:
>      > > > Hi !
>      > > >
>      > > > Same problem as Erwan (apache CXF cohabitation...) =>
>      > >
>      >
>     
> (http://mail-archives.apache.org/mod_mbox/incubator-chemistry-dev/201101.mbox/browser)
>      > > >
>      > > > Since my project exposes CXF WebServices, I have an error while
>      > > initializing OpenCMIS WebService client :
>      > > >
>      > > >
>      > >
>      >
>     org.apache.chemistry.opencmis.commons.exceptions.CmisConnectionException:
>      > > Cannot initalize Web Services port object: $Proxy340 cannot be cast
>      > > to com.sun.xml.ws.developer.WSBindingProvider
>      > > > at
>      > >
>      >
>     
> org.apache.chemistry.opencmis.client.bindings.spi.webservices.PortProvider.createPortObject(PortProvider.java:325)
>      > > >
>      > > > This happens because the first found provider on classloader is
>      > > org.apache.cxf.jaxws22.spi.ProviderImpl (cxf-rt-frontend-jaxws.jar
>      > > precedes jaxws-rt in classloader). My Proxy is a
>      > > org.apache.cxf.jaxws.JaxWsClientProxy, which causes the
>      > > ClassCastException.
>      > > >
>      > > >
>      > > > Any workaround for this ? Why don't you force the use of
>      > > com.sun.xml.ws.spi.ProviderImpl from jaxws-rt as it is anyway a
>      > > Maven dependency of opencmis-client ?
>      > > >
>      > > > Thanks.
>      > > >
>      > > > Romain WILBERT
>      > > > Ing�nieur d�veloppement
>      > > > AKKA Informatique& Syst�mes
>      > > >
>      > > >
>      > >
>      > >
>      > >
>      >
>      >
>      >
> 
> 
> 


Reply via email to