JAX-WS - 基础示例

本文介绍了WebService的基本概念,重点讲解了使用JAX-WS在服务端创建接口并发布,以及客户端如何通过wsimport工具生成调用文件进行远程调用的方法。同时,列举了wsimport工具的常用参数。

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

一、简介

    WebService是一种跨平台、跨语言的规范。解决远程、跨平台、跨语言应用之间的调用。

    JAX-WS(Java API for XML-Web Services)规范是一组XML web services的JAVA API。


二、服务端

    1、接口

package com.xilen.ws;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

/**
 * Web服务的接口:SEI(Service EndPoint Interface)
 * 接口需要添加注解@WebService
 */
@WebService
public interface UserInfoService {
	/**
	 * 接口方法,提供的具体服务
	 * 通过注解可以指定消息元素的名称为自定义,取代默认的如arg0等
	 */
	@WebResult(name="checkReturn")
	public String check(@WebParam(name="userName")String userName, @WebParam(name="userPass")String userPass);
}
    2、实现

package com.xilen.ws;

import javax.jws.WebService;

/**
 * Web服务的实现:SIB(Service Implementation Bean)
 * 实现需要注解@WebService,并指定实现的接口
 */
@WebService(endpointInterface="com.xilen.ws.UserInfoService", serviceName="UserInfoServiceImplService")
public class UserInfoServiceImpl implements UserInfoService{

	@Override
	public String check(String userName, String userPass) {
		return "Check [ userName:" + userName + "; userPass:" + userPass + " ]";
	}
}
    3、发布

package com.xilen.ws;

import javax.xml.ws.Endpoint;


public class WsStart {
	public static void main(String[] args) {
		
		String address = "http://127.0.0.1:8888/userinfo";
		/**
		 *通过Endpoint的静态方法publish()实现发布
		 *传入服务的地址和服务的实现对象 
		 */
		Endpoint.publish(address, new UserInfoServiceImpl());
	}
}
    4、查看

        当浏览器访问发布地址得到如下图时成功发布

            

三、客户端

    1、准备

        通过wsimport生成WS调用的相关文件,如下:

D:\>wsimport -d D:\JavaWorks\WebServices\JAX-WS_Init_Client\src -keep -verbose http://127.0.0.1:8888/userinfo?wsdl
    2、调用

package com.xilen;

import com.xilen.ws.UserInfoService;
import com.xilen.ws.UserInfoServiceImplService;

public class WsClient {

	public static void main(String[] args) {
		
		/**
		 * 在生成的Java类中,继承javax.xml.ws.Service的类可视为一个工厂
		 * 这个类是的名称即服务端WS实现中注解的serviceName,同时也是wsdl文档definitions中的name
		 */
		UserInfoServiceImplService uisis = new UserInfoServiceImplService();
		
		//通过这个工厂的实例获取服务接口的代理
		UserInfoService uis = uisis.getUserInfoServiceImplPort();
		
		//通过这个接口实现远程调用
		System.out.println(uis.check("admin", "12345"));
	}
}
    3、结果

Check [ userName:admin; userPass:12345 ]


四、补充

    wsimport参数:

        -d dirName : 指定生成的文件的目录

        -p pkgName : 指定自定义的包名,不指定则默认服务端的包名

        -keep      : 指定是否生成.java的源文件

        -verbose   : 指定是否显示生成过程的信息

        wsdlUrl    : 指定wsdl文档的url
 
五、下载

    http://download.youkuaiyun.com/detail/u013379717/7254335

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值