jdk 生成webservice

本文介绍WebService的基本概念及其实现过程,包括定义接口、实现类、发布服务、生成Java客户端文件及最终的客户端调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

简单来说,webservice就是远程调用技术,也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

XML:(Extensible Markup Language)扩展型可标记语言。是Soap的基础。

Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。 

1.定义一个接口

package test.webService;

import javax.jws.WebMethod;
import javax.jws.WebService;

@WebService
public interface WebServiceLiunn {
	@WebMethod
	public String selectNameById(String id);
}

2写一个实现类

package test.webService.impl;

import javax.jws.WebService;

import com.alibaba.fastjson.JSON;

import test.pojo.Name;
import test.webService.WebServiceLiunn;
@WebService
public class WebServiceLiunnImpl implements WebServiceLiunn {

	@Override
	public String selectNameById(String id) {
		System.out.println("WebServiceLiunnImpl.selectNameById:启动");
		Name name=new Name();
		name.setId(id);
		name.setName("liunnName"+id);
		name.setPassword("liunnPassword"+id);
		name.setDesc("liunnDesc"+id);
		String namestr= JSON.toJSONString(name);
		return namestr;
	}

}

记住一定要在类上加上@WebService注解

@WebMethod注解声明了这个方法是要发布出去的方法

3发布出去

package test.webService.test;

import javax.xml.ws.Endpoint;

import test.webService.impl.WebServiceLiunnImpl;

public class WebServicePublish {

	public static void main(String[] args) {
		
		String address="http://127.0.0.1:8080/liunn_WebService/selectName";
		Endpoint.publish(address, new WebServiceLiunnImpl());
		System.out.println("webService发布成功!!!");
	}

}

4,在浏览器地址栏里面写入你发布的地址后面加上 ??wsdl,如:

http://127.0.0.1:8080/liunn_WebService/selectName?wsdl

5.生成java文件

在cmd命令窗口输入:  wsimport -s D:\bhhdWorkspace\STS\testServer\src -keep http://127.0.0.1:8080/liunn_WebService/selectName?wsdl

他会在对应的路径下生成java文件

生成的这几个类全部报错。

点开一看

导入包的路径错误

修改成

就不报错了。

6.编写客户端

package test.webService.test;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

import test.pojo.Name;
import test.webService.impl.WebServiceLiunnImpl;
import test.webService.impl.WebServiceLiunnImplService;

public class WebServicec {
    
    public static void main(String[] args) {
        WebServiceLiunnImplService factory =new WebServiceLiunnImplService();
        WebServiceLiunnImpl webServiceLiunnImpl=factory.getWebServiceLiunnImplPort();
        String namestr=webServiceLiunnImpl.selectNameById("123456789");
        System.out.println("websevice调用完成"+namestr);
        Name name=JSON.parseObject(namestr, new TypeReference<Name>() {});
        System.out.println("websevice调用完成的name:"+name);
        
    }

}

运行main

报了一个错误,说找不到这个位置。test/webservice/impl/SelectNameById。因为jdk生成Java类的时候,导入包路径就是webservice,实际生成的路径是webService,debug开启后,在这里发现错误

 

 

变成test.webService.impl.SelectNameById (webService中的S大写)

test.webService.impl.SelectNameByIdResponse

这时候在运行main方法

调用完成。其中我还用到了阿里的FastJSON, json的一个工具类,

qq网盘:https://share.weiyun.com/5YytsmW

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值