IDEA WebService 服务端 客户端 Demo

服务端代码:https://gitee.com/jin_0611/web-service-server

客户端代码:https://gitee.com/jin_0611/web-service-client


服务端示例


1. idea 生成 WebService项目

2. 在src目录下增加自己的服务代码。

https://gitee.com/jin_0611/web-service-server

package com.duzq.ws;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebService()
public class WebServiceDemo {

    /**
     * Demo 1,简单的 WebService 接口
     * @param name
     * @return
     */
    @WebMethod()
    public String demo1(String name) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String df = sdf.format(new Date());

        String result = df + " Hello, world, from " + name;
        System.out.println(result);
        return result;
    }

    /**
     * Demo 2,项目中实际会发生的调用
     * @param request 入参请求
     * @return res
     */
    @WebMethod(action = "getOrderInfo")
    public WebServiceResponse getOrderInfo(WebServiceRequest request) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String df = sdf.format(new Date());

        System.out.println(df + "getOrderInfo 被调用");
        // 默认返回结果失败
        WebServiceResponse response = new WebServiceResponse();
        response.setCode(500);

        // 参数校验
        if (request == null) {
            response.setMsg("请求信息不能为空");
            return response;
        }
        if (request.getOrderInfo() == null) {
            response.setMsg("查询条件不能为空");
            return response;
        }
        if (request.getOrderInfo().getOrderId() == null) {
            response.setMsg("订单ID不能为空");
            return response;
        }
        // 成功处理场景
        response.setCode(200);
        // 模拟实际业务处理...
        OrderInfo orderInfo = getOrderInfo(request.getOrderInfo().getOrderId());
        response.setOrderInfo(orderInfo);
        return response;
    }

    /**
     * 模拟DB查询
     * @param orderId
     * @return
     */
    private OrderInfo getOrderInfo(Integer orderId) {
        if (orderId != null && !Integer.valueOf(1).equals(orderId)) {
            return null;
        }
        OrderInfo res = new OrderInfo();
        res.setOrderId(1);
        res.setOrderCode("D1001");
        res.setBuyerName("张三");
        res.setProductName("冰可乐");
        res.setSellerName("李四小卖部");
        res.setTotalWeight(new BigDecimal(1));
        res.setTotalMoney(new BigDecimal(6.5));
        res.setCreateDate(new Date());
        return res;
    }

    public static void main(String[] argv) {
        // 发布服务
        Object implementor = new WebServiceDemo();
        String address = "http://localhost:9000/WebServiceDemo";
        Endpoint.publish(address, implementor);
        System.out.println("服务开启...");
    }
}

发布后的预览效果

wsdl地址(后续生成代码使用):http://localhost:9000/WebServiceDemo?wsdl


客户端示例


3. WebService客户端代码,创建一个空的项目,然后转换成Maven项目

4. pom 文件引入以下 jar 包,创建相应jar包目录

    <dependencies>
        <!-- https://mvnrepository.com/artifact/wsdl4j/wsdl4j -->
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.6.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/axis/axis-jaxrpc -->
        <dependency>
            <groupId>axis</groupId>
            <artifactId>axis-jaxrpc</artifactId>
            <version>1.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
        <dependency>
            <groupId>commons-discovery</groupId>
            <artifactId>commons-discovery</artifactId>
            <version>0.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>
    </dependencies>

5. 选中目录生成 java bean文件

6. 书写测试方法

import com.alibaba.fastjson.JSONObject;
import com.duzq.ws.*;

public class MainTest {
    public static void main(String[] args) throws Exception {
        // 1. 相当于初始化对象
        WebServiceDemoService wsd = new WebServiceDemoServiceLocator();

        // 2. 获取可以用于请求 WebService 的对象
        WebServiceDemo wsdPort = wsd.getWebServiceDemoPort();

        // 3. 简单接口调用示例
        String demo1Res = wsdPort.demo1("简单调用测试");
        System.out.println("demo1 请求结果:" + demo1Res);

        // 4. 正常接口调用示例
        OrderInfo reqOrderInfo = new OrderInfo();
        reqOrderInfo.setOrderId(1);

        WebServiceRequest request = new WebServiceRequest();
        request.setOrderInfo(reqOrderInfo);

        System.out.println("getOrderInfo##req##" + JSONObject.toJSONString(request));
        WebServiceResponse response = wsdPort.getOrderInfo(request);
        System.out.println("getOrderInfo##res##" + JSONObject.toJSONString(response));
    }
}

 


 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
通过IDEA生成webservice客户的方法如下: 1. 首先准备IDEA,可以单独创建一个项目或者在现有项目中创建一个包来放置生成的webservice客户代码。 2. 在IDEA中选中这个包,右击,在菜单中选择【webservice】,然后选择【Generate Java code from WSDL】,即可通过WSDL生成Java代码。 3. 准备WSDL,可以通过地址或者本地WSDL文件来生成客户代码。注意,如果有代理设置,需要在IDEA中进行相应的设置。 4. 生成方式大同小异,可以选择使用CXF或其他方式生成代码。如果使用CXF,需要添加相应的依赖。例如: ```xml <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-bundle</artifactId> </dependency> ``` 以上是通过IDEA生成webservice客户的简要步骤。\[1\]\[2\] #### 引用[.reference_title] - *1* *2* [在IDEA中生成webservice客户](https://blog.csdn.net/chen15369337607/article/details/100555104)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [idea建立webservice服务客户程序](https://blog.csdn.net/wfpc__/article/details/84642166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值