参考了网络上中资料,自己学习实践了一个Java6 WebService.

首先,建立一个WebService:

 

package garfield;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;


@WebService
public class MyJ6WebService {
        public String SayHello(String strName) {
                return "Hello ,"+strName+"!";
        }

        public static void main(String[] args) {
                //发布WebService,注意如果提示:Exception in thread "main" com.sun.xml.internal.ws.server.ServerRtException: Server Runtime Error: java.net.BindException: Address already in use: bind
                
//则需要修改一下发布端口
                Endpoint.publish("http://localhost:8030/garfield.MyJ6WebService", new MyJ6WebService());
                System.out.println("WebService was published success !");
        }
}

启动Tomcat,然后运行,系统会输出:WebService was published success !,表示WebService已启动。

 

可以在浏览器中输入地址:http://localhost:8030/garfield.MyJ6WebService?wsdl

显示WebService信息:

 

  <?xml version="1.0" encoding="UTF-8" ?> 
<!--  Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. 
  
--> 
<!--  Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.2.4-b01. 
  
--> 
<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://garfield/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://garfield/" name="MyJ6WebServiceService">
<types>
<xsd:schema>
  <xsd:import namespace="http://garfield/" schemaLocation="http://localhost:8030/garfield.MyJ6WebService?xsd=1" /> 
  </xsd:schema>
  </types>
<message name="SayHello">
  <part name="parameters" element="tns:SayHello" /> 
  </message>
<message name="SayHelloResponse">
  <part name="parameters" element="tns:SayHelloResponse" /> 
  </message>
<portType name="MyJ6WebService">
<operation name="SayHello">
  <input wsam:Action="http://garfield/MyJ6WebService/SayHelloRequest" message="tns:SayHello" /> 
  <output wsam:Action="http://garfield/MyJ6WebService/SayHelloResponse" message="tns:SayHelloResponse" /> 
  </operation>
  </portType>
<binding name="MyJ6WebServicePortBinding" type="tns:MyJ6WebService">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" /> 
<operation name="SayHello">
  <soap:operation soapAction="" /> 
<input>
  <soap:body use="literal" /> 
  </input>
<output>
  <soap:body use="literal" /> 
  </output>
  </operation>
  </binding>
<service name="MyJ6WebServiceService">
<port name="MyJ6WebServicePort" binding="tns:MyJ6WebServicePortBinding">
  <soap:address location="http://localhost:8030/garfield.MyJ6WebService" /> 
  </port>
  </service>
  </definitions>

 

 

在WebService启动的状态下,在命令行中输入:

 

E:\Temp>wsimport -p garfield.garfieldj6wsclient -keep http://localhost:8030/garf
ield.MyJ6WebService?wsdl
parsing WSDL...


generating code...


compiling code...


E:\Temp>

注意,一定要对应你发布的WebService信息!

 

然后系统会自动生成相关的接口文件,如下:

 

新建Java工程,将输出文件引入,然后建立测试类:

 

package xxh;

import garfield.garfieldj6wsclient.*;

public class WebClient {
        /**  
         * 
@param args  
         
*/  
        public static void main(String[] args) {   
             //创建一个客户端服务对象 
            MyJ6WebService myJ6WS = new MyJ6WebServiceService().getMyJ6WebServicePort(); 
            //调用服务方法,并得到方法返回值 
            String strTest = myJ6WS.sayHello("Garfield"); 
            //打印服务的返回值 
            System.out.println(strTest); 
        }   
}

 

 在WebService运行情况下,运行客户端测试程序,输出:

Hello ,Garfield!

 

 

posted on 2012-09-14 09:35  garfieldtom  阅读(2245)  评论(1编辑  收藏  举报