开发并发布一个简单的webservice接口

  1. 新建一个maven工程
  2. 添加日志依赖
    <dependency>
    	<groupId>org.slf4j</groupId>
    	<artifactId>slf4j-api</artifactId>
    	<version>1.7.25</version>
    </dependency>

     

  3. 编写代码,接口定义类
    /**
     * 
     * 文件名: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;
        }
    
    }
    

     

  4. 发布接口,这里列举两种简单的方式
    1. 使用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");
      	}
      }
      
    2. 使用CXF方式发布WS接口
      1.  首先添加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>

         

      2.  

        编写发布接口的代码

         

         

        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");
        	}
        }
        

         

测试,通过访问 http://localhost:9082/CalculatorService?wsdl 能否正常拿到wsdl,然后使用借用soapUI工具访问这个wsdl地址,测试接口的功能可用性。至此,一个简单的webservice接口已经开发并发布成功了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值