SSM+webService

转载:https://blog.csdn.net/sinat_34979884/article/details/80836540

转载:https://blog.csdn.net/thebigdipperbdx/article/details/78793979

转载:注解说明https://blog.csdn.net/gjb724332682/article/details/46324661

由ESB 发布的wsdl 文件 ,使用cxf方式 生成的 

目录

1.POM文件中加入cxf的依赖包

2.配置web.xml文件,在末尾增加filter配置

3.配置spring的applicationContext.xml文件

4.编写调用wsdl时的回复类

5.编写接口类

 6.编写接口实现类



                                                                                           服务端


第一种方式:整合ssm

1.POM文件中加入cxf的依赖包

		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-jaxws</artifactId>
			<version>3.1.5</version>
		</dependency>
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-jaxrs</artifactId>
			<version>3.1.5</version>
		</dependency>
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-transports-http</artifactId>
			<version>3.1.5</version>
		</dependency>
		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-transports-http-jetty</artifactId>
			<version>3.1.5</version>
		</dependency>

2.配置web.xml文件,在末尾增加filter配置

 <!--注册一个用于接收其他工程向本工程发送的webservice请求的请求接收器-->
  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <!--配置过滤请求地址项目名+webService+address+?wsdl-->
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/webService/*</url-pattern>
  </servlet-mapping>

3.配置spring的applicationContext.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc"
         //--------在此处添加下面两行----------   
         xmlns:jaxws="http://cxf.apache.org/jaxws"
         xmlns:soap="http://cxf.apache.org/bindings/soap"
        //--------在此处添加上面两行----------
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
         http://www.springframework.org/schema/aop
         http://www.springframework.org/schema/aop/spring-aop-4.1.xsd
         http://www.springframework.org/schema/tx
         http://www.springframework.org/schema/tx/spring-tx-4.1.xsd
        //--------在此处添加下面两行----------
           http://cxf.apache.org/jaxws
           http://cxf.apache.org/schemas/jaxws.xsd
        //--------在此处添加上面两行----------
         http://www.springframework.org/schema/context
         http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
        
    <!-- applicationContext.xml中引入CXF配置文件-->
    <import resource="classpath:META-INF/cxf/cxf.xml" />
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
    <!--class实现类路径-->
    <bean id="Fdms"    class="com.skytech.tjfwjk.webService.impl.JwsServiceImpl" />
    <!-- serviceClass 是接口的路径-->
    <jaxws:server serviceClass="com.skytech.tjfwjk.webService.JwsService "
        address="/server">
        <jaxws:serviceBean>
            <ref bean="Fdms"/>
        </jaxws:serviceBean>
    </jaxws:server>
</beans>

4.编写调用wsdl时的回复类

public class Reply {


    /**
     * 返回错误码
     */
    private String errorCode;

    /**
     * 返回错误信息
     */
    private String message;


    /**
     * 错误码内部类
     */
    public enum ErrorCode {
        /**
         * 服务器内部错误
         */
        SUCCESS("0", "插入成功"),
        // 参数类
        PARAM_ERR("99000", "请求参数错误"),
        PARAM_ERR_EMPTY("99001", "请求参数为空错误"),
        PARAM_ERR_NUMBER("99002", "请求参数非数字错误"),
        PARAM_ERR_LENGTH("99002", "请求参数数字大与最大值错误"),
        // 通用类
        FAILURE("500", "服务器内部错误");

        /**
         * 错误码
         */
        String errorCode;
        /**
         * 错误信息
         */
        String errorMsg;

        ErrorCode(String errorCode, String errorMsg) {
            this.errorCode = errorCode;
            this.errorMsg = errorMsg;
        }

        public String getErrorMsg() {
            return this.errorMsg;
        }

        public String getErrorCode() {
            return this.errorCode;
        }

        @Override
        public String toString() {
            return this.name();
        }
    }

    /**
     * 获取内置reply
     *
     * @param err 内部类枚举属性名
     * @return reply
     */
    public static Reply getReply(String err) {
        ErrorCode errorCode = ErrorCode.valueOf(err);
        return new Reply().setErrorCode(errorCode.getErrorCode()).setMessage(errorCode.getErrorMsg());
    }

    public String getErrorCode() {
        return errorCode;
    }

    public Reply setErrorCode(String errorCode) {
        this.errorCode = errorCode;
        return this;
    }

    public String getMessage() {
        return message;
    }

    public Reply setMessage(String message) {
        this.message = message;
        return this;
    }
}

