利用jaxws创建service 和 client 简单方法

本文介绍了如何在Eclipse环境下利用Maven创建JAX-WS服务,并解决在家用Eclipse版本中遇到的无法访问WSDL的问题。通过新建Maven Web项目,设置sun-jaxws.xml,然后通过服务端HTTP协议的WSDL生成客户端所需代码,最终成功调用服务。

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

撸主之前写过一篇关于使用jdk内置工具:wsgen wsimport 生成 jaxws 的service 和 client。这几天一直在倒腾webservice, 谁料用公司的eclipse 版本很容易很简单的创建service并成功启动服务访问wsdl,但是家里的eclipse版本怎么倒腾都不能成功访问到service 端生成的wsdl ,总是报IOException,大概意思是没有wsdl 的输出口, 我一会怀疑是版本冲突, 但是网上搜索一直找不到, 折腾了2个晚上, 玛德,果断放弃, 晚上睡觉都要气炸的节奏。。。

今天抽时间试了试,重新启一个eclipse 进程, 然后按照上一篇jaxws 生成service 的教程,结果很完美, 我很欣慰, 同时偶然发现, wsimport 能够利用service 端http 协议的wsdl 生成client所需要的东西(其实是我一直没有理解jaxws的原理-_-||),‘新大陆’如是:

新建 maven web project

1、实体类:

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

@WebService  
public class Hello {  
  
    @WebMethod  
    public String sayHello(String name){  
        return "Hello, "+name;  
    }  
}
2、在WEB-INF下新建2个配置文件:

sun-jaxws.xml:

<?xml version="1.0" encoding="UTF-8"?>  
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime'  
    version='2.0'>  
    <endpoint name='Hello' implementation='com.example.soap.Hello'  
        url-pattern='/HelloService' />  
</endpoints>
web.xml:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee                       http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>  
        <servlet-name>Hello</servlet-name>  
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>  
        <load-on-startup>2</load-on-startup>  
</servlet>  
<servlet-mapping>  
        <servlet-name>Hello</servlet-name>  
        <url-pattern>/HelloService</url-pattern>  
</servlet-mapping> 
</web-app>
3、在pom.xml中添加对jaxws 依赖:

<dependency>
	<groupId>com.sun.xml.ws</groupId>
	<artifactId>jaxws-rt</artifactId>
	<version>2.2.10</version>
</dependency>
4、将该项目装入web 容器(tomcat、或者插件)启动成功后, 访问http://localhost:8080/YourProjectName/HelloService,如图:



点开wsdl 链接, 出现下图, 说明已经成功:



5、新建一个java project, 作为webservice 的client:

client 通过wsdl 生成访问service所需要的类,这个wsdl来源 可以是磁盘文件或者网络文件,撸主要通过网络文件wsdl 生成client:

在cmd 命令行中, 切到client 的根目录中,执行:

wsimport -s <generate your source file location> http://localhost:8080/YourProjectName/HelloService?wsdl

6、新建访问service 服务的类:

public class JaxwsClientTest {

	public static void main(String[] args) {
		HelloService service = new HelloService();
		Hello serviceProxy = service.getHelloPort();
		System.out.println(serviceProxy.sayHello("drew.jhung"));
	}
}

控制台已经成功输出!大笑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值