jax-ws 实现webservice

   文章中http://5148737.blog.51cto.com/5138737/1604472 中咱们曾谈到,JAX-WS能够实现webservice,与axis,cxf不一样的是,JAX-WS是一种规范。java

  1、什么是jax-wsweb

     JAX-WS规范是一组XML web services的JAVA API,JAX-WS容许开发者能够选择RPC-oriented或者message-oriented 来实现本身的web serviceside


2、jax-ws与jax-rpc的关系测试

      Sun最开始的web services的实现是JAX-RPC 1.1 (JSR 101)。这个实现是基于Java的RPC,并不彻底支持schema规范,同时没有对Binding和Parsing定义标准的实现。spa

   JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个彻底基于标准的实现。在binding层,使用的是the Java Architecture for XML Binding (JAXB, JSR 222),在parsing层,使用的是the Streaming API for XML (StAX, JSR 173),同时它还彻底支持schema规范。代理


3、使用jax-ws构建web服务orm

  使用jax-ws实现webservice的话,须要导入jax-ws的jar包,由于使用的是jdk中的jar,须要使用wsgen与wsimport两个命令,下面一一道来:server


(1)新建java类,添加注解,@WebService标志该类为一个webservice,WebMethod标志方法为webservice的方法。htm

@WebService
public class Hello {
    
	@WebMethod
	public String sayhello(String name) {
		System.out.println("hello," +name);
		return "hello,"+name;
	}
}


(2)javac编译该java类blog

javac   Hello.java


(3)生成wsdl等文件

   此处,使用wsgen生成WSDL和相关的xsd文件,

D:\workspace\jaxws\src>wsgen  -cp  .  com.xj.service.Hello  -wsdl

-wsdl参数表明生成webservice,缺省的话将默认不生成

- s参数表明生成的.java文件置于何处

-d 参数表明生成的编译class文件置于何处

-r 参数表明生成的.wsdl文件与.xsd文件生成在何处

-cp参数表明classpath,即Hello.class的所在路径


此时,能够看到目录中生成了wsdl与xsd文件。

(4)编写服务端并启动

public class test {
	public static void main(String[] args) {
		String address="http://localhost/Jaxws/HelloService";
		Endpoint.publish(address, new Hello());
		System.out.println("启动server服务");
	}

}

测试发现不须要wsgen命令,上述方式也能够启动服务端,查看服务端是否启动成功

访问,http://localhost/Jaxws/HelloService,能够看到wsdl文件


(5)编写客户端,并访问服务端

 新建客户端项目jaxws-client

 使用wsimport生成Java的客户端实现

D:\workspace\jaxws-client>wsimport -p com.xj.client -keep  http://localhost/Jaxws/HelloService?wsdl

命令参数说明:

  -d:生成客户端执行类的class文件的存放目录

  -s:生成客户端执行类的源文件的存放目录

  -p:定义生成类的包名

地址为咱们服务端中暴露的wsdl的地址,命令执行完后,能够看到客户端项目中生成以下文件:

wKiom1S-GlnjxxECAADwUDP55C0833.jpg


代码实现访问:

public class test {
	public static void main(String[] args) {
		HelloService helloService = new HelloService();
	        Hello hello = helloService.getHelloPort();
		System.out.println(hello.sayhello("sdf"));
		
	}
}

如上,建立webservice代理,获得port,经过port能够访问全部的方法。


下面给出jax-ws的jar包地址

 http://yun.baidu.com/share/link?shareid=573524266&uk=2836507213

相关文章
相关标签/搜索