Web Services是自包含的、模块化的应用程序,它可以在网络(通常 为Web)中被描述、发布、查找以及调用.
SOAP和TCP一样是一种协议,
WSDL描述Web服务的公共接口。是为描述Web服务 发布的XML格式。
UDDI:Universal Description, Discovery, and Integration,是一个基于网络的分布式目录,列举各自的信息。在概念上类似于黄页号簿。由此可见:只有WebService是可以调用执行的。
其他的不可以执行。

解决方案 »

  1.   

    举个小例子,那肯定要属"HelloWorld"了. :)做个服务: 在服务端:package com.didoleo.axis.server;/**
     * 
     * @author didoleo
     * @axis.service scope = "Request" urn = "TestService"
     */public class TestService {
    /**
     * @axis.method
     */ public String test(String name) {
    return "Hello, " + name;
    }}
    }
    /////////////////////////////////////
    用wsdl描述上面的服务:我用的是axis,所文件名为server-config.wsdd<?xml version="1.0" encoding="UTF-8"?>
    <deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
     <globalConfiguration>
      <parameter name="adminPassword" value="admin"/>
      <parameter name="enableNamespacePrefixOptimization" value="false"/>
      <parameter name="dotNetSoapEncFix" value="true"/>
      <parameter name="disablePrettyXML" value="true"/>
      <parameter name="attachments.implementation" value="org.apache.axis.attachments.AttachmentsImpl"/>
      <parameter name="sendXsiTypes" value="true"/>
      <parameter name="sendMultiRefs" value="true"/>
      <parameter name="sendXMLDeclaration" value="true"/>
      <requestFlow>
       <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="session"/>
       </handler>
       <handler type="java:org.apache.axis.handlers.JWSHandler">
        <parameter name="scope" value="request"/>
        <parameter name="extension" value=".jwr"/>
       </handler>
      </requestFlow>
     </globalConfiguration>
     <handler name="LocalResponder" type="java:org.apache.axis.transport.local.LocalResponder"/>
     <handler name="URLMapper" type="java:org.apache.axis.handlers.http.URLMapper"/>
     <handler name="Authenticate" type="java:org.apache.axis.handlers.SimpleAuthenticationHandler"/>
     <service name="AdminService" provider="java:MSG">
      <parameter name="allowedMethods" value="AdminService"/>
      <parameter name="enableRemoteAdmin" value="false"/>
      <parameter name="className" value="org.apache.axis.utils.Admin"/>
      <namespace>http://xml.apache.org/axis/wsdd/</namespace>
     </service>
     <service name="Version" provider="java:RPC">
      <parameter name="allowedMethods" value="getVersion"/>
      <parameter name="className" value="org.apache.axis.Version"/>
     </service>
     <!--注意这里 begin-->  <service name="TestService" provider="java:RPC">
      <parameter name="allowedMethods" value="test "/>
      <parameter name="scope" value="Request"/>
      <parameter name="className" value="com.didoleo.axis.server.TestService"/>
     </service>
     <!--注意这里 end-->  <transport name="http">
      <requestFlow>
       <handler type="URLMapper"/>
       <handler type="java:org.apache.axis.handlers.http.HTTPAuthHandler"/>
      </requestFlow>
      <parameter name="qs:list" value="org.apache.axis.transport.http.QSListHandler"/>
      <parameter name="qs:wsdl" value="org.apache.axis.transport.http.QSWSDLHandler"/>
      <parameter name="qs:method" value="org.apache.axis.transport.http.QSMethodHandler"/>
     </transport>
     <transport name="local">
      <responseFlow>
       <handler type="LocalResponder"/>
      </responseFlow>
     </transport>
    </deployment>//////////////////////客户端程序:
    package com.didoleo.axis.client;
    import org.apache.axis.client.Call;
    import org.apache.axis.client.Service;
    import javax.xml.namespace.QName;
    public class TestClient {
    public static void main(String[] args) {
    try {
    String endpoint = "http://localhost:8001/myaxis/services/TestService"; Service service = new Service();
    Call call = (Call) service.createCall(); call.setTargetEndpointAddress(new java.net.URL(endpoint));
    call.setOperationName(new QName("http://didoleo.org/", "test")); String ret = (String) call.invoke(new Object[] { "didoleo!" }); System.out.println("Sent 'Hello!', got '" + ret + "'");
    } catch (Exception e) {
    System.err.println(e.toString());
    } }
    }/////总结
    也是一种远程方法的调用(RPC),但不通于EJB
      

  2.   

    谢谢楼上的
    有这样的hello world就很好了