webservice

webservice接口发布之后生成的wsdl文件里的soap:address location地址自动在域名前面加了端口号,有没有哥们知道,指导一手

img

这是配置类的代码:

@Bean(name = Bus.DEFAULT_BUS_ID)
public SpringBus springBus() {
    return new SpringBus();
}

@Bean
public ServletRegistrationBean cxfServlet() {
    return new ServletRegistrationBean(new CXFServlet(), "/ws/*");
}

@Bean
public StandardProcedureServiceImpl standardProcedureServer() {
    return new StandardProcedureServiceImpl();
}

/*jax-ws*/
@Bean
public Endpoint StandardProcedureServerEndpoint() {
    EndpointImpl endpoint = new EndpointImpl(springBus(), standardProcedureServer());
    endpoint.publish("/standardProcedureServer");
    return endpoint;
}

在CXF框架中,SOAP地址的生成规则可以通过配置文件进行修改。在Spring Boot项目中,可以通过在application.yml或application.properties文件中进行配置。

以下是在application.yml中配置SOAP地址的示例:

server:
  port: 8080

cxf:
  servlet:
    path: /ws/*
  endpoint:
    standardProcedureServer:
      address: /standardProcedureServer

在上面的示例中,通过cxf.endpoint配置项对SOAP地址进行配置。standardProcedureServer是我们在代码中通过Endpoint.publish()方法发布的服务名。在address属性中设置服务相对于应用程序上下文路径的地址。在本例中,地址为/standardProcedureServer,所以完整的SOAP地址将是http://localhost:8080/ws/standardProcedureServer。

这样配置之后,应该就能够正确生成没有端口号的SOAP地址了。