创建基于JWS的Web Service

1、创建基于JWS的Web Service,命名为JWSofHeYS,其中星号部分用姓名的拼音取代(姓写全拼,名写首字母,如JWSofSongW)。该服务有一个方法string JWSHelloHeYS(string),其中星号部分用姓名取代(编码规则同上),该方法接收学号string作为输入,输出个人的基本信息string,如学院,班级,姓名,籍贯。

项目结构

创建了SHIYAN1JWSWEB项目,里面有两个模块,模块SHIYAN1JSWWEB_SER表示服务端,在com.heys包下创建了一个接口和两个类,JWSofHeYS 接口定义了一个Web服务的接口,JWSofHeYSImpl 类实现了 JWSofHeYS 接口,JWSofHeYSPublisher 类负责发布 Web 服务。

模块SHIYAN1JWSWEB_CLI表示客户端,com.heys包下创建了一个客户端测试类,其余类都是由客户端代理产生的代码。

实现代码及截图:

实现代码

JWSofHeYS:

@WebService

public interface JWSofHeYS {

    @WebMethod

    String JWSHelloHeYS(String studentId);

}

JWSofHeYSImpl :

@WebService

public class JWSofHeYSImpl implements JWSofHeYS {

    @Override

    @WebMethod

    @WebResult(name = "personalInfo")

    public String JWSHelloHeYS(@WebParam(name = "studentId") String studentId) {

        // 根据学号查询个人信息,

        String personalInfo = "学院:计算机学院,班级:21软件工程(4)班,姓名:何育思,籍贯:广东梅州";

        return personalInfo;

    }

}

JWSofHeYSPublisher:

public class JWSofHeYSPublisher {

    public static void main(String[] args) {

        String address = "http://localhost:8080/JWSofHeYS";

        Endpoint.publish(address, new JWSofHeYSImpl());

        System.out.println("JWSofHeYS Web Service 已发布!");

    }

}

截图显示

JWSofHeYS接口: 定义了一个Web服务的接口

@WebMethod 注解表示其中的方法将会作为Web服务的操作。在这里,只有一个方法 JWSHelloHeYS,它接收一个学号 studentId 作为参数,并返回一个字符串类型的个人信息。

JWSofHeYSImpl 类:

这个类实现了 JWSofHeYS 接口。

同样使用了 @WebService 注解,表示这个类是一个Web服务的实现。

@WebMethod 注解表示该方法将作为Web服务的操作。

@WebResult 和 @WebParam 注解用于定义返回结果的名称和方法参数的名称。

JWSofHeYSPublisher 类:

这个类负责发布 Web 服务。

Endpoint.publish(address, new JWSofHeYSImpl()) 语句将 JWSofHeYSImpl 类发布到指定地址,使其成为可访问的Web服务。

通过调用 main 方法,服务将在 http://localhost:8080/JWSofHeYS 上发布,并在控制台输出 "JWSofHeYS Web Service 已发布!" 的消息。

2、服务的部署和配置

截图:

对截图内容的文字说明:

创建了一个字符串变量 address,存储了 Web 服务的地址,这里是 http://localhost:8080/JWSofHeYS。这个地址指定了服务的访问路径。

然后,通过 Endpoint.publish(address, new JWSofHeYSImpl()) 这行代码,它使用 JAX-WS 的 Endpoint 类的 publish 方法将 JWSofHeYSImpl 类发布为一个 Web 服务。这意味着任何发送到指定地址的请求都将被路由到 JWSofHeYSImpl 类中定义的方法。

这段代码实际上是将一个 Java 类转换为一个可通过 Web 访问的服务,使得其他应用程序能够通过 HTTP 请求调用其中定义的方法。

3、在浏览器中查看该Web服务的描述文档

截图:

结合自己编写的web服务,说明该服务的WSDL文档中各元素与服务之间的对应关系。

<definitions> 元素:

targetNamespace="http://heys.com/":指定了服务的目标命名空间。

name="JWSofHeYSImplService":指定了服务的名称。

<types> 元素:包含了服务所使用的数据类型的定义。在这个文档中,通过 <xsd:schema> 元素导入了一个命名空间为 http://heys.com/ 的 XML 模式文档(XSD),用于描述服务使用的数据结构。

<message> 元素:定义了服务所使用的消息。name="JWSHelloHeYS" 和 name="JWSHelloHeYSResponse" 分别表示请求和响应的消息。

<part> 元素指定了消息的参数,其中 element="tns:JWSHelloHeYS" 和 element="tns:JWSHelloHeYSResponse" 分别引用了请求和响应的元素。

<portType> 元素:定义了服务的端口类型,即服务中所支持的操作集合。

name="JWSofHeYSImpl" 指定了端口类型的名称。

operation 元素定义了端口类型中的操作,这里只有一个名为 JWSHelloHeYS 的操作,它包含了输入和输出消息的定义。

<binding> 元素:将端口类型绑定到具体的通信协议和消息格式。

name="JWSofHeYSImplPortBinding" 指定了绑定的名称。

<soap:binding> 元素指定了 SOAP 协议的绑定信息,其中 transport="http://schemas.xmlsoap.org/soap/http" 指定了 HTTP 传输协议。

<operation> 元素描述了操作的绑定信息,包括输入和输出消息的格式。

<service> 元素:描述了服务的实例。

name="JWSofHeYSImplService" 指定了服务的名称。

<port> 元素定义了服务的端口,包括绑定信息和访问地址。

总的来说,这个 WSDL 文档定义了一个名为 JWSofHeYSImplService 的 Web 服务,它包含了一个操作 JWSHelloHeYS,该操作接受一个请求消息 JWSHelloHeYS,并返回一个响应消息 JWSHelloHeYSResponse。这个服务使用 SOAP 协议进行通信,通过 HTTP 传输。

4、产生客户端代理

截图:

对截图内容的文字说明:

这段命令行操作 wsimport 是用来根据指定的 WSDL 文件生成 Java 代码,并将生成的 Java 类文件保存到指定的目录中。这里新创建了一个客户端项目,用于客户端测试,生成的客户端代理在项目中的位置如上图所示。

命令行解释:

wsimport:该命令用于生成基于 Web Services 的 Java 客户端代码。

-d D:\daima\SHIYAN1JWSWEB\SHIYAN1JWSWEB_CLI\src\main\java:指定生成的 Java 类文件存放的目录。

-p com.heys:指定生成的 Java 类的包名。

-keep:生成的 Java 源文件和编译后的类文件保留在指定的目录中。

-verbose:显示详细的日志输出。

5、创建客户端

截图:

JWSHeYSClient客户端测试类

测试结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值