webService主要用于向其他系统提供接口以便调用,系统间可能开发语言等完全不同,根据约定的接口规范,调用者传递相关参数进行接口调用,服务方根据传入的条件进行业务处理并进行结果返回。

webSercive现在有很多框架支持,并且可以和主流框架如Spring进行集成,更易于操作。推荐使用Apache CXF. 不过今天学习暂时不设计CXF,后期将会以具体实例展示SpringMVC和CXF、restful的集成及使用。 Springmvc集成CXF请看教程二 http://www.cnblogs.com/xiaochangwei/p/5399507.html

现在采用最传统的方式来进行简单的webService创建及演示。

① 打开eclipse创建一个java工程并新建class,代码如下:

package webService001;

import javax.jws.WebService;
import javax.xml.ws.Endpoint; @WebService
public class WebService001 { public void testWebService(String name) {
System.out.println("Test sucessfully, you input name is :" + name);
} public static void main(String[] args) {
Endpoint.publish("http://www.xiaochangwei.com:8888/webService/test", new WebService001());
System.out.println("webService pulish completed!");
}
}

需要注意的是class上有@Webservice注解.   右键 run as javaApplication,待控制台打出public complete,请保持此程序一直运行,不要关闭

打开浏览器,输入publish中的地址,并在末尾加上?wsdl,如:http://www.xiaochangwei.com:8888/webService/test?wsdl   打开后如下即表示发布成功

② 写客户端代码,来进行调用

打开eclise,新建项目,选择web service client,在新打开的窗口中service defination中输入 http://www.xiaochangwei.com:8888/webService/test?wsdl,finish后会看见项目中有5个java文件,

XXXXX.java

XXXXXPortBindingStub.java

XXXXXProxy.java

XXXXXService.java

XXXXXServiceLocator.java

这些都是根据wsdl定义文件给我们生成的本地java文件,这样我们可以像操作本地的java类一样进行远程服务的调用

新建ServiceTest.java类进行测试,代码如下:

package webService001;

public class ServiceTest {

    public static void main(String[] args) throws Exception {
WebService001 test = new WebService001ServiceLocator().getWebService001Port();
test.testWebService("xiaochangwei");
} }

执行后,由于我们是直接从控制台打出消息,所以需要我们到发布service的eclipse控制台查看打印的信息,当然可以修改为返回String等任意对象,在客户端显示

上述就是webservice的入门实例,有兴趣的朋友请持续关注,近期将发布SpringMVC中集成CXF发布webservice及相关配置、使用等

即下面的配置方式,不需要再生成如此多的文件

<jaxws:endpoint id="helloWorld" implementor="#hello" address="/HelloWorld" />

Springmvc集成CXF请看教程二 http://www.cnblogs.com/xiaochangwei/p/5399507.html

最新文章

  1. Prince2七大原则(4)
  2. Spark Streaming、HDFS结合Spark JDBC External DataSouces处理案例
  3. Java统计数据库表中记录数
  4. 分页控件-ASP.NET(AspNetPager)
  5. 判断对象是不是Vector
  6. Unicode和字符集小结
  7. SetUID、SetGID中的大小写Ss和Sticky bit中的大小写Tt
  8. java浮点类型计算
  9. [编织消息框架][JAVA核心技术]动态代理应用5-javassist
  10. 【Android Studio安装部署系列】二十三、Android studio查看Gradle版本号
  11. ST表
  12. docker之导出、导入、数据搬迁
  13. hive使用动态分区时如果动态分区的字段存在空值的问题
  14. 0007-20180403-python-自动化基础学习000--while-if 循环实操
  15. Android的进阶学习(六)--理解View事件分发
  16. 《大道至简》第一章读后感Java伪代码
  17. 通过实例来理解paxos算法
  18. nRF2401A/nRF24L01/nRF24L01+无线模块最常见问题汇集(转)
  19. 关于iReport-5.6.0之前版本 “无法启动”或者“一开就关闭”的 某些原因
  20. Drozer快速使用指南

热门文章

  1. python实现最简单的计算器功能源码
  2. 无法连接虚拟设别 ide1:0.
  3. Linux Shell 通配符、元字符、转义符【转帖】
  4. NFSv4的引用,迁移和备份(用户手册 v0.2)
  5. [LintCode] Maximum Subarray 最大子数组
  6. Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....
  7. JSP内置对象及常用方法
  8. MySQL主从复制技术的简单实现
  9. awk 留底
  10. 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信