12 Replies Latest reply on Jun 14, 2010 4:13 PM by sergeyb

    PicketLink STS WSDL problem with JBossWS CXF

    sguilhen

      I am currently testing the STS on top of our three JBossWS stacks and I'm having a problem to deploy the service on JBossWS CXF. Before jumping to the error I'll provide a bit of information about the STS itself.

       

      PicketLinkSTS is a Web Service that receives WS-Trust requests. A WS-Trust request can come in various flavors, such as a single request (top-level element is a RequestSecurityToken element) or a collection of requests (top-level element is a RequestSecurityTokenCollection element). To better support different types of requests I've made PicketLinkSTS a WebServiceProvider that receives a Source instance and parses this source to obtain the WS-Trust request.

       

      As with any WebServiceProvider, a WSDL is needed to deploy the service. So I came up with the following WSDL:

       

      <?xml version="1.0"?>
      <wsdl:definitions name="PicketLinkSTS" targetNamespace="urn:picketlink:identity-federation:sts"
          xmlns:tns="urn:picketlink:identity-federation:sts" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
          xmlns:wsap10="http://www.w3.org/2006/05/addressing/wsdl"
          xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/">
        <wsdl:types>
          <xs:schema targetNamespace="urn:picketlink:identity-federation:sts" 
            xmlns:tns="urn:picketlink:identity-federation:sts" 
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            version="1.0">
            <xs:complexType name="MessageBody">
              <xs:sequence>
                  <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any"/>
              </xs:sequence>
            </xs:complexType>
          </xs:schema>
        </wsdl:types>
        <wsdl:message name="RequestSecurityToken">
          <wsdl:part name="rstMessage" element="tns:MessageBody"/>
        </wsdl:message>
        <wsdl:message name="RequestSecurityTokenResponse">
          <wsdl:part name="rstrMessage" element="tns:MessageBody"/>
        </wsdl:message>
        <wsdl:portType name="SecureTokenService">
          <wsdl:operation name="IssueToken">
            <wsdl:input wsap10:Action="http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue" message="tns:RequestSecurityToken"/>
            <wsdl:output wsap10:Action="http://schemas.xmlsoap.org/ws/2005/02/trust/RSTR/Issue" message="tns:RequestSecurityTokenResponse"/>
          </wsdl:operation>
        </wsdl:portType>
        <wsdl:binding name="STSBinding" type="tns:SecureTokenService">
          <soap12:binding transport="http://schemas.xmlsoap.org/soap/http"/>
          <wsdl:operation name="IssueToken">
            <soap12:operation soapAction="http://schemas.xmlsoap.org/ws/2005/02/trust/RST/Issue" style="document"/>
            <wsdl:input>
              <soap12:body use="literal"/>
            </wsdl:input>
            <wsdl:output>
              <soap12:body use="literal"/>
            </wsdl:output>
          </wsdl:operation>
        </wsdl:binding>
        <wsdl:service name="PicketLinkSTS">
          <wsdl:port name="PicketLinkSTSPort" binding="tns:STSBinding">
            <soap12:address location="http://localhost:8080/picketlink-sts"/>
          </wsdl:port>
        </wsdl:service>
      </wsdl:definitions>
      

       

      Notice that instead of defining all possible types of requests I've decided to use a more generic format (see the MessageBody element).

       

      Then I package the STS along with its WSDL in a war and deploy it on JBoss. When Native or Metro stacks are being used, the war deployes fine and I'm able to call the STS from a remote client in order to issue or validate a security token. However, when I deploy the STS war on CXF, an exception is thrown. The relevant stack trace section can be seen bellow:

       

      Caused by: javax.xml.ws.WebServiceException: org.apache.cxf.wsdl11.WSDLRuntimeException: Part rstMessage defined as element {urn:picketlink:identity-federation:sts}MessageBody which is not in the schema.
          at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:323) [:2.2.9]
          at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.doPublish(EndpointImpl.java:61) [:3.3.1.GA]
          at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:234) [:2.2.9]
          at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:466) [:2.2.9]
          at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_18]
          at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_18]
          at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_18]
          at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_18]
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1527) [:3.0.1.RELEASE]
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1468) [:3.0.1.RELEASE]
          at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400) [:3.0.1.RELEASE]
          ... 56 more
      Caused by: org.apache.cxf.wsdl11.WSDLRuntimeException: Part rstMessage defined as element {urn:picketlink:identity-federation:sts}MessageBody which is not in the schema.
          at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildMessage(WSDLServiceBuilder.java:812) [:2.2.9]
          at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildInterfaceOperation(WSDLServiceBuilder.java:582) [:2.2.9]
          at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildInterface(WSDLServiceBuilder.java:561) [:2.2.9]
          at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:332) [:2.2.9]
          at org.apache.cxf.wsdl11.WSDLServiceBuilder.buildServices(WSDLServiceBuilder.java:188) [:2.2.9]
          at org.apache.cxf.wsdl11.WSDLServiceFactory.create(WSDLServiceFactory.java:129) [:2.2.9]
          at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:415) [:2.2.9]
          at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:528) [:2.2.9]
          at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:278) [:2.2.9]
          at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:179) [:2.2.9]
          at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:99) [:2.2.9]
          at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:105) [:2.2.9]
          at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:175) [:2.2.9]
          at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:395) [:2.2.9]
          at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:302) [:2.2.9]
          ... 66 more
      

       

      As the very same war can be deployed on Native and Metro, then either I'm doing something wrong (not a WSDL expert, so this is very possible) that these stacks don't care about or the CXF validator is incorrectly rejecting a valid WSDL. Ideas?

       

      I'm attaching the picketlink-sts.war in case anyone feels like giving it a try. The picketlink-fed-1.0.3.final.jar needs to be copied to server/xx/lib too.

       

      Stefan

        • 1. Re: PicketLink STS WSDL problem with JBossWS CXF
          sguilhen

          If I change the MessageBody from complex type to a simple element:

           

          <xs:schema targetNamespace="urn:picketlink:identity-federation:sts" 
                xmlns:tns="urn:picketlink:identity-federation:sts" 
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                version="1.0" elementFormDefault="qualified">
                <xs:element name="MessageBody" type="xs:anyType"/>
          </xs:schema>
          

           

          I get past the WSDL validation error. This time deployment fails with a CCE:

           

          Caused by: javax.xml.ws.WebServiceException: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
              at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:323) [:2.2.9]
              at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.doPublish(EndpointImpl.java:61) [:3.3.1.GA]
              at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:234) [:2.2.9]
              at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:466) [:2.2.9]
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_18]
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_18]
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_18]
              at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_18]
              at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1527) [:3.0.1.RELEASE]
              at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1468) [:3.0.1.RELEASE]
              at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400) [:3.0.1.RELEASE]
              ... 52 more
          Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
              at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.initializeWSDLOperationsForProvider(JaxWsServiceFactoryBean.java:265) [:2.2.9]
              at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.initializeWSDLOperations(JaxWsServiceFactoryBean.java:257) [:2.2.9]
              at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:424) [:2.2.9]
              at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:528) [:2.2.9]
              at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:278) [:2.2.9]
              at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:179) [:2.2.9]
              at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:99) [:2.2.9]
              at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:105) [:2.2.9]
              at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:175) [:2.2.9]
              at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:395) [:2.2.9]
              at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:302) [:2.2.9]
              ... 62 more
          
          • 2. Re: PicketLink STS WSDL problem with JBossWS CXF
            sergeyb

            Hi

             

            I think the initial CXF validation error is actually valid given that you were referring to an element from the part but no element was declared in the schema.

             

            Regarding the 2nd error. Can you please try to use an anonymous complex type explicitly :

             

            <xs:element name="MessageBody">

            <xs:complexType>

                    <xs:sequence>
                        <xs:any minOccurs="0" maxOccurs="unbounded" namespace="##any"/>
                    </xs:sequence>
            </xs:complexType>

            </xs:element>

             

            Hope it will work. Now, if it does not, then while the issue is being investigated and fixed, please use the complete schema, just so that you're not blocked...

             

            thanks, Sergey

            • 3. Re: PicketLink STS WSDL problem with JBossWS CXF
              sguilhen

              Hi Sergey,

               

              I've tried what you suggested and the validation error is gone. However, I'm still running into the second error (ClassCastException):

               

              Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'PicketLinkSTS': Invocation of init method failed; nested exception is javax.xml.ws.WebServiceException: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1403) [:3.0.1.RELEASE]
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) [:3.0.1.RELEASE]
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450) [:3.0.1.RELEASE]
                  at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290) [:3.0.1.RELEASE]
                  at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) [:3.0.1.RELEASE]
                  at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287) [:3.0.1.RELEASE]
                  at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189) [:3.0.1.RELEASE]
                  at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562) [:3.0.1.RELEASE]
                  at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871) [:3.0.1.RELEASE]
                  at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423) [:3.0.1.RELEASE]
                  at org.jboss.wsf.stack.cxf.configuration.BusHolder.loadAdditionalConfig(BusHolder.java:221) [:3.3.1.GA]
                  at org.jboss.wsf.stack.cxf.configuration.BusHolder.configure(BusHolder.java:127) [:3.3.1.GA]
                  at org.jboss.wsf.stack.cxf.deployment.aspect.BusDeploymentAspect.start(BusDeploymentAspect.java:81) [:3.3.1.GA]
                  at org.jboss.webservices.integration.deployers.WSDeploymentAspectDeployer.internalDeploy(WSDeploymentAspectDeployer.java:114) [:6.0.0-SNAPSHOT]
                  at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:55) [:2.2.0.Alpha5]
                  at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179) [:2.2.0.Alpha5]
                  ... 37 more
              Caused by: javax.xml.ws.WebServiceException: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
                  at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:323) [:2.2.9]
                  at org.jboss.wsf.stack.cxf.deployment.EndpointImpl.doPublish(EndpointImpl.java:61) [:3.3.1.GA]
                  at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:234) [:2.2.9]
                  at org.apache.cxf.jaxws.EndpointImpl.publish(EndpointImpl.java:466) [:2.2.9]
                  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.6.0_18]
                  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) [:1.6.0_18]
                  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) [:1.6.0_18]
                  at java.lang.reflect.Method.invoke(Method.java:597) [:1.6.0_18]
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeCustomInitMethod(AbstractAutowireCapableBeanFactory.java:1527) [:3.0.1.RELEASE]
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1468) [:3.0.1.RELEASE]
                  at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1400) [:3.0.1.RELEASE]
                  ... 52 more
              Caused by: java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
                  at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.initializeWSDLOperationsForProvider(JaxWsServiceFactoryBean.java:265) [:2.2.9]
                  at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.initializeWSDLOperations(JaxWsServiceFactoryBean.java:257) [:2.2.9]
                  at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.buildServiceFromWSDL(ReflectionServiceFactoryBean.java:424) [:2.2.9]
                  at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:528) [:2.2.9]
                  at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:278) [:2.2.9]
                  at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:179) [:2.2.9]
                  at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:99) [:2.2.9]
                  at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:105) [:2.2.9]
                  at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:175) [:2.2.9]
                  at org.apache.cxf.jaxws.EndpointImpl.getServer(EndpointImpl.java:395) [:2.2.9]
                  at org.apache.cxf.jaxws.EndpointImpl.doPublish(EndpointImpl.java:302) [:2.2.9]
                  ... 62 more
              
              • 4. Re: PicketLink STS WSDL problem with JBossWS CXF
                sergeyb

                Hi Stefan

                 

                Just FYI : I'll be fixing https://issues.apache.org/jira/browse/CXF-2846

                 

                In meantime please try a more complete schema just to keep going

                 

                thanks, Sergey

                • 5. Re: PicketLink STS WSDL problem with JBossWS CXF
                  sguilhen

                  Hi Sergey,

                   

                  thanks for the feedback. I'll try using a more complete schema.  Perhaps the CCE has something to do with the fact that PicketLinkSTS extends Provider<Source>, which is parameterized?

                   

                  Cheers,

                  Stefan

                  • 6. Re: PicketLink STS WSDL problem with JBossWS CXF
                    sergeyb

                    Hi Stefan - it could be it actually...I'll ty to get back to you on Monday, once I have a CXF test set up.

                    But now that I look at the trace it does appear like it's not a wsdl issue anymore...

                    thanks, Sergey

                    • 7. Re: PicketLink STS WSDL problem with JBossWS CXF
                      sergeyb

                      Stefan, how exactly does a service class extending Provider<Source> look like ? The implementation details can be omitted at the moment

                       

                      thanks, Sergey

                      • 8. Re: PicketLink STS WSDL problem with JBossWS CXF
                        sergeyb

                        there are some limitations indeed in CXF with regard to extending Provider<Source>, the fix will go in shortly.

                        Now, perhaps due to the fixes which are about  to go in,  I'm not seeing th exception trace similar to the one shown here.

                        Ex, the following works fine :

                         

                        public class HWSourcePayloadProvider<T> extends AbstractSourcePayloadProvider<T> {
                            public HWSourcePayloadProvider(T data) {
                                super(data);
                            }
                        }

                         

                        @WebServiceProvider(portName = "SoapPortProviderRPCLit3", serviceName = "SOAPServiceProviderRPCLit",
                                              targetNamespace = "http://apache.org/hello_world_rpclit",
                        wsdlLocation = "/wsdl/hello_world_rpc_lit.wsdl")
                        @ServiceMode (value = javax.xml.ws.Service.Mode.PAYLOAD)
                        @HandlerChain(file = "./handlers_invocation.xml", name = "TestHandlerChain")
                        public abstract class AbstractSourcePayloadProvider<T> implements Provider<Source> {
                           
                            @Resource
                            WebServiceContext ctx;
                            private T testData;

                         

                            public AbstractSourcePayloadProvider(T data) {
                                this.testData = data;       
                            }
                           
                            public T getTestData() {
                                return testData;
                            }
                           
                            public Source invoke(Source request) {

                               ...

                            }

                        }

                         

                        So before I merge in the fix to the CXF trunk, can you confirm please how you parameterize the implementation ?

                         

                        thanks, Sergey

                        • 9. Re: PicketLink STS WSDL problem with JBossWS CXF
                          sguilhen

                          Hi Sergey,

                           

                          this is how the class looks like:

                           

                          @WebServiceProvider(serviceName = "PicketLinkSTS", portName = "PicketLinkSTSPort", targetNamespace = "urn:picketlink:identity-federation:sts", wsdlLocation = "WEB-INF/wsdl/PicketLinkSTS.wsdl")
                          @ServiceMode(value = Service.Mode.PAYLOAD)
                          public class PicketLinkSTS implements SecurityTokenService
                          {
                           
                             @Resource
                             protected WebServiceContext context;
                           
                             protected STSConfiguration config;
                          
                          
                             /*
                              * (non-Javadoc)
                              * 
                              * @see org.picketlink.identity.federation.core.wstrust.SecurityTokenService#invoke(javax.xml.transform.Source)
                              */
                             public Source invoke(Source request)
                             {
                                BaseRequestSecurityToken baseRequest;
                                try
                                {
                                   baseRequest = WSTrustJAXBFactory.getInstance().parseRequestSecurityToken(request);
                                }
                                catch (WSTrustException we)
                                {
                                   throw new RuntimeException(we);
                                }
                          
                                if (baseRequest instanceof RequestSecurityToken)
                                   return this.handleTokenRequest((RequestSecurityToken) baseRequest);
                                else if (baseRequest instanceof RequestSecurityTokenCollection)
                                   return this.handleTokenRequestCollection((RequestSecurityTokenCollection) baseRequest);
                                else
                                   throw new WebServiceException("Invalid security token request");
                             }
                          
                          }

                           

                          and this is the SecurityTokenService interface:

                           

                          public interface SecurityTokenService extends Provider<Source>
                          {
                             /*
                              * (non-Javadoc)
                              * 
                              * @see javax.xml.ws.Provider#invoke(java.lang.Object)
                              */
                             public Source invoke(Source request);
                          }
                          

                           

                          I'm just showing the invoke method as this is the only relevant method from Provider<T> that has to be implemented.

                           

                          I'm guessing that in the end PicketLinkSTS is considered a ParameterizedType and you need to call getRawType on it in order to get the Class.

                           

                          Stefan

                          • 10. Re: PicketLink STS WSDL problem with JBossWS CXF
                            sergeyb

                            Hi Stefan

                             

                            It's been fixed on CXF trunk and 2.2.x branch (2.2.10-SNAPSHOT).

                             

                            Given the definition of SecurityTokenService, I'm presuming you can continue with implementing Provider<Source> directly as a workaround.

                             

                            If you do need to use SecurityTokenService, then JBossWS/CXF trunk will need to be rebuilt with a cxf.version in the root pom.xml set to 2.2.10-SNAPSHOT. Let me know please if you decide to go this route and need any help with building the source and deploying JBossCXF into JBoss

                             

                            cheers, Sergey

                            • 11. Re: PicketLink STS WSDL problem with JBossWS CXF
                              sguilhen

                              Hi Sergey,

                               

                              thanks for looking into this. I've tried what you suggested (get rid of the SecurityTokenService interface and implement Provider<Source> directly) and the service was deployed successfully. So probably the problem lies in the extra indirection layer that is imposed by the SecurityTokenService interface.

                               

                              As we have a workaround I think we should wait for the next JBossWS release. Once that happens, I'll make PicketLinkSTS implement SecurityTokenService again.

                               

                              Thanks again for all your help and feeback

                               

                              Cheers,

                              Stefan

                              • 12. Re: PicketLink STS WSDL problem with JBossWS CXF
                                sergeyb

                                Thanks for the confirmation Stefan, it was definitely worth improving CXF in the way in deals with Providers, hope you'll be able to use SecurityTokenService a bit later :-)...