?前言
? 随着近几年来,SOA,EAI等架构体系的日渐成熟,Webservice越来越炽手可热,尤其是在企业做异质平台整合时成为了首选的技术。
Java的Webservice技术更是层出不穷,比较流行的有:
Axis2,Spring WS以及Jaxws。
本人在日常工作和以往工程中,在使用了上述这些Webservice后进行了总结,比较,最终觉得jaxws是目前最标准,需要额外第三方插件最少,配置最少最灵活的webservice。
JAXWS适合几乎所有Webservice客户端的调用,因此不少巨头型的厂商如:IBM,Weblogic等,在他们的产品上都使用了以JAXWS为标准的Webservice接口。
本教程分成六课,为初级教程。
通过本教程,可以使一个没有Webservice概念或者没有写过Webservice的JAVA Resource快速上手入门,并能满足一般中小型项目中Webservice的应用。
对于Webservice Security,在(初级)教程中并不提供,会在高级教程中详细描述。
不过真正利用Webservice Security特性即XML加密技术的工程并不多,少之又少,大多还是以http: //xxx/xxxService?userId=&password=这样的形式来进行“假安全”通讯的。
必经我们的大部分项目是运行在Intranet里的,而且有很好的监控和布防。
目标:
1. 理解jaxws
2. 一切始于HelloWorld
3. 理解同步,异步
一、理解jaxws
概述
JAX-WS2.0 的全称为 Java API for XML-Based Webservices (JAX-WS) 2.0。JAX-WS 2.0 是对 JAX-RPC 1.0 规范的扩展,是 JAX-RPC 1.1 的后续版本, JAX-RPC 2.0 标准发布不久后便被重新命名为 JAX-WS 2.0。 JAX-WS 2.0 是面向 Java 5 的开发 Web services 的最新编程标准,它提供了新的编程模型和对以往的 JAX-RPC 方式的 Web services 进行了增强。 JAX-WS2.0 (JSR 224)是Sun新的web services协议栈,是一个完全基于标准的实现。在binding层,使用的是the Java Architecture for XMLBinding (JAXB,JSR 222),在parsing层,使用的是the Streaming API for XML (StAX,JSR 173),同时它还完全支持schema规范。
特性
支持SOAP 1.1(默认)、1.2
支持XML/HTTP Binding
支持WS-Addressing
支持document/literal样式
支持WS-I Basic Profile 1.1
支持消息传输优化机制(Message Transmission Optimization Mechanism,MTOM)
二、一切始于HelloWorld
提示:JDK6中集成了两个工具wsgen和import,在JDK根目录bin下可以查看到的,这是两个很有用的工具,可以大大提高开发效率的
2.1 下载jawx第三方插件 网址:http://jax-ws.java.net/? 并解压,解压内容如下图

这个目录里有我们写JAXWS所需的所有lib包以及JAXWS自带的教程。
2.2? 建立webservice 服务端server工程目录如下图

2.2.1 把下载JAXWS插件目录中lib导入项目中
2.2.2 Hello.java
package leon.ws;
import javax.jws.WebService;
@WebService
public class Hello {
?? ?public String sayHello(String name) {
?? ??? ?return ("Welcome,I am Server. Hello," + name);
?? ?}
?? ?public int sum(int a,int b) {
?? ??? ?return a + b;
?? ?}
}
2.2.3. web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
?? ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
?? ?xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
?? ?http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
?? ?<listener>
?? ??? ?<listener-class>
?? ??? ??? ?com.sun.xml.ws.transport.http.servlet.WSServletContextListener
?? ??? ?</listener-class>
?? ?</listener>
?? ?<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>
?? ?<welcome-file-list>
?? ??? ?<welcome-file>index.jsp</welcome-file>
?? ?</welcome-file-list>
</web-app>
2.2.4 sun-jaxws.xml
<?xml version="1.0" encoding="UTF-8"?>
<endpoints version="2.0" xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime">
? <endpoint name="Hello" implementation="leon.ws.Hello" url-pattern="/HelloService" />
?
</endpoints>
2.2.5 启动 http://127.0.0.1:8282/ws/HelloService?wsdl? webservice 的服务端发布成功
三、理解同步,异步
3.1 同步方法 请看:http://blog.csdn.net/lorenluo/article/details/8214606
3.2 异步方法 请看:http://blog.csdn.net/lorenluo/article/details/8214609
转载:http://blog.csdn.net/lifetragedy/article/details/7205832