- 新建一个maven工程
- 添加日志依赖
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency>
- 编写代码,接口定义类
/** * * 文件名:HelloWord.java */ package com.demo.service; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; /** * 接口定义类 * @author Monk * @version V1.0 * @date 2019年6月27日 下午4:00:47 */ @WebService public interface CalculatorService { /** * 加法 * @param param1 * @param param2 * @author Monk * @date 2019年6月27日 下午4:31:05 */ @WebMethod @WebResult(name = "out") public int addition(@WebParam(name = "param1") Integer param1, @WebParam(name = "param2") Integer param2); /** * 减法 * @param param1 * @param param2 * @author Monk * @date 2019年6月27日 下午4:31:30 */ @WebMethod @WebResult(name = "out") public int subtraction(@WebParam(name = "param1") Integer param1, @WebParam(name = "param2") Integer param2); }
接口实现类
/** * * 文件名:HelloWordImpl.java */ package com.demo.service.impl; import javax.jws.WebService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.demo.service.CalculatorService; /** * 接口实现类 * @author Monk * @version V1.0 * @date 2019年6月27日 下午4:01:33 */ @WebService(endpointInterface="com.demo.service.CalculatorService", serviceName="CalculatorService") public class CalculatorServiceImpl implements CalculatorService{ private static Logger logger = LoggerFactory.getLogger(CalculatorServiceImpl.class); @Override public int addition(Integer param1, Integer param2) { logger.info("The addition method is invoke, the input param:[{},{}]", new Object[] {param1, param2}); return param1 + param2; } @Override public int subtraction(Integer param1, Integer param2) { logger.info("The subtraction method is invoke, the input param:[{},{}]", new Object[] {param1, param2}); return param1 - param2; } }
- 发布接口,这里列举两种简单的方式
- 使用JDK方式发布WS接口
package com.demo.service.test; import javax.xml.ws.Endpoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.demo.service.impl.CalculatorServiceImpl; public class TestPublish{ private static Logger logger = LoggerFactory.getLogger(TestPublish.class); public static void main(String[] args) { publishByJdk(); } /** * 使用JDK的方式发布WS接口 */ public static void publishByJdk() { logger.info("web Service start"); CalculatorServiceImpl implementor = new CalculatorServiceImpl(); String address = "http://localhost:9082/CalculatorService"; Endpoint.publish(address, implementor);// JDK实现 logger.info("web Service started"); } }
- 使用CXF方式发布WS接口
-
首先添加CXF的依赖
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>${cxf-version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf-version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>${cxf-version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>${cxf-version}</version> </dependency>
-
编写发布接口的代码
package com.demo.service.test; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.demo.service.CalculatorService; import com.demo.service.impl.CalculatorServiceImpl; public class TestPublish{ private static Logger logger = LoggerFactory.getLogger(TestPublish.class); public static void main(String[] args) { publishByCxf(); } /** * 使用CXF的方式发布WS接口 */ public static void publishByCxf() { logger.info("web Service start"); CalculatorServiceImpl implementor = new CalculatorServiceImpl(); String address = "http://localhost:9082/CalculatorService"; JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); factoryBean.setAddress(address); // 设置暴露地址 factoryBean.setServiceClass(CalculatorService.class); // 接口类 factoryBean.setServiceBean(implementor); // 设置实现类 factoryBean.create(); logger.info("web Service started"); } }
-
- 使用JDK方式发布WS接口
测试,通过访问 http://localhost:9082/CalculatorService?wsdl 能否正常拿到wsdl,然后使用借用soapUI工具访问这个wsdl地址,测试接口的功能可用性。至此,一个简单的webservice接口已经开发并发布成功了