此文甚好,转载自:http://blog.163.com/java_player@126/blog/static/127930738200981555021925/

某些地方笔者已经加以改进。

使用工具:Myeclipse6.0 +Tomcat5.5:

其实webservice就是实现一中机制:客户端可以远程调用服务器的方法:这样可以减少客户端处理的繁琐问题:

下面是一个完整实例的实现过程:

1.创建一个动态的web项目名称就叫做WebServicDemo:

2.在项目中的Java Resource src目录下创建一个新的包名称就叫做:webServiceDemo01
3.创建好工程和类之后就可以开始写类了:
首先写的是服务器端的代码新建Server类:在创建好的包webServiceDemo01中新建一个类:
代码如下:
package webServiceDemo01;
//服务器
public class Server {
    //服务器中有方法
public String fanHui(){
   String str = null;
   str = "这是从服务器返回的信息";
   return str;
}
public String say(String name){
   String str = null;
   str = "你好-->"+name+"-->欢迎学习WebService";
   return str;
}
}
为了说明我们在服务器中写两个不同的方法,一个有参数一个没有参数的方法(注
意方法名称的问题,方法名一定要小写啊!)
4.写客户段的代码:新建Client类 :客户端的代码中每一步都有详细的解释:一定要弄明白每一步的作用是什么还有怎么执行的!
package webServiceDemo01;
import javax.xml.namespace.QName;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
//客户端(完成在客户端访问服务器的方法)
public class Client {
     public static void main(String args[]){
    try {
         //声明一个访问终端
   String endpoint = "http://localhost:8080/WebServiceDemo/services/Server";  //此处地址是生成的wsdl文件夹下面wsdl文件中的  <wsdlsoap:address location="http://localhost:8080/***"/>
     Service service = new Service();//创建服务
     Call call = (Call) service.createCall();//创建呼叫服务器的Call实例
     //设置访问的地址(即终端的地址)
     call.setTargetEndpointAddress(new java.net.URL(endpoint));
     //将服务器所在的包写在new QName()的参数中;
     call.setOperationName(new QName("http://webServiceDemo01/",
       "say"));//并将所要访问的方法名称当作第二个参数传到服务器;表示是调用服务器的say方法

//此处地址是生成的wsdl文件夹下面wsdl文件中的 <schema elementFormDefault="qualified" targetNamespace="http://**"
     //由Call的实例调用invoke方法(参数用对象数组的形式传到服务器) 得到服务器返回的信息
     String returns1 = (String) call.invoke(new Object[] { "小宋" });
     System.err.println("这是调用服务器有参数的方法返回的信息:-->"+returns1);
    
     //调用没有参数的方法返回的信息
     call.setOperationName(new QName("http://webServiceDemo01/",
       "fanHui"));//调用返回方法
     String returns2 = (String) call.invoke(new Object[]{});
     System.out.println("这是调用服务器无参数的方法返回的信息:-->"+returns2);
    } catch (Exception e) {
     System.err.println(e.toString());
    }
}

到此为止整个项目的目录结果如下图所示:

5.写完了客户端就创建好了一个webservice实例了:下面是在MyEclips的发布方法:

在发布之前一定要确保你的环境变量一定要设置的准确(不能有其他多于的设置)!

发布的过程:

选定Service类右击新建web service:

一定要在Service Implementation中添加服务器类

还有要在Publish the Web service复选框中打钩 Overwrite files without waring的复选框中打钩!然后点击下一步。

再点击下一步。

点击Strart server按钮启动服务!

若出现如下图所示的异常的话是因为你在外部已经启动了Tomcat服务器了,端口正在使用之中,只要是启动任务管理器关闭了外面的Tomcat就可以了!

出现下图所示就表示是服务器启动成功了!:

点击next下一步:

点击Finish完成即可;这样直接运行Client程序就可以了:

运行的结果是:

这是调用服务器有参数的方法返回的信息:-->你好-->小宋-->欢迎学习WebService

这是调用服务器无参数的方法返回的信息:-->这是从服务器返回的信息

完成了,呵呵,这样一个WebService的实例就弄完了!

Webservice发布的更多相关文章

  1. axis2 webservice 发布、调用与项目集成

    发布 1.在apache官网下载axis2包,下载Binary Distribution和War Distribution两个zip. 2.将war放入tomcat webapps下部署.并输入 ht ...

  2. WebService发布到IIS

    发布WebService 第一步:选择项目右键发布 第二步:选择文件系统.目标位置(即,发布后文件保存位置) 单击发布 将WebService发布至IIS 第一步:打开IIS 右键添加网站--填写网站 ...

