[ https://issues.apache.org/jira/browse/CXF-8834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andriy Redko updated CXF-8834: ------------------------------ Affects Version/s: 3.6.2 3.5.7 > "Operation [{.../wsdl}Issue] already exists" when calling > JaxWsServerFactoryBean.create() for SecurityTokenService > ------------------------------------------------------------------------------------------------------------------ > > Key: CXF-8834 > URL: https://issues.apache.org/jira/browse/CXF-8834 > Project: CXF > Issue Type: Bug > Components: STS > Affects Versions: 4.0.0, 3.5.7, 3.6.2 > Reporter: Peter Palaga > Assignee: Andriy Redko > Priority: Major > > In quarkus-cxf, we are executing the following snippet > {code} > JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); > factoryBean.setServiceClass(Thread.currentThread().getContextClassLoader().loadClass(sei)); > factoryBean.setAddress(path); > Server server = factoryBean.create(); > {code} > for all service interfaces available in the class path of an application. We > do it at build time, for the sake of generating all necessary ancillary > classes. > When doing this for > {{org.apache.cxf.ws.security.sts.provider.SecurityTokenService}}, the > following exception is thrown: > {code} > java.lang.IllegalArgumentException: An operation with name > [{http://docs.oasis-open.org/ws-sx/ws-trust/200512/wsdl}Issue] already exists > in this service > at > org.apache.cxf.service.model.InterfaceInfo.addOperation(InterfaceInfo.java:78) > at > org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.createOperation(ReflectionServiceFactoryBean.java:1008) > at > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.createOperation(JaxWsServiceFactoryBean.java:631) > at > org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.createInterface(ReflectionServiceFactoryBean.java:1000) > at > org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.buildServiceFromClass(ReflectionServiceFactoryBean.java:460) > at > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.buildServiceFromClass(JaxWsServiceFactoryBean.java:693) > at > org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:529) > at > org.apache.cxf.wsdl.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:262) > at > org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:199) > at > org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:103) > at > org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:168) > at > org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:210) > at > io.quarkiverse.cxf.deployment.CxfDeploymentUtils.createServer(CxfDeploymentUtils.java:42) > at > io.quarkiverse.cxf.deployment.QuarkusCxfProcessor.lambda$generateClasses$2(QuarkusCxfProcessor.java:213) > ... > {code} > This is caused by the fact that there are two methods annotated with > {{@WebMethod(operationName = "Issue")}} in > {{org.apache.cxf.ws.security.sts.provider.SecurityTokenService}}: > {code} > @WebResult(name = "RequestSecurityTokenResponseCollection", > targetNamespace = > "http://docs.oasis-open.org/ws-sx/ws-trust/200512", > partName = "responseCollection") > @Action(input = > "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue", > output = > "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTRC/IssueFinal") > @WebMethod(operationName = "Issue") > RequestSecurityTokenResponseCollectionType issue( > @WebParam(partName = "request", > name = "RequestSecurityToken", > targetNamespace = > "http://docs.oasis-open.org/ws-sx/ws-trust/200512") > RequestSecurityTokenType request > ); > @WebResult(name = "RequestSecurityTokenResponse", > targetNamespace = > "http://docs.oasis-open.org/ws-sx/ws-trust/200512", > partName = "response") > @Action(input = > "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RST/Issue", > output = > "http://docs.oasis-open.org/ws-sx/ws-trust/200512/RSTRC/IssueFinal") > @WebMethod(operationName = "Issue") > RequestSecurityTokenResponseType issueSingle( > @WebParam(partName = "request", > name = "RequestSecurityToken", > targetNamespace = > "http://docs.oasis-open.org/ws-sx/ws-trust/200512") > RequestSecurityTokenType request > ); > {code} > I wonder whether one of the operationNames in SecurityTokenService needs to > be changed? -- This message was sent by Atlassian Jira (v8.20.10#820010)