# webservice **Repository Path**: Hello_Dream/webservice ## Basic Information - **Project Name**: webservice - **Description**: webservice - **Primary Language**: Java - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-05-01 - **Last Updated**: 2021-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SpringBootWebservice ## 1. 引入除springboot外pom文件 Spring Boot 已经集成了 cxf 所需要其他的相关依赖 ```xml org.apache.cxf cxf-spring-boot-starter-jaxws 3.2.5 axis axis 1.4 ``` ##2. 接口 ```java @WebService(name = "TFamilyService", // 对外暴露的服务名称 targetNamespace = "http://service.webservice.com") // 命名空间,一般是接口的包名倒序 public interface TFamilyService { @WebMethod public String chairman(@WebParam(name = "reqXml") String reqXml); } ``` ##3. 实现类 ```java @WebService(name = "TFamilyService",// 对外暴露的服务名称 targetNamespace = "http://service.webservice.com", // 命名空间,一般是接口的包名倒序 endpointInterface = "com.webservice.service.TFamilyService") // 接口地址 @Component public class TFamilyServiceImpl implements TFamilyService{ @Override public String chairman(String reqXml) { return reqXml + ": 执行成功"; } } ``` ##4. 配置类,发布服务 可在application.properties中配置服务地址端口,默认为localhost:8080 配置示例 ``` server.port=8080 server.address=127.0.0.1 ``` 运行**WebserviceApplication.java**启动 接口地址默认为:**http://localhost:8080/mytest/TFamilyService?wsdl** ##5. 测试 调用方法参考**ClientDemoTest.java** ```java public class ClientDemo{ /** * 调用Webservice接口 * @param url 接口地址 http://localhost:8080/mytest/TFamilyService?wsdl * @param interfaceName 接口名称 chairman * @param param 参数 * @return */ public String callWebserviceInterface(String url, String interfaceName,String param) { String result = null; try { Call call; result = ""; call = getServiceCall(url, interfaceName); // 调用接口 result = (String)call.invoke(new Object[] {param}); } catch (Exception e) { e.printStackTrace(); } return result; } private Call getServiceCall(String url, String interfaceName) throws Exception { Service service = new Service(); Call call = (Call)service.createCall(); call.setTargetEndpointAddress(new URL(url)); // wsdl中 空间名称为 http://service.webservice.com 接口名称为 interfaceName call.setOperationName(new QName("http://service.webservice.com", interfaceName)); // 添加参数 reqXml为wsdl中定义的参数名称 call.addParameter("reqXml", XMLType.XSD_STRING, ParameterMode.IN); // 设置返回类型 call.setReturnType(XMLType.XSD_STRING); return call; } } ```