  3. 基于PI的Webservice发布实例

    [转自http://blog.csdn.net/yin_chuan_lang/article/details/6706816] 最近的项目中,接口较多,而Webservice技术是主要实现方式之一.下 ...

  4. 面向接口的webservice发布方式

    import javax.jws.WebService; /**面向接口的webservice发布方式 */ @WebService public interface JobService { pub ...

  5. WebService发布服务例子

    import javax.jws.WebMethod; import javax.jws.WebService; @WebService public interface WebServiceI { ...

  6. eclipse安装Axis2插件和简单的webservice发布

    2019独角兽企业重金招聘Python工程师标准>>> Axis2与CXF是现在很主流的WebService开发框架(java6也已经支持了),项目上还都是基本上用前两种做开发,今天 ...

  7. java调用C# webService发布的接口

    java调用C# webService发布的接口 java调用C# webService方式有很多种我这里只介绍一种 首先需要引入axis的jar包 axis的maven坐标如下 <depend ...

  8. 使用VS2010创建WebService 发布、测试

    http://blog.sina.com.cn/s/blog_45eaa01a0102vopl.html 1 打开VS2010,菜单    文件->新建->项目 2 选择[ASP.net ...

  9. webservice发布服务:CXF及客户端调用

    2.CXF:(与spring整合) CXF相对来说操作没有AXIS繁琐 1.导入spring的jar包和cxf的jar包 2.在spring的核心配置文件中配置发布的接口类 <?xml vers ...

  10. webService发布和调用--Axis2

    一.工具 1.下载 Axis2以及eclipse的Axis2插件.http://axis.apache.org/axis2/java/core/download.cgi 2.axis2-1.7.1-w ...

随机推荐

  1. 【整理总结】目录 - 代码沉淀 - 常见Nuget包介绍及使用

    为了团队项目或者后期代码维护方便,现在项目已经极致推荐使用Nuget管理第三方类库了,所以下面列举的类库,都会在Nuget上获取到.目录排序不分先后,如果查找困难,请使用 ctrl + F 重要提示: ...

  2. PHP数组键值使用单引号和双引号和无符号的区别

    PHP数组键值使用单引号和双引号和无符号的区别 方法/步骤 1 第一种:$array['key']此单引号键值模式可以直接被解析为一个数组即$array 第二种:$array["key&qu ...

  3. 我对商业模式O2O的理解

    过这个文章不是来吐槽项目经理多麽困难的,而且对商业模式的一点心得和讨论. 在这个公司,从项目建设上讲,老实说贡献不是很大,做项目经理团队带的不好,当然小创业公司本身资源真的非常有限,自己也特别累,有老 ...

  4. C#遍历XmlDocument对象所有节点名称、类型、属性(Attribute)

    C#遍历XmlDocument对象所有节点名称.类型.属性(Attribute) 源码下载 代码 static void Main(string[] args) { System.Xml.XmlDoc ...

  5. socket和udp简介

    socket简介 1.本地的进程间通信(IPC)有很多种方式,例如 队列 同步(互斥锁.条件变量等) 以上通信方式都是在一台机器上不同进程之间的通信方式,那么问题来了 网络中进程之间如何通信? 2. ...

  6. 83. Remove Duplicates from Sorted List + 82. Remove Duplicates from Sorted List II

    ▶ 删除单链表中的重复元素. ▶ 83. 把重复元素删得只剩一个,如 1 → 1 → 2 → 3 → 3 → 3 → 4 → 5 → 5 变成 1 → 2 → 3 → 4 → 5.注意要点:第一个元素 ...

  7. VisualStudio2012轻松把JSON数据转换到POCO的代码(转)

    VisualStudio2012轻松把JSON数据转换到POCO的代码 在Visual Studio 2012中轻松把JSON数据转换到POCO的代码,首先你需要安装Web Essentials 20 ...

  8. 可视化库-Matplotlib-Pandas与sklearn结合(第四天)

    1. 计算每一种的比例的百分比 import pandas as pd from matplotlib.ticker import FuncFormatter np.random.seed(0) df ...

  9. Git----远程仓库01

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了 可是用过集中式版本控制系统SVN的童鞋们会站出来说,这些功能在SVN里早就有了,没看出Git ...

  10. 【328】Python 控制鼠标/键盘+图片识别 综合应用

    本文是基于 [267]实现跨网络传数据 的基础上的,由于在弹出 putty 之后,需要手动输入命令(pass.sh.get.sh)来实现数据的传递,另外就是处理完之后需要手动关闭 putty,本文解决 ...