JSP学习笔记(一百零七):使用metro开发webservice

一、下载metro
metro貌似已经整合在jdk1.6里面了,没有试过。我用的是jdk1.5,需要下载支持包,下载地址:https://metro.dev.java.net/2.0-ea/metro-2_0-ea.jar
metro官方地址:https://metro.dev.java.net/

二、布置metro到项目中去
Windows平台下,jar包可以执行,自动解压到metro路径下,我经过尝试,至少需要metro/lib目录下的:
webservices-api.jar
webservices-rt.jar
webservices-extra.jar
这三个包才能使用metro提供webservice服务

三、使用metro编写服务端代码
编写服务类Storck.java
package com.mysite.webservice;

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

@WebService(targetNamespace 
= "http://tempuri.org/")   
@SOAPBinding(style 
= SOAPBinding.Style.RPC)   
public class Storck {
    
    @WebMethod
    
public String Hello(String str)
    {
        
return "Hello," + str;
    }
}

开启服务类:
……
javax.xml.ws.Endpoint.publish(
"http://127.0.0.1:8080/proj1/HelloService"new Storck());
……


运行开启服务的类,就可以使用http://127.0.0.1:8080/proj1/HelloService?wsdl 看到效果了


四、使用metro编写客户端代码
metro\bin目录下提供的有工具wsimport,可以根据wsdl生成相关类
我是这么用的:

wsimport -s c:\hello-client -p com.mysite.client -extension http://127.0.0.1:8080/proj1/HelloService?wsdl

-s c:\hello-client 生成客户端相关类的路径
-p com.mysite.client 生成客户端相关类的包名
-extension 貌似是忽略警告之类的
http://127.0.0.1:8080/proj1/HelloService?wsdl 提供服务的地址

用这个工具会生成两个文件到c:\hello-client:
Storck.java
StorckService.java

然后就是最终的调用了:

        StorckService service = new StorckService();
        Storck storck 
= service.getStorckPort();
        System.out.println(storck.hello(
"Tom"));

运行时,控制台打印结果为:Hello,Tom

五、使用metro编写代码调用.Net WebService
在.net环境编写WebService服务代码WebService1.asmx:

using System.Web.Services;
using System.Web.Services.Protocols;

namespace App3
{
    
/// <summary>
    
/// WebService1 的摘要说明
    
/// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo 
= WsiProfiles.BasicProfile1_1)]
    [SoapDocumentService(RoutingStyle 
= SoapServiceRoutingStyle.RequestElement)]
    [ToolboxItem(
false)]
    
public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        
public string HelloWorld(String str)
        {
            
return "Hi," + str;
        }
    }
}
服务地址为:http://127.0.0.1/app1/WebService1.asmx?wsdl

用wsimport生成相关代码,上面有讲,这里略过,不过不同的是,生成了6个文件:
HelloWorld.java
HelloWorldResponse.java
ObjectFactory.java
package-info.java
WebService1.java
WebService1Soap.java

最终调用代码:

        WebService1 service = new WebService1();   
        WebService1Soap soap 
= service.getWebService1Soap(); 
        System.out.println(soap.helloWorld(
"Lily"));

 运行时,控制台打印结果为:Hi,Lily

posted @ 2009-08-15 19:54  魔豆  阅读(3039)  评论(1编辑  收藏  举报