5.编写接口类

import org.apache.cxf.annotations.WSDLDocumentation;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

/**
 * @version 1.0
 * @date 2018/8/1 9:10
 */
@WebService
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public interface JwsService {

    /**
     * 自助智能咨询情况
     *
     * @param json 咨询情况参数
     * @return 返回参数
     */
    //wsdl中方法注释
    @WSDLDocumentation("<br />" +
            "<h3>通过输入对应的json添加信息</h3>" +
            "<p>输入参数:省略,返回数据: 一个Reply对象:getErrorCode()返回错误码;getMessage()返回错误信息</p><br />")
    //调用返回时xml标签名,可不用
    @WebResult(name = "returnResult")
    @WebMethod
    Reply tjfwjk(String json);
}

 6.编写接口实现类

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.Resource;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;

/**
 * @version 1.0
 * @date 2018/7/31 21:31
 */
@WebService(endpointInterface="com.skytech.tjfwjk.webService.JwsService")
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
public class JwsServiceImpl  implements JwsService {

    private Logger logger = LoggerFactory.getLogger(JwsServiceImpl.class);
    
    //注入service层
    @Resource
    private IZzznzxqkService iZzznzxqkService;

    /**
     * @param json 
     * @return 返回参数
     */
    @Override
    public Reply tjfwjk(String json) {
        JSONObject result = new JSONObject(JSON.parseObject(json));
        System.out.println("收到数据-----------"+result);
        if (result.isEmpty()) {
            return new Reply().setErrorCode(Reply.ErrorCode.PARAM_ERR_EMPTY.getErrorCode()).setMessage("请求参数不能为空");
        }
        //调用service业务方法
        return iZzznzxqkService.insertZzznzxqk(result);
    }
}

第二种调用方式,不需要配置

1.不需要配置applicationContext.xml,pom.xml,web.xml

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.xml.ws.Endpoint;

/**
 * @version 1.0
 * @description 发布webService
 * @date 2018/8/1 11:58
 */
@Component
public class OpenJwsService{

    private Logger logger = LoggerFactory.getLogger(OpenJwsService.class);

    //spring初始化调用
    @PostConstruct
    public void startJwsService(){
        //访问地址+?wsdl
        Endpoint.publish("http://localhost:8080/tjfwjk/server", new JwsServiceImpl());
        logger.info("----------------发布成功----------------");
    }
}

发布成功后在网页输入会出现:


                                                                                                  客户端


客户端调用方式:

1.新建一个webProject项目

2.执行cmd命令,在webProject中生成java类

3.调用服务端类中的实现方法



2.cmd中输入

wsimport -s D:\IdeaWorkSpace\test6\src -p main.java.com.baidu.tjfwjk.webservice -keep http://localhost:8080/tjfwjk/webService/server?wsdl

说明:D:\IdeaWorkSpace\test6\src为项目的src目录绝对地址,main.java.com.baidu.tjfwjk.webservice为导入的目标包,http://localhost:8080/tjfwjk/webService/server?wsdl是webSerive服务地址

cmd出现如下时表示成功:

生成的文件目录:

3.生成文件后,创建一个类OpenWs,调用接口的实现方法


import com.alibaba.fastjson.JSONObject;

/**
 * @version 1.0
 * @description
 * @date 2018/8/1 11:04
 */
public class OpenWs {
    public static void main(String[] args) {
        JwsServiceService factory = new JwsServiceService();
        JwsService service = factory.getJwsServicePort();
        JSONObject params = new JSONObject();
        params.put("test","66");
       Reply result = service.tjfwjk(params.toString());
        System.out.println(result.getErrorCode()+result.getMessage());
    }
}

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值