WebService 学习之路(一):了解并使用webService
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
最新文章
- Prince2七大原则(4)
- Spark Streaming、HDFS结合Spark JDBC External DataSouces处理案例
- Java统计数据库表中记录数
- 分页控件-ASP.NET(AspNetPager)
- 判断对象是不是Vector
- Unicode和字符集小结
- SetUID、SetGID中的大小写Ss和Sticky bit中的大小写Tt
- java浮点类型计算
- [编织消息框架][JAVA核心技术]动态代理应用5-javassist
- 【Android Studio安装部署系列】二十三、Android studio查看Gradle版本号
- ST表
- docker之导出、导入、数据搬迁
- hive使用动态分区时如果动态分区的字段存在空值的问题
- 0007-20180403-python-自动化基础学习000--while-if 循环实操
- Android的进阶学习(六)--理解View事件分发
- 《大道至简》第一章读后感Java伪代码
- 通过实例来理解paxos算法
- nRF2401A/nRF24L01/nRF24L01+无线模块最常见问题汇集(转)
- 关于iReport-5.6.0之前版本 “无法启动”或者“一开就关闭”的 某些原因
- Drozer快速使用指南
热门文章
- python实现最简单的计算器功能源码
- 无法连接虚拟设别 ide1:0.
- Linux Shell 通配符、元字符、转义符【转帖】
- NFSv4的引用,迁移和备份(用户手册 v0.2)
- [LintCode] Maximum Subarray 最大子数组
- Python之路第一课Day9--随堂笔记之一(堡垒机实例以及数据库操作)未完待续....
- JSP内置对象及常用方法
- MySQL主从复制技术的简单实现
- awk 留底
- 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信