【webservice】eclipse建立java web服务

                           返回主页

何为webservice

Web service是一个平台独立的,低耦合的,自包含的、
基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)
标准来描述、发布、发现、协调和配置这些应用程序,
用于开发分布式的互操作的应用程序。 

Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、
专门的第三方软件或硬件, 就可相互交换数据或集成。
依据Web Service规范实施的应用之间, 无论它们所使用的语言、 
平台或内部协议是什么, 都可以相互交换数据。Web Service是自描述、 
自包含的可用网络模块, 可以执行具体的业务功能。Web Service也很容易部署, 
因为它们基于一些常规的产业标准以及已有的一些技术,
诸如标准通用标记语言下的子集XML、HTTP。Web Service减少了应用接口的花费。
Web Service为整个企业甚至多个组织之间的业务流程的集成提供了一个通用机制。
    --引用自【百度百科webservice词条】

webservice能够实现跨端访问,移动端后台常用webservice提供信息传输接口。

本文就是要用java语言实现一个简单的webservice程序并发布

原料

  1. eclipse-for-j2ee

  2. chrome

建立一个java工程添加以下代码文件

接口TimeServer

package ch01.ts;

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.jws.soap.SOAPBinding.Style;

@WebService
@SOAPBinding(style = Style.RPC)
public interface TimeServer {
    @WebMethod
    String getTimeAsString();
    @WebMethod
    long getTimeAsElapsed();
}

此处使用了两个注解@WebService和@WebMethod

类TimeServerImpl实现接口TimeServer

    package ch01.ts;

    import java.util.Date;

    import javax.jws.WebService;


    @WebService(endpointInterface = "ch01.ts.TimeServer")
    public class TimeServerImpl implements TimeServer {


    @Override
    public String getTimeAsString() {
        return new Date().toString();
    }

    @Override
    public long getTimeAsElapsed() {
        return new Date().getTime();
    }

}

类TimerServerPublisher发布该web服务

package ch01.ts;

import javax.xml.ws.Endpoint;

public class TimerServerPublisher {

    public static void main(String[] args) {
        Endpoint.publish("http://127.0.0.1:9876/ts", new TimeServerImpl());
    }
}

编译该工程,并在浏览器输入如下url:"http://127.0.0.1:9876/ts?wsdl"

运行效果

This XML file does not appear to have any style information associated with it. The document tree is shown below.
<!--
 Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. 
-->
<!--
 Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. 
-->
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ts.ch01/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ts.ch01/" name="TimeServerImplService">
<types/>
<message name="getTimeAsString"/>
<message name="getTimeAsStringResponse">
<part name="return" type="xsd:string"/>
</message>
<message name="getTimeAsElapsed"/>
<message name="getTimeAsElapsedResponse">
<part name="return" type="xsd:long"/>
</message>
<portType name="TimeServer">
<operation name="getTimeAsString">
<input wsam:Action="http://ts.ch01/TimeServer/getTimeAsStringRequest" message="tns:getTimeAsString"/>
<output wsam:Action="http://ts.ch01/TimeServer/getTimeAsStringResponse" message="tns:getTimeAsStringResponse"/>
</operation>
<operation name="getTimeAsElapsed">
<input wsam:Action="http://ts.ch01/TimeServer/getTimeAsElapsedRequest" message="tns:getTimeAsElapsed"/>
<output wsam:Action="http://ts.ch01/TimeServer/getTimeAsElapsedResponse" message="tns:getTimeAsElapsedResponse"/>
</operation>
</portType>
<binding name="TimeServerImplPortBinding" type="tns:TimeServer">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc"/>
<operation name="getTimeAsString">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal" namespace="http://ts.ch01/"/>
</input>
<output>
<soap:body use="literal" namespace="http://ts.ch01/"/>
</output>
</operation>
<operation name="getTimeAsElapsed">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal" namespace="http://ts.ch01/"/>
</input>
<output>
<soap:body use="literal" namespace="http://ts.ch01/"/>
</output>
</operation>
</binding>
<service name="TimeServerImplService">
<port name="TimeServerImplPort" binding="tns:TimeServerImplPortBinding">
<soap:address location="http://127.0.0.1:9876/ts"/>
</port>
</service>
</definitions>

总结

看到上述xml文档表示webservice运行成功。该文档即为发布程序自动生成的契约文档WSDL文档。