[
https://issues.apache.org/jira/browse/CXF-8834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andriy Redko updated CXF-8834:
------------------------------
Fix Version/s: 3.5.8
3.6.3
4.0.4
> "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
> Fix For: 3.5.8, 3.6.3, 4.0.4
>
>
> 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)