`
qkf15274
  • 浏览: 9237 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

基于SOAP的JAVA编写的WEBSERVICE实例

阅读更多
  近来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中测试通过

分享到:
评论

相关推荐

    PB调用JAVA WEBSERVICE实例

    JAVA WEBSERVICE 建的实例工程,给PB调用, 因VS建的 WEBSERVICE PB很难调用,所以用JAVA的axis做了个小实例 共大家参考

    webservice-consumer-raml

    在编写此代码时,ApiKit 1.6.1 仍然与 3.6.2 EE 不兼容Mule 模块 APIKit 1.6.1构建、安装和运行您可以使用“mvn clean install”并将应用程序安装在独立的 mule 实例 3.6.1 EE 中或者,您可以在 Anypoint Studio ...

    Java面试宝典-经典

    2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...

    Java面试宝典2010版

    2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...

    java面试题大全(2012版)

    2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...

    最新Java面试宝典pdf版

    2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...

    Java面试笔试资料大全

    2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...

    java面试宝典2012

    2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 68 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...

    JAVA面试宝典2010

    2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...

    Java面试宝典2012新版

    2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...

    Java面试宝典2012版

    2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...

    Java 面试宝典

    12、静态变量和实例变量的区别? ............................................................................. 12 13、是否可以从一个 static 方法内部发出对非 static 方法的调用? ...........................

    asp.net知识库

    体验.net 2.0 的优雅(1) -- 异步WebService调用 ASP.NET 2.0页面框架的几点新功能 ASP.NET 2.0 中收集的小功能点 asp.net2.0中的webpart使用小记 2.0问题、错误解决办法 ASP.NET 2.0使用Web Part创建应用程序之二...

    net学习笔记及其他代码应用

    答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: namespace test { public ...

    JavaScript高级教程

    3.2.1 声明和实例化..............................................59 3.2.2 对象引用..............................................59 3.2.3 对象废除..............................................59 3.2.4 ...

Global site tag (gtag.js) - Google Analytics