近来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中测试通过
分享到:
相关推荐
JAVA WEBSERVICE 建的实例工程,给PB调用, 因VS建的 WEBSERVICE PB很难调用,所以用JAVA的axis做了个小实例 共大家参考
在编写此代码时,ApiKit 1.6.1 仍然与 3.6.2 EE 不兼容Mule 模块 APIKit 1.6.1构建、安装和运行您可以使用“mvn clean install”并将应用程序安装在独立的 mule 实例 3.6.1 EE 中或者,您可以在 Anypoint Studio ...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 68 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
2、编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad。 62 3、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证...
12、静态变量和实例变量的区别? ............................................................................. 12 13、是否可以从一个 static 方法内部发出对非 static 方法的调用? ...........................
体验.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创建应用程序之二...
答:Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. [Page] 26.根据委托(delegate)的知识,请完成以下用户控件中代码片段的填写: namespace test { public ...
3.2.1 声明和实例化..............................................59 3.2.2 对象引用..............................................59 3.2.3 对象废除..............................................59 3.2.4 ...