[原创]JAVA基本数据类型的传递方式- -| 回首页 | 2005年索引 | - -[原创]用JAVAMAIL发送邮件的一个简单例子

[原创]基于SOAP的JAVA编写的WEBSERVICE实例

关键词WEBSERVICE    SOAP    JAVA                                          

    --sunfruit

    近来webservice很流行,所以自己也做了一个webservice的server和client调试成功,其中也遇到了一些问题为了让大家在调试的时候少走冤路,把写好的server和client的源代码发布出来给大家做一个参考

    由于用JB发布一个webservice的server很容易,所以就不具体说明发布过程了,而且网上也有很多这样的例子,或者自己摸索着也能发布成功

    在源代码中写了必要的注释便于大家解读

    server的源代码

    package com.service;

public class HelloWorld{

  public String sayHello(){
    return "Hello world!";
  }

  public String echo(String u){
    return "Hello " + u;
  }

  public void setName(String name){
    System.out.println(name);
  }

}

很简单吧,本来就不复杂的,主要是对于接口的设计和接口的实现设计牵扯的业务啦、扩展啦等等比较多,那些才算复杂,就webservice的技术本身来说不复杂的

下面来看click的源代码

package clicktest;

import java.util.*;
import java.net.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;

public class ClickTest {

    public static void main(String[] args) throws Exception {

        //改成你的地址
        URL url = new URL ("http://localhost:8080/WebModule2/services/HelloWorld");


        // 创建调用
        Call call = new Call ();
 
 //设置编码方式,不用修改
        call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
        Response resp = null;

        //调用方法名,因为没有返回值所以只需要这一行
        call.setMethodName("setName");


        //设置该方法的参数,如果没有参数,则不需要设置
        Vector params = new Vector();
        params.addElement(new Parameter("test", String.class, "my name setName", null));
        call.setParams(params);
        call.invoke(url, "");

        //调用方法名
        call.setMethodName("echo");
        params.clear();
        params.addElement(new Parameter("test", String.class, "my name echo", null));
        call.setParams(params);
        //返回值对象
        try {
          resp = call.invoke(url, "");
        }
        catch (SOAPException e) {
          e.printStackTrace();
        }
        // 检查返回值
        if (resp != null && !resp.generatedFault()) {
          Parameter ret = resp.getReturnValue();
          Object value = ret.getValue();

          System.out.println("Answer--> " + value);
        }
        else {
          Fault fault = resp.getFault();
          System.err.println("Generated fault echo: ");
          System.out.println(" Fault Code = " + fault.getFaultCode());
          System.out.println(" Fault String = " + fault.getFaultString());
        }

        //调用方法名
        call.setMethodName("sayHello");
 //由于没有参数所以将Params置为null
        call.setParams(null);
        //返回值对象
        resp = null;
        try {
          resp = call.invoke(url, "");
        }
        catch (SOAPException e) {
          e.printStackTrace();
        }
        // 检查返回值
        if (resp != null && !resp.generatedFault()) {
          Parameter ret = resp.getReturnValue();
          Object value = ret.getValue();

          System.out.println("Answer--> " + value);
        }
        else {
          Fault fault = resp.getFault();
          System.err.println("Generated fault sayHello: ");
          System.out.println(" Fault Code = " + fault.getFaultCode());
          System.out.println(" Fault String = " + fault.getFaultString());
        }
      }
}

感觉有些多是吧,其实也不多的,主要是模拟了接口的三个方法的调用,如果是一个没有返回值得方法调用也就是几行就可以了,是不是感觉清楚了

这个server和client在JBX中测试通过

【作者: sunfruit】【访问统计:】【2005年08月24日 星期三 16:12】【 加入博采】【打印

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=2688484

博客手拉手

回复

- 评论人:tr   2005-11-24 16:18:11   

rty

- 评论人:tr   2005-11-24 16:18:10   

rty

验证码:   
评论内容: