自定义WebService和客户端调用《二》

本文详细介绍了自定义创建WebService服务及客户端调用的各种方式,包括JDK创建服务、注解开发、Ajax调用、HttpURLConnection调用等。同时提到了MyEclipse的WebService工具,用于测试和获取SOAP请求代码,以及使用TCP/IP监听工具监控调用状态。文章还强调了对WebService的理解,如WebMethods的重要性以及不同调用方式的适用场景。
摘要由CSDN通过智能技术生成

问题?自定义WebService和客户端调用《二》,客户端调用有几种方式


一、JDK创建WebService服务和使用

Oracle前身sun公司,早就意识到WebService的强大,和它的未来前景,所以在JDK中早就封装了这样的创建WebService服务。

查看DJK-API文档:

               


1.新建Java或web工程,建一个类(这个类作为服务端):

<span style="font-family:Microsoft YaHei;font-size:18px;"><span style="font-family:Microsoft YaHei;font-size:18px;">package com.itcast.ws;

import javax.jws.WebService;
import javax.xml.ws.Endpoint;

@WebService  //表示这个类,代表的是启动服务,ServiceName名字可以改,默认不写的话,名字为类名加Service
public class HelloService {
	
	public String sayhello(String name){//能够访问的借口方法,必须是public方法
		System.out.println("Hello:  "+name);
		return "Hello:  "+name;
	}
	
	public String sayhello1(){
		return "成功调用第二个服务器方法";
	}
	
	 public static void main(String[] args) {
		 /*
		  * 调用静态的方法Endpoint.publish创建一个服务
		  * 1.address:URI,指定要使用的地址和传输/协议,也就是服务地址
		  * 2.implementor:实现者,也就是服务端
		  */
		 <pre name="code" class="java"><span style="white-space:pre">		</span>//使用自建端口号之前,cmd中使用netstat -a 检查一下端口是否被占用</span></span>
Endpoint.publish("http://localhost:9090/hello", new HelloService());System.out.println("启动服务:new HelloService");}}

 

/**如果改成private方法的话就会出现以下错误,我们做这个webservcie服务就是为了,*公布数据给别人用的,给成私有的,就达不到目的了,自然就会出错。Static、finally也不行

*Exception in thread "main"com.sun.xml.internal.ws.model.RuntimeModelerException: The web *service definedby the class com.itcast.ws.HelloService does not contain any valid WebMethods.

*/

运行:

如果出现错:Exception in thread "main" com.sun.xml.internal.ws.model.RuntimeModelerException:解决办法将jdk升级到1.7版本,MyEclispe的preference下java install(一般情况下,MyEclispe用的而是自身带的JDK,而不是安装得JDK,需要配置一下)

否则就运行成功:

       

或者网页调用:http://localhost:9090/hello或http://localhost:9090/hello?wsdl  看看wsdl服务描述文档

       

2.新建客户端,并且调用该服务,在调用过程中,该服务必须一直开启

用wsimport -s . http://localhost:9090/hello?wsdl来生成本地代码,在上一文章中已经说过怎么做了。

把生成的文件夹拷入到客户端项目src下,并且新建一个测试调用类:

<span style="font-family:Microsoft YaHei;font-size:18px;"><span style="font-family:Microsoft YaHei;font-size:18px;">package com.itcast.test;

import org.junit.Test;

import com.itcast.ws.HelloService;
import com.itcast.ws.HelloServiceService;

public class test1 {

	@Test
	public void testService(){
		HelloServiceService helloServiceService = new HelloServiceService();
		HelloService service = helloServiceService.getHelloServicePort();
		String name = service.sayhello("李*****&#
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值