WebService_HelloWorld
“HelloWorld” 出现
从来没有接触过WebService,今天下班没什么事情,看看了WebService的HelloWorld。
下载了必须的jar包之后,就开始了我的HelloWorld之旅。
编写SOAP的服务类:
public class HelloService {
public String sayHello(String username){
return "Hello:"+username;
}
}
创建\删除SOAP服务发布的描述文件:
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="urn:helloservice" provider="java:RPC">
<parameter names="className" value="com.tan.web.service.HelloService"/>
<parameter name="allowedMethods" value="sayHello"/>
</service>
</deployment>
发布SOAP服务:
1、基于命令行:
要想成功运行命令行,需要在classpath中加入mail.jar,activation.jar,xerces.jar。
命令行:java org.apache.axis.client.AdminClient deploy.wsdd
2、基于JWS(java Web Service)
把之前的HelloService.java改名为HelloService.jws,然后把该文件加入项目根目录下即可。
创建和运行SOAP服务客户程序
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class HelloClient {
public static void main(String[] args) {
try {
String name="Guest";
if(args.length!=0) name=args[0];
String endpoint="http://127.0.0.1:9099/axis/services/helloservice";
Service service=new Service();
Call call=(Call)service.createCall();
call.setTargetEndpointAddress(new java.net.URL(endpoint));
call.setOperationName(new QName("urn:helloservice","sayHello"));
String ret=(String) call.invoke(new Object[]{name});
System.out.println(ret);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
打印结果应该是:hello:Guest
因为SOAP是建立在HTTP协议之上,所以可以在浏览器上访问SOAP服务。
如:http://127.0.0.1:9099/axis/HelloService.jws?method=sayHello¶meter=world
也会显示:hello:worlds