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

撸主之前写过一篇关于使用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:

  
  
      
web.xml:




  
        Hello  
        com.sun.xml.ws.transport.http.servlet.WSServlet  
        2  
  
  
        Hello  
        /HelloService  
 
3、在pom.xml中添加对jaxws 依赖:


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

利用jaxws创建service 和 client 简单方法_第1张图片

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

利用jaxws创建service 和 client 简单方法_第2张图片


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

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

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

wsimport -s 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"));
	}
}

控制台已经成功输出!

你可能感兴趣的:(j2ee)